chore: frontend build
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled

This commit is contained in:
2025-10-27 15:27:26 +05:45
parent 48e089d3c8
commit eba9e5f182
145 changed files with 10451 additions and 2 deletions

4
.gitignore vendored
View File

@@ -1,7 +1,7 @@
/.phpunit.cache /.phpunit.cache
/bootstrap/ssr # /bootstrap/ssr
/node_modules /node_modules
/public/build # /public/build
/public/hot /public/hot
/public/storage /public/storage
/resources/js/actions /resources/js/actions

View File

@@ -0,0 +1,124 @@
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
import { u as useTranslations, L as Layout, n as ns, o as oko } from "./layout-toNsB0Jp.js";
import { Head } from "@inertiajs/react";
import { Lightbulb, Target, HeartHandshake } from "lucide-react";
import "./index-CY6fYws-.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "./input-DfkIsvXR.js";
import "./label-DrpjkvJN.js";
import "@radix-ui/react-label";
import "@icons-pack/react-simple-icons";
import "./select-CsRyyQUa.js";
import "@radix-ui/react-select";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
const kaleen = "/build/assets/kaleen-D3tdUBUw.jpg";
const ourStory = "/build/assets/sci%20trad%208-DiNu6GWn.jpg";
function About() {
const { t } = useTranslations();
return /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx(Head, { title: "About Us", children: /* @__PURE__ */ jsx(
"meta",
{
name: "description",
content: "Experience the finest hand-knotted carpets in Nepal with Soorya Carpet. Each piece is crafted by skilled artisans to deliver unmatched quality, luxury, and timeless design."
}
) }),
/* @__PURE__ */ jsxs(Layout, { children: [
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-32 px-12 py-12 max-sm:px-8", children: [
/* @__PURE__ */ jsxs("div", { className: "grid h-1/2 grid-cols-2 gap-20 overflow-clip max-md:grid-cols-1 max-md:gap-12", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("h1", { className: "font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl", children: t("pages.about.sections.first.title") }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 text-sm max-sm:text-base", children: [
/* @__PURE__ */ jsx("p", { children: t("pages.about.sections.first.desc.first") }),
/* @__PURE__ */ jsx("p", { children: t(
"pages.about.sections.first.desc.second"
) }),
/* @__PURE__ */ jsx("p", { children: t("pages.about.sections.first.desc.third") })
] })
] }),
/* @__PURE__ */ jsx(
"img",
{
src: ourStory,
alt: "Our Story",
className: "aspect-[5/3] h-full w-full rounded-xl object-cover object-center"
}
)
] }),
" ",
/* @__PURE__ */ jsxs("div", { className: "grid h-1/2 grid-cols-2 gap-20 overflow-clip max-md:grid-cols-1 max-md:gap-12", children: [
/* @__PURE__ */ jsx(
"img",
{
src: kaleen,
alt: "Kaleen Story",
className: "aspect-[5/3] h-full w-full rounded-xl object-cover object-center"
}
),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("h2", { className: "font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl", children: t("pages.about.sections.second.title") }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 text-sm max-sm:text-base", children: [
/* @__PURE__ */ jsx("p", { children: t(
"pages.about.sections.second.desc.first"
) }),
/* @__PURE__ */ jsx("p", { children: t(
"pages.about.sections.second.desc.second"
) }),
/* @__PURE__ */ jsx("p", { children: t(
"pages.about.sections.second.desc.third"
) })
] })
] })
] })
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-8 px-12 py-12 max-md:px-6", children: [
/* @__PURE__ */ jsx("h3", { className: "text-center font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl", children: t("pages.about.sections.third.title") }),
/* @__PURE__ */ jsxs("div", { className: "flex gap-8 max-md:flex-col", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 rounded-xl bg-accent px-8 py-8 text-center max-sm:px-4", children: [
/* @__PURE__ */ jsx(Lightbulb, { size: 48, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "font-serif text-3xl font-semibold", children: t(
"pages.about.sections.third.cards.first.title"
) }),
/* @__PURE__ */ jsx("p", { className: "text-justify text-lg tracking-tight", children: t(
"pages.about.sections.third.cards.first.desc"
) })
] }),
" ",
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 rounded-xl bg-accent px-8 py-8 text-center", children: [
/* @__PURE__ */ jsx(Target, { size: 48, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "font-serif text-3xl font-semibold", children: t(
"pages.about.sections.third.cards.second.title"
) }),
/* @__PURE__ */ jsx("p", { className: "text-justify text-lg tracking-tight", children: t(
"pages.about.sections.third.cards.second.desc"
) })
] }),
" ",
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 rounded-xl bg-accent px-8 py-8 text-center", children: [
/* @__PURE__ */ jsx(HeartHandshake, { size: 48, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "font-serif text-3xl font-semibold", children: t(
"pages.about.sections.third.cards.third.title"
) }),
/* @__PURE__ */ jsx("p", { className: "text-justify text-lg tracking-tight", children: t(
"pages.about.sections.third.cards.third.desc"
) })
] })
] })
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-8 px-12 py-12", children: [
/* @__PURE__ */ jsx("h4", { className: "text-center font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl", children: t("pages.about.sections.fourth.title") }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-8", children: [
/* @__PURE__ */ jsx("img", { src: ns, alt: "NS Standard" }),
/* @__PURE__ */ jsx("img", { src: oko, alt: "OKO Standard" })
] })
] })
] })
] });
}
export {
About as default
};

View File

@@ -0,0 +1,97 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AppLayout, d as dashboard } from "./app-layout-BFyUFda2.js";
import { useForm, Head } from "@inertiajs/react";
import FilePondPluginImageExifOrientation from "filepond-plugin-image-exif-orientation";
import FilePondPluginImagePreview from "filepond-plugin-image-preview";
/* empty css */
import { registerPlugin } from "react-filepond";
import { toast } from "sonner";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "react";
import "lucide-react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
registerPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview);
function FaqAdd() {
const { data, setData, post, processing, errors, wasSuccessful } = useForm({
question: "",
answer: ""
});
const handleSubmit = (e) => {
e.preventDefault();
post(dashboard.faq.addFaq().url, {
forceFormData: true
});
if (wasSuccessful) {
toast.success("Product added successfully");
}
};
return /* @__PURE__ */ jsxs(AppLayout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Add FAQ Questions" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsx("h1", { className: "text-lg font-semibold tracking-tight", children: "Add FAQ Questions" }),
/* @__PURE__ */ jsxs(
"form",
{
onSubmit: handleSubmit,
method: "POST",
encType: "multipart/formdata",
className: "flex flex-col items-start gap-4",
children: [
/* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "question", children: "Question" }),
/* @__PURE__ */ jsx(
Input,
{
type: "text",
id: "question",
value: data.question,
onChange: (e) => setData("question", e.target.value),
className: "rounded border p-2"
}
),
errors.question && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.question })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "answer", children: "Answer" }),
/* @__PURE__ */ jsx(
Input,
{
type: "text",
id: "answer",
value: data.answer,
onChange: (e) => setData("answer", e.target.value),
className: "rounded border p-2"
}
),
errors.answer && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.answer })
] }),
/* @__PURE__ */ jsx(
Button,
{
type: "submit",
disabled: processing,
className: "cursor-pointer",
children: processing ? "submitting..." : "Submit"
}
)
]
}
)
] })
] });
}
export {
FaqAdd as default
};

View File

@@ -0,0 +1,135 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, e as SelectGroup, d as SelectItem } from "./select-CsRyyQUa.js";
import { A as AppLayout, d as dashboard } from "./app-layout-BFyUFda2.js";
import { useForm, Head } from "@inertiajs/react";
import FilePondPluginImageExifOrientation from "filepond-plugin-image-exif-orientation";
import FilePondPluginImagePreview from "filepond-plugin-image-preview";
/* empty css */
import { useState, useEffect } from "react";
import { FilePond, registerPlugin } from "react-filepond";
import { toast } from "sonner";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "@radix-ui/react-select";
import "lucide-react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
registerPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview);
function CarouselAdd() {
const [file, setFile] = useState(null);
const { data, setData, post, processing, errors, wasSuccessful } = useForm({
title: "",
type: "traditional",
image_url: null
});
useEffect(() => {
if (file) {
setData("image_url", file.file);
}
}, [file, setData]);
const handleSubmit = (e) => {
e.preventDefault();
post(dashboard.product.add().url, {
forceFormData: true
});
if (wasSuccessful) {
toast.success("Product added successfully");
}
};
return /* @__PURE__ */ jsxs(AppLayout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Add Product Image" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsx("h1", { className: "text-lg font-semibold tracking-tight", children: "Add Product Image" }),
/* @__PURE__ */ jsxs(
"form",
{
onSubmit: handleSubmit,
method: "POST",
encType: "multipart/formdata",
children: [
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
/* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-4", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "title", children: "Title" }),
/* @__PURE__ */ jsx(
Input,
{
type: "text",
id: "title",
value: data.title,
onChange: (e) => setData("title", e.target.value),
className: "rounded border p-2"
}
),
errors.title && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.title })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-4", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "title", children: "Type" }),
/* @__PURE__ */ jsxs(
Select,
{
value: data.type,
onValueChange: (e) => {
console.log(e);
setData("type", e);
},
children: [
/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select a type" }) }),
/* @__PURE__ */ jsx(SelectContent, { children: /* @__PURE__ */ jsxs(SelectGroup, { children: [
/* @__PURE__ */ jsx(SelectItem, { value: "traditional", children: "Traditional" }),
/* @__PURE__ */ jsx(SelectItem, { value: "modern", children: "Modern" }),
/* @__PURE__ */ jsx(SelectItem, { value: "bespoke", children: "Bespoke" }),
/* @__PURE__ */ jsx(SelectItem, { value: "abstract", children: "Abstract" }),
/* @__PURE__ */ jsx(SelectItem, { value: "art", children: "Art in carpet" })
] }) })
]
}
)
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
/* @__PURE__ */ jsx(Label, { children: "Image" }),
/* @__PURE__ */ jsx(
FilePond,
{
files: file ? [file] : [],
onupdatefiles: (fileItems) => {
setFile(fileItems[0] || null);
},
allowMultiple: false,
maxFiles: 1,
name: "image_url",
instantUpload: false,
storeAsFile: true,
labelIdle: 'Drag & Drop your image or <span class="filepond--label-action">Browse</span>'
}
),
errors.image_url && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.image_url })
] }),
/* @__PURE__ */ jsx(
Button,
{
type: "submit",
disabled: processing,
className: "cursor-pointer",
children: processing ? "Uploading..." : "Submit"
}
)
]
}
)
] })
] });
}
export {
CarouselAdd as default
};

View File

@@ -0,0 +1,107 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AppLayout } from "./app-layout-BFyUFda2.js";
import { useForm, Head } from "@inertiajs/react";
import FilePondPluginImageExifOrientation from "filepond-plugin-image-exif-orientation";
import FilePondPluginImagePreview from "filepond-plugin-image-preview";
/* empty css */
import { useState, useEffect } from "react";
import { FilePond, registerPlugin } from "react-filepond";
import { toast } from "sonner";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "lucide-react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
registerPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview);
function CarouselAdd() {
const [file, setFile] = useState(null);
const { data, setData, post, processing, errors, wasSuccessful } = useForm({
alt: "",
image_url: null
});
useEffect(() => {
if (file) {
setData("image_url", file.file);
}
}, [file, setData]);
const handleSubmit = (e) => {
e.preventDefault();
post("/carousel", {
forceFormData: true
});
if (wasSuccessful) {
toast.success("Slider image successfully uploaded");
}
};
return /* @__PURE__ */ jsxs(AppLayout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Add Carousel" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsx("h1", { className: "text-lg font-semibold tracking-tight", children: "Add Slider Image" }),
/* @__PURE__ */ jsxs(
"form",
{
onSubmit: handleSubmit,
method: "POST",
encType: "multipart/formdata",
children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "title", children: "Title" }),
/* @__PURE__ */ jsx(
Input,
{
type: "text",
id: "title",
value: data.alt,
onChange: (e) => setData("alt", e.target.value),
className: "rounded border p-2"
}
),
errors.alt && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.alt })
] }),
/* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
/* @__PURE__ */ jsx(Label, { children: "Image" }),
/* @__PURE__ */ jsx(
FilePond,
{
files: file ? [file] : [],
onupdatefiles: (fileItems) => {
setFile(fileItems[0] || null);
},
allowMultiple: false,
maxFiles: 1,
name: "image_url",
instantUpload: false,
storeAsFile: true,
labelIdle: 'Drag & Drop your image or <span class="filepond--label-action">Browse</span>'
}
),
errors.image_url && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.image_url })
] }),
/* @__PURE__ */ jsx(
Button,
{
type: "submit",
disabled: processing,
className: "cursor-pointer",
children: processing ? "Uploading..." : "Submit"
}
)
]
}
)
] })
] });
}
export {
CarouselAdd as default
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
import { jsx } from "react/jsx-runtime";
function AppLogoIcon(props) {
return /* @__PURE__ */ jsx("svg", { ...props, viewBox: "0 0 40 42", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx(
"path",
{
fillRule: "evenodd",
clipRule: "evenodd",
d: "M17.2 5.63325L8.6 0.855469L0 5.63325V32.1434L16.2 41.1434L32.4 32.1434V23.699L40 19.4767V9.85547L31.4 5.07769L22.8 9.85547V18.2999L17.2 21.411V5.63325ZM38 18.2999L32.4 21.411V15.2545L38 12.1434V18.2999ZM36.9409 10.4439L31.4 13.5221L25.8591 10.4439L31.4 7.36561L36.9409 10.4439ZM24.8 18.2999V12.1434L30.4 15.2545V21.411L24.8 18.2999ZM23.8 20.0323L29.3409 23.1105L16.2 30.411L10.6591 27.3328L23.8 20.0323ZM7.6 27.9212L15.2 32.1434V38.2999L2 30.9666V7.92116L7.6 11.0323V27.9212ZM8.6 9.29991L3.05913 6.22165L8.6 3.14339L14.1409 6.22165L8.6 9.29991ZM30.4 24.8101L17.2 32.1434V38.2999L30.4 30.9666V24.8101ZM9.6 11.0323L15.2 7.92117V22.5221L9.6 25.6333V11.0323Z"
}
) });
}
export {
AppLogoIcon as A
};

View File

@@ -0,0 +1,129 @@
import { jsx, jsxs } from "react/jsx-runtime";
import { Head } from "@inertiajs/react";
import { useState, useCallback, useEffect } from "react";
import { c as cn } from "./index-CY6fYws-.js";
import { Sun, Moon, Monitor } from "lucide-react";
import { e as edit, S as SettingsLayout, H as HeadingSmall } from "./layout-BQI5MpcL.js";
import { A as AppLayout } from "./app-layout-BFyUFda2.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-separator";
import "./index-BuzAnds1.js";
import "./index-BRhO3_4E.js";
import "./index-BHwjGIZD.js";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
const prefersDark = () => {
if (typeof window === "undefined") {
return false;
}
return window.matchMedia("(prefers-color-scheme: dark)").matches;
};
const setCookie = (name, value, days = 365) => {
if (typeof document === "undefined") {
return;
}
const maxAge = days * 24 * 60 * 60;
document.cookie = `${name}=${value};path=/;max-age=${maxAge};SameSite=Lax`;
};
const applyTheme = (appearance) => {
const isDark = appearance === "dark" || appearance === "system" && prefersDark();
document.documentElement.classList.toggle("dark", isDark);
document.documentElement.style.colorScheme = isDark ? "dark" : "light";
};
const mediaQuery = () => {
if (typeof window === "undefined") {
return null;
}
return window.matchMedia("(prefers-color-scheme: dark)");
};
const handleSystemThemeChange = () => {
const currentAppearance = localStorage.getItem("appearance");
applyTheme(currentAppearance || "system");
};
function useAppearance() {
const [appearance, setAppearance] = useState("system");
const updateAppearance = useCallback((mode) => {
setAppearance(mode);
localStorage.setItem("appearance", mode);
setCookie("appearance", mode);
applyTheme(mode);
}, []);
useEffect(() => {
const savedAppearance = localStorage.getItem(
"appearance"
);
updateAppearance(savedAppearance || "system");
return () => mediaQuery()?.removeEventListener(
"change",
handleSystemThemeChange
);
}, [updateAppearance]);
return { appearance, updateAppearance };
}
function AppearanceToggleTab({
className = "",
...props
}) {
const { appearance, updateAppearance } = useAppearance();
const tabs = [
{ value: "light", icon: Sun, label: "Light" },
{ value: "dark", icon: Moon, label: "Dark" },
{ value: "system", icon: Monitor, label: "System" }
];
return /* @__PURE__ */ jsx(
"div",
{
className: cn(
"inline-flex gap-1 rounded-lg bg-neutral-100 p-1 dark:bg-neutral-800",
className
),
...props,
children: tabs.map(({ value, icon: Icon, label }) => /* @__PURE__ */ jsxs(
"button",
{
onClick: () => updateAppearance(value),
className: cn(
"flex items-center rounded-md px-3.5 py-1.5 transition-colors",
appearance === value ? "bg-white shadow-xs dark:bg-neutral-700 dark:text-neutral-100" : "text-neutral-500 hover:bg-neutral-200/60 hover:text-black dark:text-neutral-400 dark:hover:bg-neutral-700/60"
),
children: [
/* @__PURE__ */ jsx(Icon, { className: "-ml-1 h-4 w-4" }),
/* @__PURE__ */ jsx("span", { className: "ml-1.5 text-sm", children: label })
]
},
value
))
}
);
}
const breadcrumbs = [
{
title: "Appearance settings",
href: edit().url
}
];
function Appearance() {
return /* @__PURE__ */ jsxs(AppLayout, { breadcrumbs, children: [
/* @__PURE__ */ jsx(Head, { title: "Appearance settings" }),
/* @__PURE__ */ jsx(SettingsLayout, { children: /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsx(
HeadingSmall,
{
title: "Appearance settings",
description: "Update your account's appearance settings"
}
),
/* @__PURE__ */ jsx(AppearanceToggleTab, {})
] }) })
] });
}
export {
Appearance as default
};

View File

@@ -0,0 +1,186 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { T as Tabs, a as TabsList, b as TabsTrigger, c as TabsContent } from "./tabs-C0o9riYx.js";
import { L as Layout } from "./layout-toNsB0Jp.js";
import { Head } from "@inertiajs/react";
import { Shirt, Palette, Hand, Flower, Package } from "lucide-react";
import "@radix-ui/react-tabs";
import "./index-CY6fYws-.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "./input-DfkIsvXR.js";
import "./label-DrpjkvJN.js";
import "@radix-ui/react-label";
import "@icons-pack/react-simple-icons";
import "./select-CsRyyQUa.js";
import "@radix-ui/react-select";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
const skill = "/build/assets/silk%20balls-DWY7AS8B.jpg";
const skillYarn = "/build/assets/silk%20yarn-CqpV2kWc.jpg";
const woolBall = "/build/assets/wool%20balls-DG1FtOmh.jpg";
const woolYarn = "/build/assets/wool%20yarn-BKbNSfod.jpg";
const artOfWeaving = "/build/assets/IMG_2719-CBS9fSAo.jpg";
function Art() {
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Layout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Art of Weaving" }),
/* @__PURE__ */ jsxs("section", { children: [
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
/* @__PURE__ */ jsx("div", { className: "absolute h-full w-full bg-white/60" }),
/* @__PURE__ */ jsx(
"img",
{
src: artOfWeaving,
alt: "Art of Weaving",
className: "aspect-[16/4] object-cover object-center"
}
),
/* @__PURE__ */ jsx("h1", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 font-serif text-7xl font-medium tracking-tight", children: "The Art of Weaving" })
] }),
/* @__PURE__ */ jsxs("div", { className: "mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-12", children: [
/* @__PURE__ */ jsx("h2", { className: "text-center font-serif text-4xl font-medium", children: "Our Craft: From Fiber to Fine Rug" }),
/* @__PURE__ */ jsxs(
Tabs,
{
defaultValue: "wool",
className: "grid grid-cols-4 gap-8",
children: [
/* @__PURE__ */ jsxs(TabsList, { className: "!h-auto w-full flex-col", children: [
/* @__PURE__ */ jsxs(
TabsTrigger,
{
value: "wool",
className: "flex w-full gap-2 py-4",
children: [
/* @__PURE__ */ jsx(Shirt, { size: 24 }),
" Wool Selection & Sorting"
]
}
),
/* @__PURE__ */ jsxs(
TabsTrigger,
{
value: "dyeing",
className: "w-full py-4",
children: [
/* @__PURE__ */ jsx(Palette, {}),
" Artisan Dyeing"
]
}
),
/* @__PURE__ */ jsxs(
TabsTrigger,
{
value: "hand",
className: "w-full py-4",
children: [
/* @__PURE__ */ jsx(Hand, {}),
" Hand Weaving"
]
}
),
/* @__PURE__ */ jsxs(
TabsTrigger,
{
value: "finish",
className: "w-full py-4",
children: [
/* @__PURE__ */ jsx(Flower, {}),
" Finishing & Washing"
]
}
),
/* @__PURE__ */ jsxs(
TabsTrigger,
{
value: "quality",
className: "w-full py-4",
children: [
/* @__PURE__ */ jsx(Package, {}),
" Quality Control & Packing"
]
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "col-span-3", children: [
/* @__PURE__ */ jsx(TabsContent, { value: "wool", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-2xl font-medium", children: "Wool Selection & Sorting" }),
/* @__PURE__ */ jsx("p", { children: "Careful selection of the finest wool fibers, meticulously sorted by quality and texture to ensure only the best make it into our carpets." })
] }) }),
/* @__PURE__ */ jsx(TabsContent, { value: "dyeing", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-2xl font-medium", children: "Artisan Dyeing" }),
/* @__PURE__ */ jsx("p", { children: "Fibers are dyed using traditional methods and natural pigments, achieving rich, vibrant, and enduring colors that tell a story." })
] }) }),
/* @__PURE__ */ jsx(TabsContent, { value: "hand", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-2xl font-medium", children: "Hand Weaving" }),
/* @__PURE__ */ jsx("p", { children: "Skilled artisans hand-weave each knot with precision and passion, creating intricate patterns and unparalleled durability." })
] }) }),
/* @__PURE__ */ jsx(TabsContent, { value: "finish", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-2xl font-medium", children: "Finishing & Washing" }),
/* @__PURE__ */ jsx("p", { children: "Carpets undergo specialized washing, shearing, and meticulous hand-finishing to enhance their luster and softness." })
] }) }),
/* @__PURE__ */ jsx(TabsContent, { value: "quality", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-2xl font-medium", children: "Quality Control & Packing" }),
/* @__PURE__ */ jsx("p", { children: "Each rug passes rigorous quality checks before being carefully packed for its journey to your home, ensuring perfection." })
] }) })
] })
]
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-8", children: [
/* @__PURE__ */ jsx("h3", { className: "text-center font-serif text-4xl font-medium", children: "Exquisite Materials" }),
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-6", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
/* @__PURE__ */ jsx(
"img",
{
src: skill,
alt: "Skill ball",
className: "aspect-square rounded-lg object-cover object-center"
}
),
/* @__PURE__ */ jsx("p", { className: "font-serif text-lg font-medium", children: "Skill Ball" })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
/* @__PURE__ */ jsx(
"img",
{
src: skillYarn,
alt: "Skill yarn",
className: "aspect-square rounded-lg object-cover object-center"
}
),
/* @__PURE__ */ jsx("p", { className: "font-serif text-lg font-medium", children: "Skill Yarn" })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
/* @__PURE__ */ jsx(
"img",
{
src: woolBall,
alt: "wool ball",
className: "aspect-square rounded-lg object-cover object-center"
}
),
/* @__PURE__ */ jsx("p", { className: "font-serif text-lg font-medium", children: "Wool Ball" })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
/* @__PURE__ */ jsx(
"img",
{
src: woolYarn,
alt: "wool yarn",
className: "aspect-square rounded-lg object-cover object-center"
}
),
/* @__PURE__ */ jsx("p", { className: "font-serif text-lg font-medium", children: "Wool Yarn" })
] })
] })
] })
] })
] }) });
}
export {
Art as default
};

View File

@@ -0,0 +1,41 @@
import { jsx, jsxs } from "react/jsx-runtime";
import { A as AppLogoIcon } from "./app-logo-icon-kpljnLMz.js";
import { h as home } from "./index-CY6fYws-.js";
import { Link } from "@inertiajs/react";
function AuthSimpleLayout({
children,
title,
description
}) {
return /* @__PURE__ */ jsx("div", { className: "flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10", children: /* @__PURE__ */ jsx("div", { className: "w-full max-w-sm", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4", children: [
/* @__PURE__ */ jsxs(
Link,
{
href: home(),
className: "flex flex-col items-center gap-2 font-medium",
children: [
/* @__PURE__ */ jsx("div", { className: "mb-1 flex h-9 w-9 items-center justify-center rounded-md", children: /* @__PURE__ */ jsx(AppLogoIcon, { className: "size-9 fill-current text-[var(--foreground)] dark:text-white" }) }),
/* @__PURE__ */ jsx("span", { className: "sr-only", children: title })
]
}
),
/* @__PURE__ */ jsxs("div", { className: "space-y-2 text-center", children: [
/* @__PURE__ */ jsx("h1", { className: "text-xl font-medium", children: title }),
/* @__PURE__ */ jsx("p", { className: "text-center text-sm text-muted-foreground", children: description })
] })
] }),
children
] }) }) });
}
function AuthLayout({
children,
title,
description,
...props
}) {
return /* @__PURE__ */ jsx(AuthSimpleLayout, { title, description, ...props, children });
}
export {
AuthLayout as A
};

View File

@@ -0,0 +1,110 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { u as useTranslations, L as Layout } from "./layout-toNsB0Jp.js";
import { Head } from "@inertiajs/react";
import { ClipboardList, Palette, Paintbrush, Truck } from "lucide-react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "./input-DfkIsvXR.js";
import "./label-DrpjkvJN.js";
import "@radix-ui/react-label";
import "@icons-pack/react-simple-icons";
import "./select-CsRyyQUa.js";
import "@radix-ui/react-select";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
const bespokeHeader = "/build/assets/color%20swatches-Dl8_1uRD.jpg";
function Bespoke({
product
}) {
console.log(product);
const { t } = useTranslations();
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Layout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Bespoke Design" }),
/* @__PURE__ */ jsx("section", { className: "", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
/* @__PURE__ */ jsx("div", { className: "absolute h-full w-full bg-white/30" }),
/* @__PURE__ */ jsx(
"img",
{
src: bespokeHeader,
alt: "Bespoke Design",
className: "aspect-[16/4] object-cover object-center max-sm:aspect-[16/9]"
}
),
/* @__PURE__ */ jsxs("div", { className: "absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 flex-col gap-2", children: [
/* @__PURE__ */ jsx("h1", { className: "text-center font-serif text-5xl font-medium tracking-tight max-md:text-4xl max-sm:text-2xl", children: t("pages.bespoke.sections.banner.title") }),
/* @__PURE__ */ jsx("p", { className: "text-center text-lg text-gray-800 max-sm:text-sm", children: t("pages.bespoke.sections.banner.subTitle") })
] })
] }) }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-18 max-sm:px-8", children: [
/* @__PURE__ */ jsx("h2", { className: "text-center font-serif text-4xl font-medium max-md:text-2xl", children: t("pages.bespoke.sections.first.title") }),
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-4 max-md:grid-cols-2 max-sm:grid-cols-1", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-2", children: [
/* @__PURE__ */ jsx(ClipboardList, { size: 40, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "text-center font-serif text-xl font-medium", children: t(
"pages.bespoke.sections.first.card.first.title"
) }),
/* @__PURE__ */ jsx("p", { className: "px-4 text-center text-sm", children: t(
"pages.bespoke.sections.first.card.first.desc"
) })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-2", children: [
/* @__PURE__ */ jsx(Palette, { size: 40, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "text-center font-serif text-xl font-medium", children: t(
"pages.bespoke.sections.first.card.second.title"
) }),
/* @__PURE__ */ jsx("p", { className: "px-4 text-center text-sm", children: t(
"pages.bespoke.sections.first.card.second.desc"
) })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-2", children: [
/* @__PURE__ */ jsx(Paintbrush, { size: 40, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "text-center font-serif text-xl font-medium", children: t(
"pages.bespoke.sections.first.card.third.title"
) }),
/* @__PURE__ */ jsx("p", { className: "px-4 text-center text-sm", children: t(
"pages.bespoke.sections.first.card.third.desc"
) })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-2", children: [
/* @__PURE__ */ jsx(Truck, { size: 40, color: "#5A1A1A" }),
/* @__PURE__ */ jsx("p", { className: "text-center font-serif text-xl font-medium", children: t(
"pages.bespoke.sections.first.card.fourth.title"
) }),
/* @__PURE__ */ jsx("p", { className: "px-4 text-center text-sm", children: t(
"pages.bespoke.sections.first.card.fourth.desc"
) })
] })
] })
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-18 max-sm:px-8", children: [
/* @__PURE__ */ jsx("h3", { className: "text-center font-serif text-4xl font-medium max-md:text-2xl", children: "Bespoke Product" }),
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-4", children: product.map((item) => /* @__PURE__ */ jsx(
"img",
{
src: item.image_url,
alt: item.title,
className: "aspect-[4/5] rounded-lg object-cover object-center"
}
)) })
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col items-center gap-8 px-12 py-18 max-sm:px-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
/* @__PURE__ */ jsx("h4", { className: "text-center font-serif text-4xl font-medium max-md:text-2xl", children: t("pages.bespoke.sections.second.title") }),
/* @__PURE__ */ jsxs("p", { className: "text-center max-md:text-sm", children: [
t("pages.bespoke.sections.second.desc"),
" ",
/* @__PURE__ */ jsx("br", {}),
" ",
t("pages.bespoke.sections.second.desc2")
] })
] }),
/* @__PURE__ */ jsx(Button, { className: "cursor-pointer", children: t("pages.bespoke.sections.second.button") })
] })
] }) });
}
export {
Bespoke as default
};

View File

@@ -0,0 +1,71 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from "./table-DB-AS5w6.js";
import { A as AppLayout, c as carousel } from "./app-layout-BFyUFda2.js";
import { Head, Link } from "@inertiajs/react";
import { Pencil, Trash2 } from "lucide-react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
function Carousel({
carousel: carousel$1
}) {
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
AppLayout,
{
breadcrumbs: [
{ title: "Carousel", href: carousel.index().url }
],
children: [
/* @__PURE__ */ jsx(Head, { title: "Carousel" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
/* @__PURE__ */ jsx("h1", { className: "text-xl font-semibold tracking-tight", children: "Carousel" }),
/* @__PURE__ */ jsx(Link, { href: carousel.add(), children: /* @__PURE__ */ jsx(Button, { className: "cursor-pointer", children: "Add Image" }) })
] }),
/* @__PURE__ */ jsxs(Table, { children: [
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableHead, { className: "w-[80px]", children: "S.N." }),
/* @__PURE__ */ jsx(TableHead, { className: "w-48", children: "Image" }),
/* @__PURE__ */ jsx(TableHead, { children: "Title" }),
/* @__PURE__ */ jsx(TableHead, { className: "text-right", children: "Action" })
] }) }),
/* @__PURE__ */ jsx(TableBody, { children: carousel$1.map((item, index) => /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableCell, { className: "font-medium", children: index + 1 }),
/* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(
"img",
{
src: item.image_url,
alt: item.alt,
className: "aspect-video w-24 rounded-md object-cover object-center"
}
) }),
/* @__PURE__ */ jsx(TableCell, { children: item.alt }),
/* @__PURE__ */ jsx(TableCell, { className: "text-right", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2", children: [
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(Pencil, { size: 18 }) }),
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(
Trash2,
{
size: 18,
color: "#D2042D"
}
) })
] }) })
] }, index)) })
] })
] })
]
}
) });
}
export {
Carousel as default
};

View File

@@ -0,0 +1,59 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { B as Button } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import { s as store } from "./index-BRhO3_4E.js";
import { Head, Form } from "@inertiajs/react";
import { LoaderCircle } from "lucide-react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "./app-logo-icon-kpljnLMz.js";
function ConfirmPassword() {
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: "Confirm your password",
description: "This is a secure area of the application. Please confirm your password before continuing.",
children: [
/* @__PURE__ */ jsx(Head, { title: "Confirm password" }),
/* @__PURE__ */ jsx(Form, { ...store.form(), resetOnSuccess: ["password"], children: ({ processing, errors }) => /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password",
type: "password",
name: "password",
placeholder: "Password",
autoComplete: "current-password",
autoFocus: true
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.password })
] }),
/* @__PURE__ */ jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxs(
Button,
{
className: "w-full",
disabled: processing,
"data-test": "confirm-password-button",
children: [
processing && /* @__PURE__ */ jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" }),
"Confirm password"
]
}
) })
] }) })
]
}
);
}
export {
ConfirmPassword as default
};

View File

@@ -0,0 +1,230 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem } from "./select-CsRyyQUa.js";
import { T as Textarea } from "./textarea-CcuSk8nN.js";
import { u as useTranslations, L as Layout } from "./layout-toNsB0Jp.js";
import { Head, Form } from "@inertiajs/react";
import { MapPin, Phone, Mail } from "lucide-react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "@radix-ui/react-select";
import "@icons-pack/react-simple-icons";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
function Contact() {
const { t } = useTranslations();
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Layout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Contact Us" }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-12 max-md:px-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
/* @__PURE__ */ jsx("h1", { className: "text-center font-serif text-5xl font-medium tracking-tight max-md:text-3xl", children: t("pages.contact.sections.first.title") }),
/* @__PURE__ */ jsxs("p", { className: "text-center text-sm", children: [
t("pages.contact.sections.first.subTitle"),
" ",
/* @__PURE__ */ jsx("br", {}),
" ",
t("pages.contact.sections.first.subTitle2")
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-8", children: [
/* @__PURE__ */ jsx("h2", { className: "text-center font-serif text-3xl font-medium tracking-tight", children: t("pages.contact.sections.second.title") }),
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-center gap-24 max-md:flex-col max-md:gap-12", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-xl font-medium tracking-tight", children: t(
"pages.contact.sections.second.soorya.title"
) }),
/* @__PURE__ */ jsx("p", { className: "text-sm text-gray-500", children: t(
"pages.contact.sections.second.soorya.subTitle"
) })
] }),
/* @__PURE__ */ jsxs("ul", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
/* @__PURE__ */ jsx(MapPin, { size: 16 }),
" ",
t(
"pages.contact.sections.second.soorya.address"
)
] }),
" ",
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
/* @__PURE__ */ jsx(Phone, { size: 16 }),
" ",
t(
"pages.contact.sections.second.soorya.phone"
)
] }),
" ",
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
/* @__PURE__ */ jsx(Mail, { size: 16 }),
" ",
t(
"pages.contact.sections.second.soorya.email"
)
] })
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("p", { className: "font-serif text-xl font-medium tracking-tight", children: t(
"pages.contact.sections.second.kaleen.title"
) }),
/* @__PURE__ */ jsx("p", { className: "text-sm text-gray-500", children: t(
"pages.contact.sections.second.kaleen.subTitle"
) })
] }),
/* @__PURE__ */ jsxs("ul", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
/* @__PURE__ */ jsx(MapPin, { size: 16 }),
" ",
t(
"pages.contact.sections.second.kaleen.address"
)
] }),
" ",
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
/* @__PURE__ */ jsx(Phone, { size: 16 }),
" ",
t(
"pages.contact.sections.second.kaleen.phone"
)
] })
] }),
/* @__PURE__ */ jsx(
"a",
{
href: "https://maps.app.goo.gl/666dbJEfsVvjJ3fu9",
target: "_blank",
className: "cursor-pointer",
children: /* @__PURE__ */ jsx(
Button,
{
className: "w-full cursor-pointer border border-primary text-primary ring-primary",
variant: "outline",
children: t(
"pages.contact.sections.second.kaleen.button"
)
}
)
}
)
] })
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "mx-auto flex w-full max-w-3xl flex-col gap-8 py-12", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("h3", { className: "font-serif text-3xl font-medium", children: t("pages.contact.sections.third.title") }),
/* @__PURE__ */ jsx("p", { className: "text-sm text-gray-500", children: t("pages.contact.sections.third.subTitle") })
] }),
/* @__PURE__ */ jsxs(Form, { action: "/", className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "name", children: t(
"pages.contact.sections.third.form.name.label"
) }),
/* @__PURE__ */ jsx(
Input,
{
placeholder: t(
"pages.contact.sections.third.form.name.input"
),
id: "name",
name: "name"
}
)
] }),
/* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: t(
"pages.contact.sections.third.form.email.label"
) }),
/* @__PURE__ */ jsx(
Input,
{
placeholder: t(
"pages.contact.sections.third.form.email.input"
),
id: "email",
name: "email"
}
)
] }),
" ",
/* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: t(
"pages.contact.sections.third.form.inquiry.label"
) }),
/* @__PURE__ */ jsxs(Select, { children: [
/* @__PURE__ */ jsx(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx(
SelectValue,
{
placeholder: t(
"pages.contact.sections.third.form.inquiry.input"
)
}
) }),
/* @__PURE__ */ jsxs(SelectContent, { children: [
/* @__PURE__ */ jsx(SelectItem, { value: "problem", children: "Problem in product" }),
/* @__PURE__ */ jsx(SelectItem, { value: "contact", children: "Contacting" })
] })
] })
] }),
/* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "message", children: t(
"pages.contact.sections.third.form.message.label"
) }),
/* @__PURE__ */ jsx(
Textarea,
{
id: "message",
placeholder: t(
"pages.contact.sections.third.form.message.input"
)
}
)
] }),
/* @__PURE__ */ jsx(Button, { type: "submit", className: "my-4", children: t("pages.contact.sections.third.form.button") })
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
/* @__PURE__ */ jsx("h4", { className: "text-center font-serif text-3xl font-medium tracking-tight", children: t("pages.contact.sections.fourth.title") }),
/* @__PURE__ */ jsxs("p", { className: "text-center text-sm text-gray-500", children: [
t("pages.contact.sections.fourth.desc"),
" ",
/* @__PURE__ */ jsx("br", {}),
" ",
t("pages.contact.sections.fourth.desc2")
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
/* @__PURE__ */ jsx("a", { href: "tel:9802341880", children: /* @__PURE__ */ jsxs(Button, { className: "cursor-pointer", children: [
/* @__PURE__ */ jsx(Phone, {}),
" ",
t("pages.contact.sections.fourth.callBtn")
] }) }),
/* @__PURE__ */ jsx("a", { href: "mailto:info@soory.com", children: /* @__PURE__ */ jsxs(
Button,
{
variant: "outline",
className: "cursor-pointer border border-primary text-primary ring-primary",
children: [
/* @__PURE__ */ jsx(Mail, {}),
" ",
t(
"pages.contact.sections.fourth.emailBtn"
)
]
}
) })
] })
] })
] })
] }) });
}
export {
Contact as default
};

View File

@@ -0,0 +1,45 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { useId } from "react";
import { A as AppLayout, a as index } from "./app-layout-BFyUFda2.js";
import { Head } from "@inertiajs/react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "lucide-react";
import "./index-CY6fYws-.js";
import "clsx";
import "tailwind-merge";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
function PlaceholderPattern({ className }) {
const patternId = useId();
return /* @__PURE__ */ jsxs("svg", { className, fill: "none", children: [
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("pattern", { id: patternId, x: "0", y: "0", width: "10", height: "10", patternUnits: "userSpaceOnUse", children: /* @__PURE__ */ jsx("path", { d: "M-3 13 15-5M-5 5l18-18M-1 21 17 3" }) }) }),
/* @__PURE__ */ jsx("rect", { stroke: "none", fill: `url(#${patternId})`, width: "100%", height: "100%" })
] });
}
const breadcrumbs = [
{
title: "Dashboard",
href: index().url
}
];
function Dashboard() {
return /* @__PURE__ */ jsxs(AppLayout, { breadcrumbs, children: [
/* @__PURE__ */ jsx(Head, { title: "Dashboard" }),
/* @__PURE__ */ jsxs("div", { className: "flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4", children: [
/* @__PURE__ */ jsxs("div", { className: "grid auto-rows-min gap-4 md:grid-cols-3", children: [
/* @__PURE__ */ jsx("div", { className: "relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border", children: /* @__PURE__ */ jsx(PlaceholderPattern, { className: "absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20" }) }),
/* @__PURE__ */ jsx("div", { className: "relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border", children: /* @__PURE__ */ jsx(PlaceholderPattern, { className: "absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20" }) }),
/* @__PURE__ */ jsx("div", { className: "relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border", children: /* @__PURE__ */ jsx(PlaceholderPattern, { className: "absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20" }) })
] }),
/* @__PURE__ */ jsx("div", { className: "relative min-h-[100vh] flex-1 overflow-hidden rounded-xl border border-sidebar-border/70 md:min-h-min dark:border-sidebar-border", children: /* @__PURE__ */ jsx(PlaceholderPattern, { className: "absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20" }) })
] })
] });
}
export {
Dashboard as default
};

View File

@@ -0,0 +1,126 @@
import { jsx, jsxs } from "react/jsx-runtime";
import * as SheetPrimitive from "@radix-ui/react-dialog";
import { XIcon } from "lucide-react";
import { c as cn } from "./index-CY6fYws-.js";
function Dialog({
...props
}) {
return /* @__PURE__ */ jsx(SheetPrimitive.Root, { "data-slot": "dialog", ...props });
}
function DialogTrigger({
...props
}) {
return /* @__PURE__ */ jsx(SheetPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
}
function DialogPortal({
...props
}) {
return /* @__PURE__ */ jsx(SheetPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
}
function DialogClose({
...props
}) {
return /* @__PURE__ */ jsx(SheetPrimitive.Close, { "data-slot": "dialog-close", ...props });
}
function DialogOverlay({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SheetPrimitive.Overlay,
{
"data-slot": "dialog-overlay",
className: cn(
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
className
),
...props
}
);
}
function DialogContent({
className,
children,
...props
}) {
return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
/* @__PURE__ */ jsx(DialogOverlay, {}),
/* @__PURE__ */ jsxs(
SheetPrimitive.Content,
{
"data-slot": "dialog-content",
className: cn(
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
className
),
...props,
children: [
children,
/* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [
/* @__PURE__ */ jsx(XIcon, {}),
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
] })
]
}
)
] });
}
function DialogHeader({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "dialog-header",
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
...props
}
);
}
function DialogFooter({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "dialog-footer",
className: cn(
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
className
),
...props
}
);
}
function DialogTitle({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SheetPrimitive.Title,
{
"data-slot": "dialog-title",
className: cn("text-lg leading-none font-semibold", className),
...props
}
);
}
function DialogDescription({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SheetPrimitive.Description,
{
"data-slot": "dialog-description",
className: cn("text-muted-foreground text-sm", className),
...props
}
);
}
export {
Dialog as D,
DialogTrigger as a,
DialogContent as b,
DialogTitle as c,
DialogDescription as d,
DialogFooter as e,
DialogClose as f,
DialogHeader as g
};

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,153 @@
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
import * as AccordionPrimitive from "@radix-ui/react-accordion";
import { ChevronDownIcon } from "lucide-react";
import { c as cn, d as contact, B as Button } from "./index-CY6fYws-.js";
import { L as Layout } from "./layout-toNsB0Jp.js";
import { Head, Link } from "@inertiajs/react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "./input-DfkIsvXR.js";
import "./label-DrpjkvJN.js";
import "@radix-ui/react-label";
import "@icons-pack/react-simple-icons";
import "./select-CsRyyQUa.js";
import "@radix-ui/react-select";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
function Accordion({
...props
}) {
return /* @__PURE__ */ jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
}
function AccordionItem({
className,
...props
}) {
return /* @__PURE__ */ jsx(
AccordionPrimitive.Item,
{
"data-slot": "accordion-item",
className: cn("border-b last:border-b-0", className),
...props
}
);
}
function AccordionTrigger({
className,
children,
...props
}) {
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
AccordionPrimitive.Trigger,
{
"data-slot": "accordion-trigger",
className: cn(
"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
className
),
...props,
children: [
children,
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
]
}
) });
}
function AccordionContent({
className,
children,
...props
}) {
return /* @__PURE__ */ jsx(
AccordionPrimitive.Content,
{
"data-slot": "accordion-content",
className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
...props,
children: /* @__PURE__ */ jsx("div", { className: cn("pt-0 pb-4", className), children })
}
);
}
const img1 = "/build/assets/bes%205-BwicfiFA.jpg";
const img4 = "/build/assets/Ree%206-CXyPf4sr.jpg";
const img3 = "/build/assets/Shrek-HrZ6bJMT.jpg";
const img2 = "/build/assets/Swarovsky%20embedded%20wall%20hang-CEzO-m5f.jpg";
function Faq({
faq
}) {
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Layout, { children: [
/* @__PURE__ */ jsx(Head, { title: "FAQs" }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto grid max-w-screen-2xl grid-cols-12 gap-32 px-12 py-8 max-sm:grid-cols-1 max-sm:gap-8 max-sm:px-8", children: [
/* @__PURE__ */ jsxs("div", { className: "col-span-4 flex flex-col items-start gap-4", children: [
/* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx("h1", { className: "font-serif text-4xl font-medium tracking-tight", children: "Frequently Asked Questions" }),
/* @__PURE__ */ jsx("p", { children: "Any question, answered right here" })
] }),
/* @__PURE__ */ jsx(Link, { href: contact(), children: /* @__PURE__ */ jsx(
Button,
{
className: "cursor-pointer border border-primary font-serif ring-primary",
variant: "outline",
children: "Contact Now"
}
) }),
/* @__PURE__ */ jsxs("div", { className: "mt-8 grid grid-cols-2 gap-2 max-sm:mt-2 max-sm:hidden", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx(
"img",
{
src: img1,
alt: "Image 1",
className: "rounded-lg"
}
),
/* @__PURE__ */ jsx(
"img",
{
src: img4,
alt: "Image 4",
className: "rounded-lg"
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-col gap-2", children: [
/* @__PURE__ */ jsx(
"img",
{
src: img2,
alt: "Image 2",
className: "rounded-lg"
}
),
/* @__PURE__ */ jsx(
"img",
{
src: img3,
alt: "Image 3",
className: "rounded-lg"
}
)
] })
] })
] }),
/* @__PURE__ */ jsx("div", { className: "col-span-8 w-full", children: /* @__PURE__ */ jsx(
Accordion,
{
type: "single",
collapsible: true,
className: "w-full",
defaultValue: "1",
children: faq.map((item) => /* @__PURE__ */ jsxs(AccordionItem, { value: `${item.id}`, children: [
/* @__PURE__ */ jsx(AccordionTrigger, { className: "w-full", children: item?.question }),
/* @__PURE__ */ jsx(AccordionContent, { className: "px-2 text-gray-600", children: item?.answer })
] }))
}
) })
] })
] }) });
}
export {
Faq as default
};

View File

@@ -0,0 +1,128 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { q as queryParams, B as Button, l as login } from "./index-CY6fYws-.js";
import { Head, Form } from "@inertiajs/react";
import { LoaderCircle } from "lucide-react";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { T as TextLink } from "./text-link-ByYmiDlq.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "./app-logo-icon-kpljnLMz.js";
const create = (options) => ({
url: create.url(options),
method: "get"
});
create.definition = {
methods: ["get", "head"],
url: "/forgot-password"
};
create.url = (options) => {
return create.definition.url + queryParams(options);
};
create.get = (options) => ({
url: create.url(options),
method: "get"
});
create.head = (options) => ({
url: create.url(options),
method: "head"
});
const createForm = (options) => ({
action: create.url(options),
method: "get"
});
createForm.get = (options) => ({
action: create.url(options),
method: "get"
});
createForm.head = (options) => ({
action: create.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
create.form = createForm;
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/forgot-password"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const PasswordResetLinkController = { store };
function ForgotPassword({ status }) {
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: "Forgot password",
description: "Enter your email to receive a password reset link",
children: [
/* @__PURE__ */ jsx(Head, { title: "Forgot password" }),
status && /* @__PURE__ */ jsx("div", { className: "mb-4 text-center text-sm font-medium text-green-600", children: status }),
/* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsx(Form, { ...PasswordResetLinkController.store.form(), children: ({ processing, errors }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email address" }),
/* @__PURE__ */ jsx(
Input,
{
id: "email",
type: "email",
name: "email",
autoComplete: "off",
autoFocus: true,
placeholder: "email@example.com"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.email })
] }),
/* @__PURE__ */ jsx("div", { className: "my-6 flex items-center justify-start", children: /* @__PURE__ */ jsxs(
Button,
{
className: "w-full",
disabled: processing,
"data-test": "email-password-reset-link-button",
children: [
processing && /* @__PURE__ */ jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" }),
"Email password reset link"
]
}
) })
] }) }),
/* @__PURE__ */ jsxs("div", { className: "space-x-1 text-center text-sm text-muted-foreground", children: [
/* @__PURE__ */ jsx("span", { children: "Or, return to" }),
/* @__PURE__ */ jsx(TextLink, { href: login(), children: "log in" })
] })
] })
]
}
);
}
export {
ForgotPassword as default
};

View File

@@ -0,0 +1,341 @@
import { q as queryParams } from "./index-CY6fYws-.js";
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/two-factor-challenge"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const login$1 = {
store: Object.assign(store, store)
};
const login = (options) => ({
url: login.url(options),
method: "get"
});
login.definition = {
methods: ["get", "head"],
url: "/two-factor-challenge"
};
login.url = (options) => {
return login.definition.url + queryParams(options);
};
login.get = (options) => ({
url: login.url(options),
method: "get"
});
login.head = (options) => ({
url: login.url(options),
method: "head"
});
const loginForm = (options) => ({
action: login.url(options),
method: "get"
});
loginForm.get = (options) => ({
action: login.url(options),
method: "get"
});
loginForm.head = (options) => ({
action: login.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
login.form = loginForm;
const enable = (options) => ({
url: enable.url(options),
method: "post"
});
enable.definition = {
methods: ["post"],
url: "/user/two-factor-authentication"
};
enable.url = (options) => {
return enable.definition.url + queryParams(options);
};
enable.post = (options) => ({
url: enable.url(options),
method: "post"
});
const enableForm = (options) => ({
action: enable.url(options),
method: "post"
});
enableForm.post = (options) => ({
action: enable.url(options),
method: "post"
});
enable.form = enableForm;
const confirm = (options) => ({
url: confirm.url(options),
method: "post"
});
confirm.definition = {
methods: ["post"],
url: "/user/confirmed-two-factor-authentication"
};
confirm.url = (options) => {
return confirm.definition.url + queryParams(options);
};
confirm.post = (options) => ({
url: confirm.url(options),
method: "post"
});
const confirmForm = (options) => ({
action: confirm.url(options),
method: "post"
});
confirmForm.post = (options) => ({
action: confirm.url(options),
method: "post"
});
confirm.form = confirmForm;
const disable = (options) => ({
url: disable.url(options),
method: "delete"
});
disable.definition = {
methods: ["delete"],
url: "/user/two-factor-authentication"
};
disable.url = (options) => {
return disable.definition.url + queryParams(options);
};
disable.delete = (options) => ({
url: disable.url(options),
method: "delete"
});
const disableForm = (options) => ({
action: disable.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "DELETE",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
disableForm.delete = (options) => ({
action: disable.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "DELETE",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
disable.form = disableForm;
const qrCode = (options) => ({
url: qrCode.url(options),
method: "get"
});
qrCode.definition = {
methods: ["get", "head"],
url: "/user/two-factor-qr-code"
};
qrCode.url = (options) => {
return qrCode.definition.url + queryParams(options);
};
qrCode.get = (options) => ({
url: qrCode.url(options),
method: "get"
});
qrCode.head = (options) => ({
url: qrCode.url(options),
method: "head"
});
const qrCodeForm = (options) => ({
action: qrCode.url(options),
method: "get"
});
qrCodeForm.get = (options) => ({
action: qrCode.url(options),
method: "get"
});
qrCodeForm.head = (options) => ({
action: qrCode.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
qrCode.form = qrCodeForm;
const secretKey = (options) => ({
url: secretKey.url(options),
method: "get"
});
secretKey.definition = {
methods: ["get", "head"],
url: "/user/two-factor-secret-key"
};
secretKey.url = (options) => {
return secretKey.definition.url + queryParams(options);
};
secretKey.get = (options) => ({
url: secretKey.url(options),
method: "get"
});
secretKey.head = (options) => ({
url: secretKey.url(options),
method: "head"
});
const secretKeyForm = (options) => ({
action: secretKey.url(options),
method: "get"
});
secretKeyForm.get = (options) => ({
action: secretKey.url(options),
method: "get"
});
secretKeyForm.head = (options) => ({
action: secretKey.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
secretKey.form = secretKeyForm;
const recoveryCodes = (options) => ({
url: recoveryCodes.url(options),
method: "get"
});
recoveryCodes.definition = {
methods: ["get", "head"],
url: "/user/two-factor-recovery-codes"
};
recoveryCodes.url = (options) => {
return recoveryCodes.definition.url + queryParams(options);
};
recoveryCodes.get = (options) => ({
url: recoveryCodes.url(options),
method: "get"
});
recoveryCodes.head = (options) => ({
url: recoveryCodes.url(options),
method: "head"
});
const recoveryCodesForm = (options) => ({
action: recoveryCodes.url(options),
method: "get"
});
recoveryCodesForm.get = (options) => ({
action: recoveryCodes.url(options),
method: "get"
});
recoveryCodesForm.head = (options) => ({
action: recoveryCodes.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
recoveryCodes.form = recoveryCodesForm;
const regenerateRecoveryCodes = (options) => ({
url: regenerateRecoveryCodes.url(options),
method: "post"
});
regenerateRecoveryCodes.definition = {
methods: ["post"],
url: "/user/two-factor-recovery-codes"
};
regenerateRecoveryCodes.url = (options) => {
return regenerateRecoveryCodes.definition.url + queryParams(options);
};
regenerateRecoveryCodes.post = (options) => ({
url: regenerateRecoveryCodes.url(options),
method: "post"
});
const regenerateRecoveryCodesForm = (options) => ({
action: regenerateRecoveryCodes.url(options),
method: "post"
});
regenerateRecoveryCodesForm.post = (options) => ({
action: regenerateRecoveryCodes.url(options),
method: "post"
});
regenerateRecoveryCodes.form = regenerateRecoveryCodesForm;
const show = (options) => ({
url: show.url(options),
method: "get"
});
show.definition = {
methods: ["get", "head"],
url: "/settings/two-factor"
};
show.url = (options) => {
return show.definition.url + queryParams(options);
};
show.get = (options) => ({
url: show.url(options),
method: "get"
});
show.head = (options) => ({
url: show.url(options),
method: "head"
});
const showForm = (options) => ({
action: show.url(options),
method: "get"
});
showForm.get = (options) => ({
action: show.url(options),
method: "get"
});
showForm.head = (options) => ({
action: show.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
show.form = showForm;
({
login: Object.assign(login, login$1),
enable: Object.assign(enable, enable),
confirm: Object.assign(confirm, confirm),
disable: Object.assign(disable, disable),
qrCode: Object.assign(qrCode, qrCode),
secretKey: Object.assign(secretKey, secretKey),
recoveryCodes: Object.assign(recoveryCodes, recoveryCodes),
regenerateRecoveryCodes: Object.assign(regenerateRecoveryCodes, regenerateRecoveryCodes),
show: Object.assign(show, show)
});
export {
secretKey as a,
show as b,
regenerateRecoveryCodes as c,
confirm as d,
disable as e,
enable as f,
qrCode as q,
recoveryCodes as r,
store as s
};

View File

@@ -0,0 +1,32 @@
import { q as queryParams } from "./index-CY6fYws-.js";
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/user/confirm-password"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const confirm = {
store: Object.assign(store, store)
};
export {
confirm as c,
store as s
};

View File

@@ -0,0 +1,295 @@
import { q as queryParams, a as applyUrlDefaults } from "./index-CY6fYws-.js";
import { c as confirm$1 } from "./index-BRhO3_4E.js";
const confirm = (options) => ({
url: confirm.url(options),
method: "get"
});
confirm.definition = {
methods: ["get", "head"],
url: "/user/confirm-password"
};
confirm.url = (options) => {
return confirm.definition.url + queryParams(options);
};
confirm.get = (options) => ({
url: confirm.url(options),
method: "get"
});
confirm.head = (options) => ({
url: confirm.url(options),
method: "head"
});
const confirmForm = (options) => ({
action: confirm.url(options),
method: "get"
});
confirmForm.get = (options) => ({
action: confirm.url(options),
method: "get"
});
confirmForm.head = (options) => ({
action: confirm.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
confirm.form = confirmForm;
const confirmation = (options) => ({
url: confirmation.url(options),
method: "get"
});
confirmation.definition = {
methods: ["get", "head"],
url: "/user/confirmed-password-status"
};
confirmation.url = (options) => {
return confirmation.definition.url + queryParams(options);
};
confirmation.get = (options) => ({
url: confirmation.url(options),
method: "get"
});
confirmation.head = (options) => ({
url: confirmation.url(options),
method: "head"
});
const confirmationForm = (options) => ({
action: confirmation.url(options),
method: "get"
});
confirmationForm.get = (options) => ({
action: confirmation.url(options),
method: "get"
});
confirmationForm.head = (options) => ({
action: confirmation.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
confirmation.form = confirmationForm;
const edit = (options) => ({
url: edit.url(options),
method: "get"
});
edit.definition = {
methods: ["get", "head"],
url: "/settings/password"
};
edit.url = (options) => {
return edit.definition.url + queryParams(options);
};
edit.get = (options) => ({
url: edit.url(options),
method: "get"
});
edit.head = (options) => ({
url: edit.url(options),
method: "head"
});
const editForm = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.get = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.head = (options) => ({
action: edit.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
edit.form = editForm;
const update = (options) => ({
url: update.url(options),
method: "put"
});
update.definition = {
methods: ["put"],
url: "/settings/password"
};
update.url = (options) => {
return update.definition.url + queryParams(options);
};
update.put = (options) => ({
url: update.url(options),
method: "put"
});
const updateForm = (options) => ({
action: update.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "PUT",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
updateForm.put = (options) => ({
action: update.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "PUT",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
update.form = updateForm;
const request = (options) => ({
url: request.url(options),
method: "get"
});
request.definition = {
methods: ["get", "head"],
url: "/forgot-password"
};
request.url = (options) => {
return request.definition.url + queryParams(options);
};
request.get = (options) => ({
url: request.url(options),
method: "get"
});
request.head = (options) => ({
url: request.url(options),
method: "head"
});
const requestForm = (options) => ({
action: request.url(options),
method: "get"
});
requestForm.get = (options) => ({
action: request.url(options),
method: "get"
});
requestForm.head = (options) => ({
action: request.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
request.form = requestForm;
const email = (options) => ({
url: email.url(options),
method: "post"
});
email.definition = {
methods: ["post"],
url: "/forgot-password"
};
email.url = (options) => {
return email.definition.url + queryParams(options);
};
email.post = (options) => ({
url: email.url(options),
method: "post"
});
const emailForm = (options) => ({
action: email.url(options),
method: "post"
});
emailForm.post = (options) => ({
action: email.url(options),
method: "post"
});
email.form = emailForm;
const reset = (args, options) => ({
url: reset.url(args, options),
method: "get"
});
reset.definition = {
methods: ["get", "head"],
url: "/reset-password/{token}"
};
reset.url = (args, options) => {
if (typeof args === "string" || typeof args === "number") {
args = { token: args };
}
if (Array.isArray(args)) {
args = {
token: args[0]
};
}
args = applyUrlDefaults(args);
const parsedArgs = {
token: args.token
};
return reset.definition.url.replace("{token}", parsedArgs.token.toString()).replace(/\/+$/, "") + queryParams(options);
};
reset.get = (args, options) => ({
url: reset.url(args, options),
method: "get"
});
reset.head = (args, options) => ({
url: reset.url(args, options),
method: "head"
});
const resetForm = (args, options) => ({
action: reset.url(args, options),
method: "get"
});
resetForm.get = (args, options) => ({
action: reset.url(args, options),
method: "get"
});
resetForm.head = (args, options) => ({
action: reset.url(args, {
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
reset.form = resetForm;
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/reset-password"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
({
confirm: Object.assign(confirm, confirm$1),
confirmation: Object.assign(confirmation, confirmation),
edit: Object.assign(edit, edit),
update: Object.assign(update, update),
request: Object.assign(request, request),
email: Object.assign(email, email),
reset: Object.assign(reset, reset),
store: Object.assign(store, store)
});
export {
edit as e,
request as r
};

View File

@@ -0,0 +1,73 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from "./table-DB-AS5w6.js";
import { A as AppLayout, d as dashboard } from "./app-layout-BFyUFda2.js";
import { Head, Link } from "@inertiajs/react";
import { Pencil, Trash2 } from "lucide-react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
function Product({
product
}) {
return /* @__PURE__ */ jsxs(
AppLayout,
{
breadcrumbs: [
{ title: "Products", href: dashboard.product.index().url }
],
children: [
/* @__PURE__ */ jsx(Head, { title: "Products" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
/* @__PURE__ */ jsx("h1", { className: "text-xl font-semibold tracking-tight", children: "Products" }),
/* @__PURE__ */ jsx(Link, { href: dashboard.product.add(), children: /* @__PURE__ */ jsx(Button, { className: "cursor-pointer", children: "Add Image" }) })
] }),
/* @__PURE__ */ jsxs(Table, { children: [
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableHead, { className: "w-[80px]", children: "S.N." }),
/* @__PURE__ */ jsx(TableHead, { className: "w-48", children: "Image" }),
/* @__PURE__ */ jsx(TableHead, { children: "Title" }),
/* @__PURE__ */ jsx(TableHead, { className: "w-24", children: "Type" }),
/* @__PURE__ */ jsx(TableHead, { className: "text-right", children: "Action" })
] }) }),
/* @__PURE__ */ jsx(TableBody, { children: product.map((item, index) => /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableCell, { className: "font-medium", children: index + 1 }),
/* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(
"img",
{
src: item.image_url,
alt: item.title,
className: "aspect-video w-24 rounded-md object-cover object-center"
}
) }),
/* @__PURE__ */ jsx(TableCell, { children: item.title }),
/* @__PURE__ */ jsx(TableCell, { children: item.type }),
/* @__PURE__ */ jsx(TableCell, { className: "text-right", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2", children: [
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(Pencil, { size: 18 }) }),
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(
Trash2,
{
size: 18,
color: "#D2042D"
}
) })
] }) })
] }, index)) })
] })
] })
]
}
);
}
export {
Product as default
};

View File

@@ -0,0 +1,488 @@
import { jsx } from "react/jsx-runtime";
import { Slot } from "@radix-ui/react-slot";
import { cva } from "class-variance-authority";
import { clsx } from "clsx";
import { twMerge } from "tailwind-merge";
function cn(...inputs) {
return twMerge(clsx(inputs));
}
const buttonVariants = cva(
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
{
variants: {
variant: {
default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
ghost: "hover:bg-accent hover:text-accent-foreground",
link: "text-primary underline-offset-4 hover:underline"
},
size: {
default: "h-9 px-4 py-2 has-[>svg]:px-3",
sm: "h-8 rounded-md px-3 has-[>svg]:px-2.5",
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
icon: "size-9"
}
},
defaultVariants: {
variant: "default",
size: "default"
}
}
);
function Button({
className,
variant,
size,
asChild = false,
...props
}) {
const Comp = asChild ? Slot : "button";
return /* @__PURE__ */ jsx(
Comp,
{
"data-slot": "button",
className: cn(buttonVariants({ variant, size, className })),
...props
}
);
}
let urlDefaults = {};
const queryParams = (options) => {
if (!options || !options.query && !options.mergeQuery) {
return "";
}
const query = options.query ?? options.mergeQuery;
const includeExisting = options.mergeQuery !== void 0;
const getValue = (value) => {
if (value === true) {
return "1";
}
if (value === false) {
return "0";
}
return value.toString();
};
const params = new URLSearchParams(
includeExisting && typeof window !== "undefined" ? window.location.search : ""
);
for (const key in query) {
if (query[key] === void 0 || query[key] === null) {
params.delete(key);
continue;
}
if (Array.isArray(query[key])) {
if (params.has(`${key}[]`)) {
params.delete(`${key}[]`);
}
query[key].forEach((value) => {
params.append(`${key}[]`, value.toString());
});
} else if (typeof query[key] === "object") {
params.forEach((_, paramKey) => {
if (paramKey.startsWith(`${key}[`)) {
params.delete(paramKey);
}
});
for (const subKey in query[key]) {
if (typeof query[key][subKey] === "undefined") {
continue;
}
if (["string", "number", "boolean"].includes(
typeof query[key][subKey]
)) {
params.set(
`${key}[${subKey}]`,
getValue(query[key][subKey])
);
}
}
} else {
params.set(key, getValue(query[key]));
}
}
const str = params.toString();
return str.length > 0 ? `?${str}` : "";
};
const applyUrlDefaults = (existing) => {
const existingParams = { ...existing ?? {} };
for (const key in urlDefaults) {
if (existingParams[key] === void 0 && urlDefaults[key] !== void 0) {
existingParams[key] = urlDefaults[key];
}
}
return existingParams;
};
const login = (options) => ({
url: login.url(options),
method: "get"
});
login.definition = {
methods: ["get", "head"],
url: "/login"
};
login.url = (options) => {
return login.definition.url + queryParams(options);
};
login.get = (options) => ({
url: login.url(options),
method: "get"
});
login.head = (options) => ({
url: login.url(options),
method: "head"
});
const loginForm = (options) => ({
action: login.url(options),
method: "get"
});
loginForm.get = (options) => ({
action: login.url(options),
method: "get"
});
loginForm.head = (options) => ({
action: login.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
login.form = loginForm;
const logout = (options) => ({
url: logout.url(options),
method: "post"
});
logout.definition = {
methods: ["post"],
url: "/logout"
};
logout.url = (options) => {
return logout.definition.url + queryParams(options);
};
logout.post = (options) => ({
url: logout.url(options),
method: "post"
});
const logoutForm = (options) => ({
action: logout.url(options),
method: "post"
});
logoutForm.post = (options) => ({
action: logout.url(options),
method: "post"
});
logout.form = logoutForm;
const home = (options) => ({
url: home.url(options),
method: "get"
});
home.definition = {
methods: ["get", "head"],
url: "/"
};
home.url = (options) => {
return home.definition.url + queryParams(options);
};
home.get = (options) => ({
url: home.url(options),
method: "get"
});
home.head = (options) => ({
url: home.url(options),
method: "head"
});
const homeForm = (options) => ({
action: home.url(options),
method: "get"
});
homeForm.get = (options) => ({
action: home.url(options),
method: "get"
});
homeForm.head = (options) => ({
action: home.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
home.form = homeForm;
const about = (options) => ({
url: about.url(options),
method: "get"
});
about.definition = {
methods: ["get", "head"],
url: "/about-us"
};
about.url = (options) => {
return about.definition.url + queryParams(options);
};
about.get = (options) => ({
url: about.url(options),
method: "get"
});
about.head = (options) => ({
url: about.url(options),
method: "head"
});
const aboutForm = (options) => ({
action: about.url(options),
method: "get"
});
aboutForm.get = (options) => ({
action: about.url(options),
method: "get"
});
aboutForm.head = (options) => ({
action: about.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
about.form = aboutForm;
const artOfWeaving = (options) => ({
url: artOfWeaving.url(options),
method: "get"
});
artOfWeaving.definition = {
methods: ["get", "head"],
url: "/art-of-weaving"
};
artOfWeaving.url = (options) => {
return artOfWeaving.definition.url + queryParams(options);
};
artOfWeaving.get = (options) => ({
url: artOfWeaving.url(options),
method: "get"
});
artOfWeaving.head = (options) => ({
url: artOfWeaving.url(options),
method: "head"
});
const artOfWeavingForm = (options) => ({
action: artOfWeaving.url(options),
method: "get"
});
artOfWeavingForm.get = (options) => ({
action: artOfWeaving.url(options),
method: "get"
});
artOfWeavingForm.head = (options) => ({
action: artOfWeaving.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
artOfWeaving.form = artOfWeavingForm;
const contact = (options) => ({
url: contact.url(options),
method: "get"
});
contact.definition = {
methods: ["get", "head"],
url: "/contact"
};
contact.url = (options) => {
return contact.definition.url + queryParams(options);
};
contact.get = (options) => ({
url: contact.url(options),
method: "get"
});
contact.head = (options) => ({
url: contact.url(options),
method: "head"
});
const contactForm = (options) => ({
action: contact.url(options),
method: "get"
});
contactForm.get = (options) => ({
action: contact.url(options),
method: "get"
});
contactForm.head = (options) => ({
action: contact.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
contact.form = contactForm;
const faq = (options) => ({
url: faq.url(options),
method: "get"
});
faq.definition = {
methods: ["get", "head"],
url: "/faq"
};
faq.url = (options) => {
return faq.definition.url + queryParams(options);
};
faq.get = (options) => ({
url: faq.url(options),
method: "get"
});
faq.head = (options) => ({
url: faq.url(options),
method: "head"
});
const faqForm = (options) => ({
action: faq.url(options),
method: "get"
});
faqForm.get = (options) => ({
action: faq.url(options),
method: "get"
});
faqForm.head = (options) => ({
action: faq.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
faq.form = faqForm;
const gallery = (options) => ({
url: gallery.url(options),
method: "get"
});
gallery.definition = {
methods: ["get", "head"],
url: "/gallery"
};
gallery.url = (options) => {
return gallery.definition.url + queryParams(options);
};
gallery.get = (options) => ({
url: gallery.url(options),
method: "get"
});
gallery.head = (options) => ({
url: gallery.url(options),
method: "head"
});
const galleryForm = (options) => ({
action: gallery.url(options),
method: "get"
});
galleryForm.get = (options) => ({
action: gallery.url(options),
method: "get"
});
galleryForm.head = (options) => ({
action: gallery.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
gallery.form = galleryForm;
const bespoke = (options) => ({
url: bespoke.url(options),
method: "get"
});
bespoke.definition = {
methods: ["get", "head"],
url: "/bespoke"
};
bespoke.url = (options) => {
return bespoke.definition.url + queryParams(options);
};
bespoke.get = (options) => ({
url: bespoke.url(options),
method: "get"
});
bespoke.head = (options) => ({
url: bespoke.url(options),
method: "head"
});
const bespokeForm = (options) => ({
action: bespoke.url(options),
method: "get"
});
bespokeForm.get = (options) => ({
action: bespoke.url(options),
method: "get"
});
bespokeForm.head = (options) => ({
action: bespoke.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
bespoke.form = bespokeForm;
const register = (options) => ({
url: register.url(options),
method: "get"
});
register.definition = {
methods: ["get", "head"],
url: "/register"
};
register.url = (options) => {
return register.definition.url + queryParams(options);
};
register.get = (options) => ({
url: register.url(options),
method: "get"
});
register.head = (options) => ({
url: register.url(options),
method: "head"
});
const registerForm = (options) => ({
action: register.url(options),
method: "get"
});
registerForm.get = (options) => ({
action: register.url(options),
method: "get"
});
registerForm.head = (options) => ({
action: register.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
register.form = registerForm;
export {
Button as B,
applyUrlDefaults as a,
logout as b,
cn as c,
contact as d,
about as e,
artOfWeaving as f,
faq as g,
home as h,
bespoke as i,
login as l,
queryParams as q,
register as r
};

View File

@@ -0,0 +1,64 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { B as Button } from "./index-CY6fYws-.js";
import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from "./table-DB-AS5w6.js";
import { A as AppLayout, d as dashboard } from "./app-layout-BFyUFda2.js";
import { Head, Link } from "@inertiajs/react";
import { Pencil, Trash2 } from "lucide-react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
function Faq({
faq
}) {
return /* @__PURE__ */ jsxs(
AppLayout,
{
breadcrumbs: [
{ title: "FAQs", href: dashboard.product.index().url }
],
children: [
/* @__PURE__ */ jsx(Head, { title: "FAQs" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
/* @__PURE__ */ jsx("h1", { className: "text-xl font-semibold tracking-tight", children: "FAQs" }),
/* @__PURE__ */ jsx(Link, { href: dashboard.faq.add(), children: /* @__PURE__ */ jsx(Button, { className: "cursor-pointer", children: "Add Questions" }) })
] }),
/* @__PURE__ */ jsxs(Table, { children: [
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableHead, { className: "w-[80px]", children: "S.N." }),
/* @__PURE__ */ jsx(TableHead, { children: "Question" }),
/* @__PURE__ */ jsx(TableHead, { children: "Answer" }),
/* @__PURE__ */ jsx(TableHead, { className: "text-right", children: "Action" })
] }) }),
/* @__PURE__ */ jsx(TableBody, { children: faq.map((item, index) => /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableCell, { className: "font-medium", children: index + 1 }),
/* @__PURE__ */ jsx(TableCell, { children: item.question }),
/* @__PURE__ */ jsx(TableCell, { children: item.answer }),
/* @__PURE__ */ jsx(TableCell, { className: "text-right", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2", children: [
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(Pencil, { size: 18 }) }),
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(
Trash2,
{
size: 18,
color: "#D2042D"
}
) })
] }) })
] }, index)) })
] })
] })
]
}
);
}
export {
Faq as default
};

View File

@@ -0,0 +1,21 @@
import { jsx } from "react/jsx-runtime";
import { c as cn } from "./index-CY6fYws-.js";
function Input({ className, type, ...props }) {
return /* @__PURE__ */ jsx(
"input",
{
type,
"data-slot": "input",
className: cn(
"border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
className
),
...props
}
);
}
export {
Input as I
};

View File

@@ -0,0 +1,19 @@
import { jsx } from "react/jsx-runtime";
import { c as cn } from "./index-CY6fYws-.js";
function InputError({
message,
className = "",
...props
}) {
return message ? /* @__PURE__ */ jsx(
"p",
{
...props,
className: cn("text-sm text-red-600 dark:text-red-400", className),
children: message
}
) : null;
}
export {
InputError as I
};

View File

@@ -0,0 +1,22 @@
import { jsx } from "react/jsx-runtime";
import * as LabelPrimitive from "@radix-ui/react-label";
import { c as cn } from "./index-CY6fYws-.js";
function Label({
className,
...props
}) {
return /* @__PURE__ */ jsx(
LabelPrimitive.Root,
{
"data-slot": "label",
className: cn(
"text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
className
),
...props
}
);
}
export {
Label as L
};

View File

@@ -0,0 +1,147 @@
import { jsx, jsxs } from "react/jsx-runtime";
import { c as cn, q as queryParams, B as Button } from "./index-CY6fYws-.js";
import * as SeparatorPrimitive from "@radix-ui/react-separator";
import { e as edit$2 } from "./index-BuzAnds1.js";
import { e as edit$1 } from "./app-layout-BFyUFda2.js";
import { b as show } from "./index-BHwjGIZD.js";
import { Link } from "@inertiajs/react";
function Separator({
className,
orientation = "horizontal",
decorative = true,
...props
}) {
return /* @__PURE__ */ jsx(
SeparatorPrimitive.Root,
{
"data-slot": "separator-root",
decorative,
orientation,
className: cn(
"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
className
),
...props
}
);
}
function HeadingSmall({
title,
description
}) {
return /* @__PURE__ */ jsxs("header", { children: [
/* @__PURE__ */ jsx("h3", { className: "mb-0.5 text-base font-medium", children: title }),
description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description })
] });
}
function Heading({
title,
description
}) {
return /* @__PURE__ */ jsxs("div", { className: "mb-8 space-y-0.5", children: [
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold tracking-tight", children: title }),
description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description })
] });
}
const edit = (options) => ({
url: edit.url(options),
method: "get"
});
edit.definition = {
methods: ["get", "head"],
url: "/settings/appearance"
};
edit.url = (options) => {
return edit.definition.url + queryParams(options);
};
edit.get = (options) => ({
url: edit.url(options),
method: "get"
});
edit.head = (options) => ({
url: edit.url(options),
method: "head"
});
const editForm = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.get = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.head = (options) => ({
action: edit.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
edit.form = editForm;
({
edit: Object.assign(edit, edit)
});
const sidebarNavItems = [
{
title: "Profile",
href: edit$1(),
icon: null
},
{
title: "Password",
href: edit$2(),
icon: null
},
{
title: "Two-Factor Auth",
href: show(),
icon: null
},
{
title: "Appearance",
href: edit(),
icon: null
}
];
function SettingsLayout({ children }) {
if (typeof window === "undefined") {
return null;
}
const currentPath = window.location.pathname;
return /* @__PURE__ */ jsxs("div", { className: "px-4 py-6", children: [
/* @__PURE__ */ jsx(
Heading,
{
title: "Settings",
description: "Manage your profile and account settings"
}
),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row lg:space-x-12", children: [
/* @__PURE__ */ jsx("aside", { className: "w-full max-w-xl lg:w-48", children: /* @__PURE__ */ jsx("nav", { className: "flex flex-col space-y-1 space-x-0", children: sidebarNavItems.map((item, index) => /* @__PURE__ */ jsx(
Button,
{
size: "sm",
variant: "ghost",
asChild: true,
className: cn("w-full justify-start", {
"bg-muted": currentPath === (typeof item.href === "string" ? item.href : item.href.url)
}),
children: /* @__PURE__ */ jsxs(Link, { href: item.href, children: [
item.icon && /* @__PURE__ */ jsx(item.icon, { className: "h-4 w-4" }),
item.title
] })
},
`${typeof item.href === "string" ? item.href : item.href.url}-${index}`
)) }) }),
/* @__PURE__ */ jsx(Separator, { className: "my-6 lg:hidden" }),
/* @__PURE__ */ jsx("div", { className: "flex-1 md:max-w-2xl", children: /* @__PURE__ */ jsx("section", { className: "max-w-xl space-y-12", children }) })
] })
] });
}
export {
HeadingSmall as H,
SettingsLayout as S,
edit as e
};

View File

@@ -0,0 +1,325 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { q as queryParams, h as home, d as contact, e as about, f as artOfWeaving, g as faq, B as Button, i as bespoke } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { usePage, Link, router } from "@inertiajs/react";
import { SiFacebook, SiInstagram } from "@icons-pack/react-simple-icons";
import { MoveRight, Phone, Mail, MapPin, Menu } from "lucide-react";
import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, e as SelectGroup, d as SelectItem } from "./select-CsRyyQUa.js";
import { S as Sheet, a as SheetTrigger, b as SheetContent, c as SheetTitle, d as SheetDescription } from "./sheet-Bq2cyJmx.js";
const product = (options) => ({
url: product.url(options),
method: "get"
});
product.definition = {
methods: ["get", "head"],
url: "/product"
};
product.url = (options) => {
return product.definition.url + queryParams(options);
};
product.get = (options) => ({
url: product.url(options),
method: "get"
});
product.head = (options) => ({
url: product.url(options),
method: "head"
});
const productForm = (options) => ({
action: product.url(options),
method: "get"
});
productForm.get = (options) => ({
action: product.url(options),
method: "get"
});
productForm.head = (options) => ({
action: product.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
product.form = productForm;
const index = {
product: Object.assign(product, product)
};
function t(translations, key, replacements = {}) {
if (!translations) {
console.warn("No translations provided");
return key;
}
const keys = key.split(".");
let value = translations;
for (const k of keys) {
if (value && typeof value === "object" && k in value) {
value = value[k];
} else {
console.warn(`Translation key not found: ${key}`);
return key;
}
}
if (typeof value !== "string") {
return key;
}
let text = value;
Object.entries(replacements).forEach(([k, v]) => {
text = text.replace(new RegExp(`:${k}`, "g"), v);
});
return text;
}
function useTranslations() {
const { translations } = usePage().props;
const translate = (key, replacements = {}) => {
return t(translations, key, replacements);
};
return { t: translate, translations };
}
function useLocale() {
const { locale } = usePage().props;
return locale;
}
const ns = "/build/assets/ns-CsWIdWF7.gif";
const oko = "/build/assets/oko-BkZT_kDH.gif";
const logo = "/build/assets/soorya-Ci0dhsli.png";
function Footer() {
const { t: t2 } = useTranslations();
return /* @__PURE__ */ jsxs("footer", { className: "bg-primary", children: [
/* @__PURE__ */ jsxs("div", { className: "mx-auto grid max-w-screen-2xl grid-cols-4 gap-8 px-12 py-8 max-md:grid-cols-1 max-md:grid-rows-4 max-md:px-6", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
/* @__PURE__ */ jsx("img", { src: logo, alt: "Soorya Carpet Logo", className: "w-32" }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 text-sm text-white", children: [
/* @__PURE__ */ jsx("p", { children: t2("footer.desc.title") }),
/* @__PURE__ */ jsxs("ul", { children: [
/* @__PURE__ */ jsx("li", { children: t2("footer.desc.company") }),
/* @__PURE__ */ jsx("li", { children: t2("footer.desc.address") }),
/* @__PURE__ */ jsx("li", { children: t2("footer.desc.phone") }),
/* @__PURE__ */ jsx("li", { children: t2("footer.desc.email") })
] })
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
/* @__PURE__ */ jsx("p", { className: "text-lg font-medium text-white", children: "Quick Link" }),
/* @__PURE__ */ jsxs("ul", { className: "flex flex-col gap-1 text-sm", children: [
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: home(), className: "text-neutral-300", children: t2("footer.links.home") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: contact(), className: "text-neutral-300", children: t2("footer.links.contact") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: about(), className: "text-neutral-300", children: t2("footer.links.about-us") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
Link,
{
href: artOfWeaving(),
className: "text-neutral-300",
children: t2("footer.links.art")
}
) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
Link,
{
href: index.product(),
className: "text-neutral-300",
children: t2("footer.links.products")
}
) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: home(), className: "text-neutral-300", children: t2("footer.links.bespoke") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: home(), className: "text-neutral-300", children: t2("footer.links.gallery") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: faq(), className: "text-neutral-300", children: t2("footer.links.faq") }) })
] })
] }),
/* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx("p", { className: "text-lg font-medium text-white", children: "Certifications & Trust Badges" }),
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-1", children: [
/* @__PURE__ */ jsx(
"img",
{
src: ns,
alt: "NS Standard",
className: "aspect-square object-cover object-center"
}
),
/* @__PURE__ */ jsx(
"img",
{
src: oko,
alt: "oko Standard",
className: "object-cover object-center"
}
)
] })
] }),
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
/* @__PURE__ */ jsxs("form", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx(Label, { className: "text-lg font-medium text-white", children: t2("footer.news.title") }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 max-sm:flex-col", children: [
/* @__PURE__ */ jsx(
Input,
{
id: "newsletter",
placeholder: t2("footer.news.input"),
className: "bg-white"
}
),
/* @__PURE__ */ jsxs(
Button,
{
variant: "outline",
className: "bg-transparent text-white max-sm:w-full",
children: [
t2("footer.news.button"),
" ",
/* @__PURE__ */ jsx(MoveRight, {})
]
}
)
] })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("p", { className: "text-base font-medium text-white", children: t2("footer.news.legal.title") }),
/* @__PURE__ */ jsxs("ul", { className: "flex flex-col gap-1 text-sm text-neutral-300", children: [
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: "privacy-policy", children: t2("footer.news.legal.privacy") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: "terms-and-condition", children: t2("footer.news.legal.terms") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: faq(), children: t2("footer.news.legal.policy") }) })
] })
] })
] }) })
] }),
/* @__PURE__ */ jsx("hr", { className: "mx-auto my-4 max-w-screen-2xl border-neutral-500 px-12" }),
/* @__PURE__ */ jsxs("div", { className: "max-auto flex max-w-screen-2xl items-center justify-between px-12 py-4 max-md:flex-col max-md:gap-4 max-md:px-6", children: [
/* @__PURE__ */ jsxs("p", { className: "text-xs text-white", children: [
"© ",
(/* @__PURE__ */ new Date()).getFullYear(),
" Soorya Carpet Industries. All rights reserved."
] }),
/* @__PURE__ */ jsxs("ul", { className: "flex items-center gap-4", children: [
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
Link,
{
href: "https://www.facebook.com/sooryacarpet/?locale=ne_NP",
target: "_blank",
children: /* @__PURE__ */ jsx(SiFacebook, { color: "#d4d4d4", size: 16 })
}
) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
Link,
{
href: "https://www.instagram.com/kaleen_carpet/",
target: "_blank",
children: /* @__PURE__ */ jsx(SiInstagram, { color: "#d4d4d4", size: 16 })
}
) })
] })
] })
] });
}
function Navbar() {
const { t: t2 } = useTranslations();
const locale = useLocale();
const changeLanguage = (newLocale) => {
router.post(
"/locale",
{ locale: newLocale },
{
preserveScroll: true,
preserveState: true,
onSuccess: () => {
console.log("Language changed to:", newLocale);
}
}
);
};
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("header", { className: "mx-auto w-full text-sm not-has-[nav]:hidden", children: [
/* @__PURE__ */ jsx("div", { className: "bg-primary py-1.5 text-white/60 max-md:hidden", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto flex max-w-screen-2xl items-center justify-between px-12 max-md:px-2", children: [
/* @__PURE__ */ jsxs("ul", { className: "flex items-center gap-4", children: [
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
"a",
{
href: "tel:01-4220087",
className: "flex items-center gap-1 text-xs",
children: [
/* @__PURE__ */ jsx(Phone, { size: 14 }),
"01-4220087"
]
}
) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
"a",
{
href: "mailto:info@soorya.com",
className: "flex items-center gap-1 text-xs",
children: [
/* @__PURE__ */ jsx(Mail, { size: 14 }),
"info@soorya.com"
]
}
) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
"a",
{
href: "#",
className: "flex items-center gap-1 text-xs",
children: [
/* @__PURE__ */ jsx(MapPin, { size: 14 }),
"Thapathali, Kathmandu, Nepal"
]
}
) })
] }),
/* @__PURE__ */ jsxs(Select, { value: locale, onValueChange: changeLanguage, children: [
/* @__PURE__ */ jsx(SelectTrigger, { className: "h-0 w-32 border-0 focus-visible:ring-0", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
/* @__PURE__ */ jsx(SelectContent, { children: /* @__PURE__ */ jsxs(SelectGroup, { children: [
/* @__PURE__ */ jsx(SelectItem, { value: "en", children: "English" }),
/* @__PURE__ */ jsx(SelectItem, { value: "cn", children: "中国人" })
] }) })
] })
] }) }),
/* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-screen-2xl px-12 py-2 text-base not-has-[nav]:hidden max-md:px-4", children: /* @__PURE__ */ jsxs("nav", { className: "flex items-center justify-between gap-2", children: [
/* @__PURE__ */ jsx(Link, { href: home(), children: /* @__PURE__ */ jsx(
"img",
{
src: logo,
alt: "Soorya Carpet Logo",
className: "w-36"
}
) }),
/* @__PURE__ */ jsxs("ul", { className: "flex items-center gap-6 max-md:hidden", children: [
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: about(), children: t2("nav.about-us") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: artOfWeaving(), children: t2("nav.art") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: index.product(), children: t2("nav.products") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: bespoke(), children: t2("nav.bespoke") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: faq(), children: t2("nav.faq") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: contact(), children: t2("nav.contact") }) })
] }),
/* @__PURE__ */ jsxs(Sheet, { children: [
/* @__PURE__ */ jsx(SheetTrigger, { className: "md:hidden", children: /* @__PURE__ */ jsx(Menu, { size: 24 }) }),
/* @__PURE__ */ jsxs(SheetContent, { className: "w-full", children: [
/* @__PURE__ */ jsx(SheetTitle, { className: "hidden", children: "Menu" }),
/* @__PURE__ */ jsx(SheetDescription, { className: "hidden", children: "Navigation Menu Item" }),
/* @__PURE__ */ jsxs("ul", { className: "mt-20 flex flex-col items-center justify-center gap-6", children: [
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: about(), children: t2("nav.about-us") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: artOfWeaving(), children: t2("nav.art") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: index.product(), children: t2("nav.products") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: bespoke(), children: t2("nav.bespoke") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: faq(), children: t2("nav.faq") }) }),
/* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link, { href: contact(), children: t2("nav.contact") }) })
] })
] })
] })
] }) })
] }) });
}
function Layout({ children }) {
return /* @__PURE__ */ jsxs("div", { className: "mx-auto grid min-h-[100dvh] grid-rows-[auto_1fr_auto]", children: [
/* @__PURE__ */ jsx(Navbar, {}),
/* @__PURE__ */ jsx("main", { children }),
/* @__PURE__ */ jsx(Footer, {})
] });
}
export {
Layout as L,
index as i,
ns as n,
oko as o,
useTranslations as u
};

View File

@@ -0,0 +1,230 @@
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
import { q as queryParams, c as cn, B as Button, r as register } from "./index-CY6fYws-.js";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { T as TextLink } from "./text-link-ByYmiDlq.js";
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
import { CheckIcon, LoaderCircle } from "lucide-react";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import { r as request } from "./index-BuzAnds1.js";
import { Head, Form } from "@inertiajs/react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "./app-logo-icon-kpljnLMz.js";
import "./index-BRhO3_4E.js";
const create = (options) => ({
url: create.url(options),
method: "get"
});
create.definition = {
methods: ["get", "head"],
url: "/login"
};
create.url = (options) => {
return create.definition.url + queryParams(options);
};
create.get = (options) => ({
url: create.url(options),
method: "get"
});
create.head = (options) => ({
url: create.url(options),
method: "head"
});
const createForm = (options) => ({
action: create.url(options),
method: "get"
});
createForm.get = (options) => ({
action: create.url(options),
method: "get"
});
createForm.head = (options) => ({
action: create.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
create.form = createForm;
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/login"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const destroy = (options) => ({
url: destroy.url(options),
method: "post"
});
destroy.definition = {
methods: ["post"],
url: "/logout"
};
destroy.url = (options) => {
return destroy.definition.url + queryParams(options);
};
destroy.post = (options) => ({
url: destroy.url(options),
method: "post"
});
const destroyForm = (options) => ({
action: destroy.url(options),
method: "post"
});
destroyForm.post = (options) => ({
action: destroy.url(options),
method: "post"
});
destroy.form = destroyForm;
const AuthenticatedSessionController = { store };
function Checkbox({
className,
...props
}) {
return /* @__PURE__ */ jsx(
CheckboxPrimitive.Root,
{
"data-slot": "checkbox",
className: cn(
"peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
className
),
...props,
children: /* @__PURE__ */ jsx(
CheckboxPrimitive.Indicator,
{
"data-slot": "checkbox-indicator",
className: "flex items-center justify-center text-current transition-none",
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
}
)
}
);
}
function Login({ status, canResetPassword }) {
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: "Log in to your account",
description: "Enter your email and password below to log in",
children: [
/* @__PURE__ */ jsx(Head, { title: "Log in" }),
/* @__PURE__ */ jsx(
Form,
{
...AuthenticatedSessionController.store.form(),
resetOnSuccess: ["password"],
className: "flex flex-col gap-6",
children: ({ processing, errors }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-6", children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email address" }),
/* @__PURE__ */ jsx(
Input,
{
id: "email",
type: "email",
name: "email",
required: true,
autoFocus: true,
tabIndex: 1,
autoComplete: "email",
placeholder: "email@example.com"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.email })
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Password" }),
canResetPassword && /* @__PURE__ */ jsx(
TextLink,
{
href: request(),
className: "ml-auto text-sm",
tabIndex: 5,
children: "Forgot password?"
}
)
] }),
/* @__PURE__ */ jsx(
Input,
{
id: "password",
type: "password",
name: "password",
required: true,
tabIndex: 2,
autoComplete: "current-password",
placeholder: "Password"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.password })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
/* @__PURE__ */ jsx(
Checkbox,
{
id: "remember",
name: "remember",
tabIndex: 3
}
),
/* @__PURE__ */ jsx(Label, { htmlFor: "remember", children: "Remember me" })
] }),
/* @__PURE__ */ jsxs(
Button,
{
type: "submit",
className: "mt-4 w-full",
tabIndex: 4,
disabled: processing,
"data-test": "login-button",
children: [
processing && /* @__PURE__ */ jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" }),
"Log in"
]
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "text-center text-sm text-muted-foreground", children: [
"Don't have an account?",
" ",
/* @__PURE__ */ jsx(TextLink, { href: register(), tabIndex: 5, children: "Sign up" })
] })
] })
}
),
status && /* @__PURE__ */ jsx("div", { className: "mb-4 text-center text-sm font-medium text-green-600", children: status })
]
}
);
}
export {
Login as default
};

View File

@@ -0,0 +1,227 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { q as queryParams, B as Button } from "./index-CY6fYws-.js";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { A as AppLayout } from "./app-layout-BFyUFda2.js";
import { S as SettingsLayout, H as HeadingSmall } from "./layout-BQI5MpcL.js";
import { Transition } from "@headlessui/react";
import { Head, Form } from "@inertiajs/react";
import { useRef } from "react";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { e as edit$1 } from "./index-BuzAnds1.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "lucide-react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
import "@radix-ui/react-separator";
import "./index-BHwjGIZD.js";
import "@radix-ui/react-label";
import "./index-BRhO3_4E.js";
const edit = (options) => ({
url: edit.url(options),
method: "get"
});
edit.definition = {
methods: ["get", "head"],
url: "/settings/password"
};
edit.url = (options) => {
return edit.definition.url + queryParams(options);
};
edit.get = (options) => ({
url: edit.url(options),
method: "get"
});
edit.head = (options) => ({
url: edit.url(options),
method: "head"
});
const editForm = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.get = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.head = (options) => ({
action: edit.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
edit.form = editForm;
const update = (options) => ({
url: update.url(options),
method: "put"
});
update.definition = {
methods: ["put"],
url: "/settings/password"
};
update.url = (options) => {
return update.definition.url + queryParams(options);
};
update.put = (options) => ({
url: update.url(options),
method: "put"
});
const updateForm = (options) => ({
action: update.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "PUT",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
updateForm.put = (options) => ({
action: update.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "PUT",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
update.form = updateForm;
const PasswordController = { update };
const breadcrumbs = [
{
title: "Password settings",
href: edit$1().url
}
];
function Password() {
const passwordInput = useRef(null);
const currentPasswordInput = useRef(null);
return /* @__PURE__ */ jsxs(AppLayout, { breadcrumbs, children: [
/* @__PURE__ */ jsx(Head, { title: "Password settings" }),
/* @__PURE__ */ jsx(SettingsLayout, { children: /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsx(
HeadingSmall,
{
title: "Update password",
description: "Ensure your account is using a long, random password to stay secure"
}
),
/* @__PURE__ */ jsx(
Form,
{
...PasswordController.update.form(),
options: {
preserveScroll: true
},
resetOnError: [
"password",
"password_confirmation",
"current_password"
],
resetOnSuccess: true,
onError: (errors) => {
if (errors.password) {
passwordInput.current?.focus();
}
if (errors.current_password) {
currentPasswordInput.current?.focus();
}
},
className: "space-y-6",
children: ({ errors, processing, recentlySuccessful }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "current_password", children: "Current password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "current_password",
ref: currentPasswordInput,
name: "current_password",
type: "password",
className: "mt-1 block w-full",
autoComplete: "current-password",
placeholder: "Current password"
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.current_password
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "New password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password",
ref: passwordInput,
name: "password",
type: "password",
className: "mt-1 block w-full",
autoComplete: "new-password",
placeholder: "New password"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.password })
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password_confirmation", children: "Confirm password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password_confirmation",
name: "password_confirmation",
type: "password",
className: "mt-1 block w-full",
autoComplete: "new-password",
placeholder: "Confirm password"
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.password_confirmation
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
/* @__PURE__ */ jsx(
Button,
{
disabled: processing,
"data-test": "update-password-button",
children: "Save password"
}
),
/* @__PURE__ */ jsx(
Transition,
{
show: recentlySuccessful,
enter: "transition ease-in-out",
enterFrom: "opacity-0",
leave: "transition ease-in-out",
leaveTo: "opacity-0",
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-neutral-600", children: "Saved" })
}
)
] })
] })
}
)
] }) })
] });
}
export {
Password as default
};

View File

@@ -0,0 +1,118 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { T as Tabs, a as TabsList, b as TabsTrigger, c as TabsContent } from "./tabs-C0o9riYx.js";
import { u as useTranslations, L as Layout } from "./layout-toNsB0Jp.js";
import { Head } from "@inertiajs/react";
import "@radix-ui/react-tabs";
import "./index-CY6fYws-.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "./input-DfkIsvXR.js";
import "./label-DrpjkvJN.js";
import "@radix-ui/react-label";
import "@icons-pack/react-simple-icons";
import "lucide-react";
import "./select-CsRyyQUa.js";
import "@radix-ui/react-select";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
function Product({
product
}) {
const { t } = useTranslations();
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Layout, { children: [
/* @__PURE__ */ jsx(Head, { title: "Our Products" }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-8 px-12 py-8", children: [
/* @__PURE__ */ jsx("h1", { className: "font-serif text-5xl font-medium tracking-tight", children: t("pages.product.sections.first.title") }),
/* @__PURE__ */ jsxs(
Tabs,
{
defaultValue: "traditional",
className: "flex flex-col gap-8",
children: [
/* @__PURE__ */ jsxs(TabsList, { className: "flex items-center gap-4 bg-transparent", children: [
/* @__PURE__ */ jsx(
TabsTrigger,
{
value: "traditional",
className: "!h-auto cursor-pointer px-4 py-2 data-[state=active]:bg-primary data-[state=active]:text-white",
children: t("pages.product.sections.first.tab1")
}
),
/* @__PURE__ */ jsx(
TabsTrigger,
{
value: "modern",
className: "!h-auto cursor-pointer px-4 py-2 data-[state=active]:bg-primary data-[state=active]:text-white",
children: t("pages.product.sections.first.tab2")
}
),
/* @__PURE__ */ jsx(
TabsTrigger,
{
value: "abstract",
className: "!h-auto cursor-pointer px-4 py-2 data-[state=active]:bg-primary data-[state=active]:text-white",
children: t("pages.product.sections.first.tab3")
}
)
] }),
/* @__PURE__ */ jsx(TabsContent, { value: "traditional", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-6 max-md:grid-cols-3 max-sm:grid-cols-2 max-sm:gap-4", children: product.map(
(e, index) => e.type === "traditional" ? /* @__PURE__ */ jsx(
"img",
{
src: e.image_url,
alt: e.title,
className: "aspect-video rounded-md object-cover object-center"
},
index
) : null
) }) }),
/* @__PURE__ */ jsx(TabsContent, { value: "modern", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-6 max-md:grid-cols-3 max-sm:grid-cols-2 max-sm:gap-4", children: product.map(
(e, index) => e.type === "modern" ? /* @__PURE__ */ jsx(
"img",
{
src: e.image_url,
alt: e.title,
className: "aspect-video rounded-md object-cover object-center"
},
index
) : null
) }) }),
/* @__PURE__ */ jsx(TabsContent, { value: "abstract", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-6 max-md:grid-cols-3 max-sm:grid-cols-2 max-sm:gap-4", children: product.map(
(e, index) => e.type === "abstract" ? /* @__PURE__ */ jsx(
"img",
{
src: e.image_url,
alt: e.title,
className: "aspect-video rounded-md object-cover object-center"
},
index
) : null
) }) })
]
}
)
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col gap-8 px-12 py-8 max-md:px-8", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
/* @__PURE__ */ jsx("h2", { className: "font-serif text-3xl font-medium tracking-tight", children: t("pages.product.sections.second.title") }),
/* @__PURE__ */ jsx("p", { className: "text-gray-500", children: t("pages.product.sections.second.desc") })
] }),
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-6 max-md:grid-cols-3 max-sm:grid-cols-2 max-sm:gap-4", children: product.map(
(e, index) => e.type === "art" ? /* @__PURE__ */ jsx(
"img",
{
src: e.image_url,
alt: e.title,
className: "aspect-video rounded-md object-cover object-center"
},
index
) : null
) })
] })
] }) });
}
export {
Product as default
};

View File

@@ -0,0 +1,465 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { q as queryParams, a as applyUrlDefaults, B as Button } from "./index-CY6fYws-.js";
import { Transition } from "@headlessui/react";
import { Form, usePage, Head, Link } from "@inertiajs/react";
import { H as HeadingSmall, S as SettingsLayout } from "./layout-BQI5MpcL.js";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { D as Dialog, a as DialogTrigger, b as DialogContent, c as DialogTitle, d as DialogDescription, e as DialogFooter, f as DialogClose } from "./dialog-C3kXNAKa.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { useRef } from "react";
import { A as AppLayout, e as edit$1 } from "./app-layout-BFyUFda2.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-separator";
import "./index-BuzAnds1.js";
import "./index-BRhO3_4E.js";
import "./index-BHwjGIZD.js";
import "@radix-ui/react-dialog";
import "lucide-react";
import "@radix-ui/react-label";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
const edit = (options) => ({
url: edit.url(options),
method: "get"
});
edit.definition = {
methods: ["get", "head"],
url: "/settings/profile"
};
edit.url = (options) => {
return edit.definition.url + queryParams(options);
};
edit.get = (options) => ({
url: edit.url(options),
method: "get"
});
edit.head = (options) => ({
url: edit.url(options),
method: "head"
});
const editForm = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.get = (options) => ({
action: edit.url(options),
method: "get"
});
editForm.head = (options) => ({
action: edit.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
edit.form = editForm;
const update = (options) => ({
url: update.url(options),
method: "patch"
});
update.definition = {
methods: ["patch"],
url: "/settings/profile"
};
update.url = (options) => {
return update.definition.url + queryParams(options);
};
update.patch = (options) => ({
url: update.url(options),
method: "patch"
});
const updateForm = (options) => ({
action: update.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "PATCH",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
updateForm.patch = (options) => ({
action: update.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "PATCH",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
update.form = updateForm;
const destroy = (options) => ({
url: destroy.url(options),
method: "delete"
});
destroy.definition = {
methods: ["delete"],
url: "/settings/profile"
};
destroy.url = (options) => {
return destroy.definition.url + queryParams(options);
};
destroy.delete = (options) => ({
url: destroy.url(options),
method: "delete"
});
const destroyForm = (options) => ({
action: destroy.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "DELETE",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
destroyForm.delete = (options) => ({
action: destroy.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "DELETE",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "post"
});
destroy.form = destroyForm;
const ProfileController = { update, destroy };
const notice = (options) => ({
url: notice.url(options),
method: "get"
});
notice.definition = {
methods: ["get", "head"],
url: "/verify-email"
};
notice.url = (options) => {
return notice.definition.url + queryParams(options);
};
notice.get = (options) => ({
url: notice.url(options),
method: "get"
});
notice.head = (options) => ({
url: notice.url(options),
method: "head"
});
const noticeForm = (options) => ({
action: notice.url(options),
method: "get"
});
noticeForm.get = (options) => ({
action: notice.url(options),
method: "get"
});
noticeForm.head = (options) => ({
action: notice.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
notice.form = noticeForm;
const verify = (args, options) => ({
url: verify.url(args, options),
method: "get"
});
verify.definition = {
methods: ["get", "head"],
url: "/verify-email/{id}/{hash}"
};
verify.url = (args, options) => {
if (Array.isArray(args)) {
args = {
id: args[0],
hash: args[1]
};
}
args = applyUrlDefaults(args);
const parsedArgs = {
id: args.id,
hash: args.hash
};
return verify.definition.url.replace("{id}", parsedArgs.id.toString()).replace("{hash}", parsedArgs.hash.toString()).replace(/\/+$/, "") + queryParams(options);
};
verify.get = (args, options) => ({
url: verify.url(args, options),
method: "get"
});
verify.head = (args, options) => ({
url: verify.url(args, options),
method: "head"
});
const verifyForm = (args, options) => ({
action: verify.url(args, options),
method: "get"
});
verifyForm.get = (args, options) => ({
action: verify.url(args, options),
method: "get"
});
verifyForm.head = (args, options) => ({
action: verify.url(args, {
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
verify.form = verifyForm;
const send = (options) => ({
url: send.url(options),
method: "post"
});
send.definition = {
methods: ["post"],
url: "/email/verification-notification"
};
send.url = (options) => {
return send.definition.url + queryParams(options);
};
send.post = (options) => ({
url: send.url(options),
method: "post"
});
const sendForm = (options) => ({
action: send.url(options),
method: "post"
});
sendForm.post = (options) => ({
action: send.url(options),
method: "post"
});
send.form = sendForm;
({
notice: Object.assign(notice, notice),
verify: Object.assign(verify, verify),
send: Object.assign(send, send)
});
function DeleteUser() {
const passwordInput = useRef(null);
return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsx(
HeadingSmall,
{
title: "Delete account",
description: "Delete your account and all of its resources"
}
),
/* @__PURE__ */ jsxs("div", { className: "space-y-4 rounded-lg border border-red-100 bg-red-50 p-4 dark:border-red-200/10 dark:bg-red-700/10", children: [
/* @__PURE__ */ jsxs("div", { className: "relative space-y-0.5 text-red-600 dark:text-red-100", children: [
/* @__PURE__ */ jsx("p", { className: "font-medium", children: "Warning" }),
/* @__PURE__ */ jsx("p", { className: "text-sm", children: "Please proceed with caution, this cannot be undone." })
] }),
/* @__PURE__ */ jsxs(Dialog, { children: [
/* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
Button,
{
variant: "destructive",
"data-test": "delete-user-button",
children: "Delete account"
}
) }),
/* @__PURE__ */ jsxs(DialogContent, { children: [
/* @__PURE__ */ jsx(DialogTitle, { children: "Are you sure you want to delete your account?" }),
/* @__PURE__ */ jsx(DialogDescription, { children: "Once your account is deleted, all of its resources and data will also be permanently deleted. Please enter your password to confirm you would like to permanently delete your account." }),
/* @__PURE__ */ jsx(
Form,
{
...ProfileController.destroy.form(),
options: {
preserveScroll: true
},
onError: () => passwordInput.current?.focus(),
resetOnSuccess: true,
className: "space-y-6",
children: ({ resetAndClearErrors, processing, errors }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(
Label,
{
htmlFor: "password",
className: "sr-only",
children: "Password"
}
),
/* @__PURE__ */ jsx(
Input,
{
id: "password",
type: "password",
name: "password",
ref: passwordInput,
placeholder: "Password",
autoComplete: "current-password"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.password })
] }),
/* @__PURE__ */ jsxs(DialogFooter, { className: "gap-2", children: [
/* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
Button,
{
variant: "secondary",
onClick: () => resetAndClearErrors(),
children: "Cancel"
}
) }),
/* @__PURE__ */ jsx(
Button,
{
variant: "destructive",
disabled: processing,
asChild: true,
children: /* @__PURE__ */ jsx(
"button",
{
type: "submit",
"data-test": "confirm-delete-user-button",
children: "Delete account"
}
)
}
)
] })
] })
}
)
] })
] })
] })
] });
}
const breadcrumbs = [
{
title: "Profile settings",
href: edit$1().url
}
];
function Profile({
mustVerifyEmail,
status
}) {
const { auth } = usePage().props;
return /* @__PURE__ */ jsxs(AppLayout, { breadcrumbs, children: [
/* @__PURE__ */ jsx(Head, { title: "Profile settings" }),
/* @__PURE__ */ jsxs(SettingsLayout, { children: [
/* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsx(
HeadingSmall,
{
title: "Profile information",
description: "Update your name and email address"
}
),
/* @__PURE__ */ jsx(
Form,
{
...ProfileController.update.form(),
options: {
preserveScroll: true
},
className: "space-y-6",
children: ({ processing, recentlySuccessful, errors }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "name", children: "Name" }),
/* @__PURE__ */ jsx(
Input,
{
id: "name",
className: "mt-1 block w-full",
defaultValue: auth.user.name,
name: "name",
required: true,
autoComplete: "name",
placeholder: "Full name"
}
),
/* @__PURE__ */ jsx(
InputError,
{
className: "mt-2",
message: errors.name
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email address" }),
/* @__PURE__ */ jsx(
Input,
{
id: "email",
type: "email",
className: "mt-1 block w-full",
defaultValue: auth.user.email,
name: "email",
required: true,
autoComplete: "username",
placeholder: "Email address"
}
),
/* @__PURE__ */ jsx(
InputError,
{
className: "mt-2",
message: errors.email
}
)
] }),
mustVerifyEmail && auth.user.email_verified_at === null && /* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsxs("p", { className: "-mt-4 text-sm text-muted-foreground", children: [
"Your email address is unverified.",
" ",
/* @__PURE__ */ jsx(
Link,
{
href: send(),
as: "button",
className: "text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",
children: "Click here to resend the verification email."
}
)
] }),
status === "verification-link-sent" && /* @__PURE__ */ jsx("div", { className: "mt-2 text-sm font-medium text-green-600", children: "A new verification link has been sent to your email address." })
] }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
/* @__PURE__ */ jsx(
Button,
{
disabled: processing,
"data-test": "update-profile-button",
children: "Save"
}
),
/* @__PURE__ */ jsx(
Transition,
{
show: recentlySuccessful,
enter: "transition ease-in-out",
enterFrom: "opacity-0",
leave: "transition ease-in-out",
leaveTo: "opacity-0",
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-neutral-600", children: "Saved" })
}
)
] })
] })
}
)
] }),
/* @__PURE__ */ jsx(DeleteUser, {})
] })
] });
}
export {
Profile as default
};

View File

@@ -0,0 +1,199 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { q as queryParams, B as Button, l as login } from "./index-CY6fYws-.js";
import { Head, Form } from "@inertiajs/react";
import { LoaderCircle } from "lucide-react";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { T as TextLink } from "./text-link-ByYmiDlq.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "./app-logo-icon-kpljnLMz.js";
const create = (options) => ({
url: create.url(options),
method: "get"
});
create.definition = {
methods: ["get", "head"],
url: "/register"
};
create.url = (options) => {
return create.definition.url + queryParams(options);
};
create.get = (options) => ({
url: create.url(options),
method: "get"
});
create.head = (options) => ({
url: create.url(options),
method: "head"
});
const createForm = (options) => ({
action: create.url(options),
method: "get"
});
createForm.get = (options) => ({
action: create.url(options),
method: "get"
});
createForm.head = (options) => ({
action: create.url({
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
create.form = createForm;
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/register"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const RegisteredUserController = { store };
function Register() {
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: "Create an account",
description: "Enter your details below to create your account",
children: [
/* @__PURE__ */ jsx(Head, { title: "Register" }),
/* @__PURE__ */ jsx(
Form,
{
...RegisteredUserController.store.form(),
resetOnSuccess: ["password", "password_confirmation"],
disableWhileProcessing: true,
className: "flex flex-col gap-6",
children: ({ processing, errors }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-6", children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "name", children: "Name" }),
/* @__PURE__ */ jsx(
Input,
{
id: "name",
type: "text",
required: true,
autoFocus: true,
tabIndex: 1,
autoComplete: "name",
name: "name",
placeholder: "Full name"
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.name,
className: "mt-2"
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email address" }),
/* @__PURE__ */ jsx(
Input,
{
id: "email",
type: "email",
required: true,
tabIndex: 2,
autoComplete: "email",
name: "email",
placeholder: "email@example.com"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.email })
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password",
type: "password",
required: true,
tabIndex: 3,
autoComplete: "new-password",
name: "password",
placeholder: "Password"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.password })
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password_confirmation", children: "Confirm password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password_confirmation",
type: "password",
required: true,
tabIndex: 4,
autoComplete: "new-password",
name: "password_confirmation",
placeholder: "Confirm password"
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.password_confirmation
}
)
] }),
/* @__PURE__ */ jsxs(
Button,
{
type: "submit",
className: "mt-2 w-full",
tabIndex: 5,
"data-test": "register-user-button",
children: [
processing && /* @__PURE__ */ jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" }),
"Create account"
]
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "text-center text-sm text-muted-foreground", children: [
"Already have an account?",
" ",
/* @__PURE__ */ jsx(TextLink, { href: login(), tabIndex: 6, children: "Log in" })
] })
] })
}
)
]
}
);
}
export {
Register as default
};

View File

@@ -0,0 +1,185 @@
import { jsxs, jsx } from "react/jsx-runtime";
import { q as queryParams, a as applyUrlDefaults, B as Button } from "./index-CY6fYws-.js";
import { Head, Form } from "@inertiajs/react";
import { LoaderCircle } from "lucide-react";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-label";
import "./app-logo-icon-kpljnLMz.js";
const create = (args, options) => ({
url: create.url(args, options),
method: "get"
});
create.definition = {
methods: ["get", "head"],
url: "/reset-password/{token}"
};
create.url = (args, options) => {
if (typeof args === "string" || typeof args === "number") {
args = { token: args };
}
if (Array.isArray(args)) {
args = {
token: args[0]
};
}
args = applyUrlDefaults(args);
const parsedArgs = {
token: args.token
};
return create.definition.url.replace("{token}", parsedArgs.token.toString()).replace(/\/+$/, "") + queryParams(options);
};
create.get = (args, options) => ({
url: create.url(args, options),
method: "get"
});
create.head = (args, options) => ({
url: create.url(args, options),
method: "head"
});
const createForm = (args, options) => ({
action: create.url(args, options),
method: "get"
});
createForm.get = (args, options) => ({
action: create.url(args, options),
method: "get"
});
createForm.head = (args, options) => ({
action: create.url(args, {
[options?.mergeQuery ? "mergeQuery" : "query"]: {
_method: "HEAD",
...options?.query ?? options?.mergeQuery ?? {}
}
}),
method: "get"
});
create.form = createForm;
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/reset-password"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const NewPasswordController = { store };
function ResetPassword({ token, email }) {
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: "Reset password",
description: "Please enter your new password below",
children: [
/* @__PURE__ */ jsx(Head, { title: "Reset password" }),
/* @__PURE__ */ jsx(
Form,
{
...NewPasswordController.store.form(),
transform: (data) => ({ ...data, token, email }),
resetOnSuccess: ["password", "password_confirmation"],
children: ({ processing, errors }) => /* @__PURE__ */ jsxs("div", { className: "grid gap-6", children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email" }),
/* @__PURE__ */ jsx(
Input,
{
id: "email",
type: "email",
name: "email",
autoComplete: "email",
value: email,
className: "mt-1 block w-full",
readOnly: true
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.email,
className: "mt-2"
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password",
type: "password",
name: "password",
autoComplete: "new-password",
className: "mt-1 block w-full",
autoFocus: true,
placeholder: "Password"
}
),
/* @__PURE__ */ jsx(InputError, { message: errors.password })
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "password_confirmation", children: "Confirm password" }),
/* @__PURE__ */ jsx(
Input,
{
id: "password_confirmation",
type: "password",
name: "password_confirmation",
autoComplete: "new-password",
className: "mt-1 block w-full",
placeholder: "Confirm password"
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.password_confirmation,
className: "mt-2"
}
)
] }),
/* @__PURE__ */ jsxs(
Button,
{
type: "submit",
className: "mt-4 w-full",
disabled: processing,
"data-test": "reset-password-button",
children: [
processing && /* @__PURE__ */ jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" }),
"Reset password"
]
}
)
] })
}
)
]
}
);
}
export {
ResetPassword as default
};

View File

@@ -0,0 +1,137 @@
import { jsx, jsxs } from "react/jsx-runtime";
import * as SelectPrimitive from "@radix-ui/react-select";
import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react";
import { c as cn } from "./index-CY6fYws-.js";
function Select({
...props
}) {
return /* @__PURE__ */ jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
}
function SelectGroup({
...props
}) {
return /* @__PURE__ */ jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
}
function SelectValue({
...props
}) {
return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
}
function SelectTrigger({
className,
children,
...props
}) {
return /* @__PURE__ */ jsxs(
SelectPrimitive.Trigger,
{
"data-slot": "select-trigger",
className: cn(
"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&>span]:line-clamp-1",
className
),
...props,
children: [
children,
/* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
]
}
);
}
function SelectContent({
className,
children,
position = "popper",
...props
}) {
return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
SelectPrimitive.Content,
{
"data-slot": "select-content",
className: cn(
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md",
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
className
),
position,
...props,
children: [
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
/* @__PURE__ */ jsx(
SelectPrimitive.Viewport,
{
className: cn(
"p-1",
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
),
children
}
),
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
]
}
) });
}
function SelectItem({
className,
children,
...props
}) {
return /* @__PURE__ */ jsxs(
SelectPrimitive.Item,
{
"data-slot": "select-item",
className: cn(
"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
className
),
...props,
children: [
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
/* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
]
}
);
}
function SelectScrollUpButton({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SelectPrimitive.ScrollUpButton,
{
"data-slot": "select-scroll-up-button",
className: cn(
"flex cursor-default items-center justify-center py-1",
className
),
...props,
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
}
);
}
function SelectScrollDownButton({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SelectPrimitive.ScrollDownButton,
{
"data-slot": "select-scroll-down-button",
className: cn(
"flex cursor-default items-center justify-center py-1",
className
),
...props,
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
}
);
}
export {
Select as S,
SelectTrigger as a,
SelectValue as b,
SelectContent as c,
SelectItem as d,
SelectGroup as e
};

View File

@@ -0,0 +1,109 @@
import { jsx, jsxs } from "react/jsx-runtime";
import * as SheetPrimitive from "@radix-ui/react-dialog";
import { XIcon } from "lucide-react";
import { c as cn } from "./index-CY6fYws-.js";
function Sheet({ ...props }) {
return /* @__PURE__ */ jsx(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
}
function SheetTrigger({
...props
}) {
return /* @__PURE__ */ jsx(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
}
function SheetPortal({
...props
}) {
return /* @__PURE__ */ jsx(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
}
function SheetOverlay({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SheetPrimitive.Overlay,
{
"data-slot": "sheet-overlay",
className: cn(
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
className
),
...props
}
);
}
function SheetContent({
className,
children,
side = "right",
...props
}) {
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
/* @__PURE__ */ jsx(SheetOverlay, {}),
/* @__PURE__ */ jsxs(
SheetPrimitive.Content,
{
"data-slot": "sheet-content",
className: cn(
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
className
),
...props,
children: [
children,
/* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
/* @__PURE__ */ jsx(XIcon, { className: "size-4" }),
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
] })
]
}
)
] });
}
function SheetHeader({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "sheet-header",
className: cn("flex flex-col gap-1.5 p-4", className),
...props
}
);
}
function SheetTitle({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SheetPrimitive.Title,
{
"data-slot": "sheet-title",
className: cn("text-foreground font-semibold", className),
...props
}
);
}
function SheetDescription({
className,
...props
}) {
return /* @__PURE__ */ jsx(
SheetPrimitive.Description,
{
"data-slot": "sheet-description",
className: cn("text-muted-foreground text-sm", className),
...props
}
);
}
export {
Sheet as S,
SheetTrigger as a,
SheetContent as b,
SheetTitle as c,
SheetDescription as d,
SheetHeader as e
};

View File

@@ -0,0 +1,86 @@
import { jsx } from "react/jsx-runtime";
import { c as cn } from "./index-CY6fYws-.js";
function Table({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "table-container",
className: "relative w-full overflow-x-auto",
children: /* @__PURE__ */ jsx(
"table",
{
"data-slot": "table",
className: cn("w-full caption-bottom text-sm", className),
...props
}
)
}
);
}
function TableHeader({ className, ...props }) {
return /* @__PURE__ */ jsx(
"thead",
{
"data-slot": "table-header",
className: cn("[&_tr]:border-b", className),
...props
}
);
}
function TableBody({ className, ...props }) {
return /* @__PURE__ */ jsx(
"tbody",
{
"data-slot": "table-body",
className: cn("[&_tr:last-child]:border-0", className),
...props
}
);
}
function TableRow({ className, ...props }) {
return /* @__PURE__ */ jsx(
"tr",
{
"data-slot": "table-row",
className: cn(
"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
className
),
...props
}
);
}
function TableHead({ className, ...props }) {
return /* @__PURE__ */ jsx(
"th",
{
"data-slot": "table-head",
className: cn(
"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
className
),
...props
}
);
}
function TableCell({ className, ...props }) {
return /* @__PURE__ */ jsx(
"td",
{
"data-slot": "table-cell",
className: cn(
"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
className
),
...props
}
);
}
export {
Table as T,
TableHeader as a,
TableRow as b,
TableHead as c,
TableBody as d,
TableCell as e
};

View File

@@ -0,0 +1,67 @@
import { jsx } from "react/jsx-runtime";
import * as TabsPrimitive from "@radix-ui/react-tabs";
import { c as cn } from "./index-CY6fYws-.js";
function Tabs({
className,
...props
}) {
return /* @__PURE__ */ jsx(
TabsPrimitive.Root,
{
"data-slot": "tabs",
className: cn("flex flex-col gap-2", className),
...props
}
);
}
function TabsList({
className,
...props
}) {
return /* @__PURE__ */ jsx(
TabsPrimitive.List,
{
"data-slot": "tabs-list",
className: cn(
"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
className
),
...props
}
);
}
function TabsTrigger({
className,
...props
}) {
return /* @__PURE__ */ jsx(
TabsPrimitive.Trigger,
{
"data-slot": "tabs-trigger",
className: cn(
"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
className
),
...props
}
);
}
function TabsContent({
className,
...props
}) {
return /* @__PURE__ */ jsx(
TabsPrimitive.Content,
{
"data-slot": "tabs-content",
className: cn("flex-1 outline-none", className),
...props
}
);
}
export {
Tabs as T,
TabsList as a,
TabsTrigger as b,
TabsContent as c
};

View File

@@ -0,0 +1,70 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from "./table-DB-AS5w6.js";
import { A as AppLayout, i as index } from "./app-layout-BFyUFda2.js";
import { Head, Link } from "@inertiajs/react";
import { Pencil, Trash2 } from "lucide-react";
import "./index-CY6fYws-.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "react";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
function Testimonial({
testimonial
}) {
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
AppLayout,
{
breadcrumbs: [{ title: "Testimonial", href: index().url }],
children: [
/* @__PURE__ */ jsx(Head, { title: "Testimonials" }),
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-8 px-8 py-8", children: [
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsx("h1", { className: "text-xl font-semibold tracking-tight", children: "Testimonial" }) }),
/* @__PURE__ */ jsxs(Table, { children: [
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableHead, { className: "w-[80px]", children: "S.N." }),
/* @__PURE__ */ jsx(TableHead, { className: "w-48", children: "Image" }),
/* @__PURE__ */ jsx(TableHead, { children: "Name" }),
/* @__PURE__ */ jsx(TableHead, { children: "Location" }),
/* @__PURE__ */ jsx(TableHead, { children: "Description" }),
/* @__PURE__ */ jsx(TableHead, { className: "text-right", children: "Action" })
] }) }),
/* @__PURE__ */ jsx(TableBody, { children: testimonial.map((item, index2) => /* @__PURE__ */ jsxs(TableRow, { children: [
/* @__PURE__ */ jsx(TableCell, { className: "font-medium", children: index2 + 1 }),
/* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(
"img",
{
src: item.image,
alt: item.name,
className: "aspect-video w-24 rounded-md object-cover object-center"
}
) }),
/* @__PURE__ */ jsx(TableCell, { children: item.name }),
/* @__PURE__ */ jsx(TableCell, { children: item.location }),
/* @__PURE__ */ jsx(TableCell, { children: item.description }),
/* @__PURE__ */ jsx(TableCell, { className: "text-right", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-2", children: [
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(Pencil, { size: 18 }) }),
/* @__PURE__ */ jsx(Link, { href: "", children: /* @__PURE__ */ jsx(
Trash2,
{
size: 18,
color: "#D2042D"
}
) })
] }) })
] }, index2)) })
] })
] })
]
}
) });
}
export {
Testimonial as default
};

View File

@@ -0,0 +1,23 @@
import { jsx } from "react/jsx-runtime";
import { c as cn } from "./index-CY6fYws-.js";
import { Link } from "@inertiajs/react";
function TextLink({
className = "",
children,
...props
}) {
return /* @__PURE__ */ jsx(
Link,
{
className: cn(
"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",
className
),
...props,
children
}
);
}
export {
TextLink as T
};

View File

@@ -0,0 +1,18 @@
import { jsx } from "react/jsx-runtime";
import { c as cn } from "./index-CY6fYws-.js";
function Textarea({ className, ...props }) {
return /* @__PURE__ */ jsx(
"textarea",
{
"data-slot": "textarea",
className: cn(
"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
className
),
...props
}
);
}
export {
Textarea as T
};

View File

@@ -0,0 +1,664 @@
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
import { S as SettingsLayout, H as HeadingSmall } from "./layout-BQI5MpcL.js";
import { c as cn, B as Button } from "./index-CY6fYws-.js";
import { c as regenerateRecoveryCodes, d as confirm, b as show, e as disable, f as enable } from "./index-BHwjGIZD.js";
import { Form, Head } from "@inertiajs/react";
import { AlertCircleIcon, LockKeyhole, EyeOff, Eye, RefreshCw, ScanLine, Loader2, Check, Copy, ShieldBan, ShieldCheck } from "lucide-react";
import { useState, useRef, useCallback, useEffect, useMemo } from "react";
import { cva } from "class-variance-authority";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { D as Dialog, b as DialogContent, g as DialogHeader, c as DialogTitle, d as DialogDescription } from "./dialog-C3kXNAKa.js";
import { I as InputOTP, O as OTP_MAX_LENGTH, a as InputOTPGroup, b as InputOTPSlot, u as useTwoFactorAuth } from "./use-two-factor-auth-CT68eJCK.js";
import { REGEXP_ONLY_DIGITS } from "input-otp";
import { Slot } from "@radix-ui/react-slot";
import { A as AppLayout } from "./app-layout-BFyUFda2.js";
import "@radix-ui/react-separator";
import "./index-BuzAnds1.js";
import "./index-BRhO3_4E.js";
import "clsx";
import "tailwind-merge";
import "@radix-ui/react-dialog";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-tooltip";
import "@radix-ui/react-dropdown-menu";
import "@radix-ui/react-avatar";
import "./app-logo-icon-kpljnLMz.js";
function Card({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "card",
className: cn(
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
className
),
...props
}
);
}
function CardHeader({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "card-header",
className: cn("flex flex-col gap-1.5 px-6", className),
...props
}
);
}
function CardTitle({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "card-title",
className: cn("leading-none font-semibold", className),
...props
}
);
}
function CardDescription({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "card-description",
className: cn("text-muted-foreground text-sm", className),
...props
}
);
}
function CardContent({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "card-content",
className: cn("px-6", className),
...props
}
);
}
const alertVariants = cva(
"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
{
variants: {
variant: {
default: "bg-background text-foreground",
destructive: "text-destructive-foreground [&>svg]:text-current *:data-[slot=alert-description]:text-destructive-foreground/80"
}
},
defaultVariants: {
variant: "default"
}
}
);
function Alert({
className,
variant,
...props
}) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "alert",
role: "alert",
className: cn(alertVariants({ variant }), className),
...props
}
);
}
function AlertTitle({ className, ...props }) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "alert-title",
className: cn(
"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
className
),
...props
}
);
}
function AlertDescription({
className,
...props
}) {
return /* @__PURE__ */ jsx(
"div",
{
"data-slot": "alert-description",
className: cn(
"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
className
),
...props
}
);
}
function AlertError({
errors,
title
}) {
return /* @__PURE__ */ jsxs(Alert, { variant: "destructive", children: [
/* @__PURE__ */ jsx(AlertCircleIcon, {}),
/* @__PURE__ */ jsx(AlertTitle, { children: title || "Something went wrong." }),
/* @__PURE__ */ jsx(AlertDescription, { children: /* @__PURE__ */ jsx("ul", { className: "list-inside list-disc text-sm", children: Array.from(new Set(errors)).map((error, index) => /* @__PURE__ */ jsx("li", { children: error }, index)) }) })
] });
}
function TwoFactorRecoveryCodes({
recoveryCodesList,
fetchRecoveryCodes,
errors
}) {
const [codesAreVisible, setCodesAreVisible] = useState(false);
const codesSectionRef = useRef(null);
const canRegenerateCodes = recoveryCodesList.length > 0 && codesAreVisible;
const toggleCodesVisibility = useCallback(async () => {
if (!codesAreVisible && !recoveryCodesList.length) {
await fetchRecoveryCodes();
}
setCodesAreVisible(!codesAreVisible);
if (!codesAreVisible) {
setTimeout(() => {
codesSectionRef.current?.scrollIntoView({
behavior: "smooth",
block: "nearest"
});
});
}
}, [codesAreVisible, recoveryCodesList.length, fetchRecoveryCodes]);
useEffect(() => {
if (!recoveryCodesList.length) {
fetchRecoveryCodes();
}
}, [recoveryCodesList.length, fetchRecoveryCodes]);
const RecoveryCodeIconComponent = codesAreVisible ? EyeOff : Eye;
return /* @__PURE__ */ jsxs(Card, { children: [
/* @__PURE__ */ jsxs(CardHeader, { children: [
/* @__PURE__ */ jsxs(CardTitle, { className: "flex gap-3", children: [
/* @__PURE__ */ jsx(LockKeyhole, { className: "size-4", "aria-hidden": "true" }),
"2FA Recovery Codes"
] }),
/* @__PURE__ */ jsx(CardDescription, { children: "Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager." })
] }),
/* @__PURE__ */ jsxs(CardContent, { children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 select-none sm:flex-row sm:items-center sm:justify-between", children: [
/* @__PURE__ */ jsxs(
Button,
{
onClick: toggleCodesVisibility,
className: "w-fit",
"aria-expanded": codesAreVisible,
"aria-controls": "recovery-codes-section",
children: [
/* @__PURE__ */ jsx(
RecoveryCodeIconComponent,
{
className: "size-4",
"aria-hidden": "true"
}
),
codesAreVisible ? "Hide" : "View",
" Recovery Codes"
]
}
),
canRegenerateCodes && /* @__PURE__ */ jsx(
Form,
{
...regenerateRecoveryCodes.form(),
options: { preserveScroll: true },
onSuccess: fetchRecoveryCodes,
children: ({ processing }) => /* @__PURE__ */ jsxs(
Button,
{
variant: "secondary",
type: "submit",
disabled: processing,
"aria-describedby": "regenerate-warning",
children: [
/* @__PURE__ */ jsx(RefreshCw, {}),
" Regenerate Codes"
]
}
)
}
)
] }),
/* @__PURE__ */ jsx(
"div",
{
id: "recovery-codes-section",
className: `relative overflow-hidden transition-all duration-300 ${codesAreVisible ? "h-auto opacity-100" : "h-0 opacity-0"}`,
"aria-hidden": !codesAreVisible,
children: /* @__PURE__ */ jsx("div", { className: "mt-3 space-y-3", children: errors?.length ? /* @__PURE__ */ jsx(AlertError, { errors }) : /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx(
"div",
{
ref: codesSectionRef,
className: "grid gap-1 rounded-lg bg-muted p-4 font-mono text-sm",
role: "list",
"aria-label": "Recovery codes",
children: recoveryCodesList.length ? recoveryCodesList.map((code, index) => /* @__PURE__ */ jsx(
"div",
{
role: "listitem",
className: "select-text",
children: code
},
index
)) : /* @__PURE__ */ jsx(
"div",
{
className: "space-y-2",
"aria-label": "Loading recovery codes",
children: Array.from(
{ length: 8 },
(_, index) => /* @__PURE__ */ jsx(
"div",
{
className: "h-4 animate-pulse rounded bg-muted-foreground/20",
"aria-hidden": "true"
},
index
)
)
}
)
}
),
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground select-none", children: /* @__PURE__ */ jsxs("p", { id: "regenerate-warning", children: [
"Each recovery code can be used once to access your account and will be removed after use. If you need more, click",
" ",
/* @__PURE__ */ jsx("span", { className: "font-bold", children: "Regenerate Codes" }),
" ",
"above."
] }) })
] }) })
}
)
] })
] });
}
function useClipboard() {
const [copiedText, setCopiedText] = useState(null);
const copy = useCallback(async (text) => {
if (!navigator?.clipboard) {
console.warn("Clipboard not supported");
return false;
}
try {
await navigator.clipboard.writeText(text);
setCopiedText(text);
return true;
} catch (error) {
console.warn("Copy failed", error);
setCopiedText(null);
return false;
}
}, []);
return [copiedText, copy];
}
function GridScanIcon() {
return /* @__PURE__ */ jsx("div", { className: "mb-3 rounded-full border border-border bg-card p-0.5 shadow-sm", children: /* @__PURE__ */ jsxs("div", { className: "relative overflow-hidden rounded-full border border-border bg-muted p-2.5", children: [
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 grid grid-cols-5 opacity-50", children: Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsx(
"div",
{
className: "border-r border-border last:border-r-0"
},
`col-${i + 1}`
)) }),
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 grid grid-rows-5 opacity-50", children: Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsx(
"div",
{
className: "border-b border-border last:border-b-0"
},
`row-${i + 1}`
)) }),
/* @__PURE__ */ jsx(ScanLine, { className: "relative z-20 size-6 text-foreground" })
] }) });
}
function TwoFactorSetupStep({
qrCodeSvg,
manualSetupKey,
buttonText,
onNextStep,
errors
}) {
const [copiedText, copy] = useClipboard();
const IconComponent = copiedText === manualSetupKey ? Check : Copy;
return /* @__PURE__ */ jsx(Fragment, { children: errors?.length ? /* @__PURE__ */ jsx(AlertError, { errors }) : /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx("div", { className: "mx-auto flex max-w-md overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "mx-auto aspect-square w-64 rounded-lg border border-border", children: /* @__PURE__ */ jsx("div", { className: "z-10 flex h-full w-full items-center justify-center p-5", children: qrCodeSvg ? /* @__PURE__ */ jsx(
"div",
{
dangerouslySetInnerHTML: {
__html: qrCodeSvg
}
}
) : /* @__PURE__ */ jsx(Loader2, { className: "flex size-4 animate-spin" }) }) }) }),
/* @__PURE__ */ jsx("div", { className: "flex w-full space-x-5", children: /* @__PURE__ */ jsx(Button, { className: "w-full", onClick: onNextStep, children: buttonText }) }),
/* @__PURE__ */ jsxs("div", { className: "relative flex w-full items-center justify-center", children: [
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 top-1/2 h-px w-full bg-border" }),
/* @__PURE__ */ jsx("span", { className: "relative bg-card px-2 py-1", children: "or, enter the code manually" })
] }),
/* @__PURE__ */ jsx("div", { className: "flex w-full space-x-2", children: /* @__PURE__ */ jsx("div", { className: "flex w-full items-stretch overflow-hidden rounded-xl border border-border", children: !manualSetupKey ? /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center bg-muted p-3", children: /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin" }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx(
"input",
{
type: "text",
readOnly: true,
value: manualSetupKey,
className: "h-full w-full bg-background p-3 text-foreground outline-none"
}
),
/* @__PURE__ */ jsx(
"button",
{
onClick: () => copy(manualSetupKey),
className: "border-l border-border px-3 hover:bg-muted",
children: /* @__PURE__ */ jsx(IconComponent, { className: "w-4" })
}
)
] }) }) })
] }) });
}
function TwoFactorVerificationStep({
onClose,
onBack
}) {
const [code, setCode] = useState("");
const pinInputContainerRef = useRef(null);
useEffect(() => {
setTimeout(() => {
pinInputContainerRef.current?.querySelector("input")?.focus();
}, 0);
}, []);
return /* @__PURE__ */ jsx(
Form,
{
...confirm.form(),
onSuccess: () => onClose(),
resetOnError: true,
resetOnSuccess: true,
children: ({
processing,
errors
}) => /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
"div",
{
ref: pinInputContainerRef,
className: "relative w-full space-y-3",
children: [
/* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-center space-y-3 py-2", children: [
/* @__PURE__ */ jsx(
InputOTP,
{
id: "otp",
name: "code",
maxLength: OTP_MAX_LENGTH,
onChange: setCode,
disabled: processing,
pattern: REGEXP_ONLY_DIGITS,
children: /* @__PURE__ */ jsx(InputOTPGroup, { children: Array.from(
{ length: OTP_MAX_LENGTH },
(_, index) => /* @__PURE__ */ jsx(
InputOTPSlot,
{
index
},
index
)
) })
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors?.confirmTwoFactorAuthentication?.code
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "flex w-full space-x-5", children: [
/* @__PURE__ */ jsx(
Button,
{
type: "button",
variant: "outline",
className: "flex-1",
onClick: onBack,
disabled: processing,
children: "Back"
}
),
/* @__PURE__ */ jsx(
Button,
{
type: "submit",
className: "flex-1",
disabled: processing || code.length < OTP_MAX_LENGTH,
children: "Confirm"
}
)
] })
]
}
) })
}
);
}
function TwoFactorSetupModal({
isOpen,
onClose,
requiresConfirmation,
twoFactorEnabled,
qrCodeSvg,
manualSetupKey,
clearSetupData,
fetchSetupData,
errors
}) {
const [showVerificationStep, setShowVerificationStep] = useState(false);
const modalConfig = useMemo(() => {
if (twoFactorEnabled) {
return {
title: "Two-Factor Authentication Enabled",
description: "Two-factor authentication is now enabled. Scan the QR code or enter the setup key in your authenticator app.",
buttonText: "Close"
};
}
if (showVerificationStep) {
return {
title: "Verify Authentication Code",
description: "Enter the 6-digit code from your authenticator app",
buttonText: "Continue"
};
}
return {
title: "Enable Two-Factor Authentication",
description: "To finish enabling two-factor authentication, scan the QR code or enter the setup key in your authenticator app",
buttonText: "Continue"
};
}, [twoFactorEnabled, showVerificationStep]);
const handleModalNextStep = useCallback(() => {
if (requiresConfirmation) {
setShowVerificationStep(true);
return;
}
clearSetupData();
onClose();
}, [requiresConfirmation, clearSetupData, onClose]);
const resetModalState = useCallback(() => {
setShowVerificationStep(false);
if (twoFactorEnabled) {
clearSetupData();
}
}, [twoFactorEnabled, clearSetupData]);
useEffect(() => {
if (!isOpen) {
resetModalState();
return;
}
if (!qrCodeSvg) {
fetchSetupData();
}
}, [isOpen, qrCodeSvg, fetchSetupData, resetModalState]);
return /* @__PURE__ */ jsx(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "sm:max-w-md", children: [
/* @__PURE__ */ jsxs(DialogHeader, { className: "flex items-center justify-center", children: [
/* @__PURE__ */ jsx(GridScanIcon, {}),
/* @__PURE__ */ jsx(DialogTitle, { children: modalConfig.title }),
/* @__PURE__ */ jsx(DialogDescription, { className: "text-center", children: modalConfig.description })
] }),
/* @__PURE__ */ jsx("div", { className: "flex flex-col items-center space-y-5", children: showVerificationStep ? /* @__PURE__ */ jsx(
TwoFactorVerificationStep,
{
onClose,
onBack: () => setShowVerificationStep(false)
}
) : /* @__PURE__ */ jsx(
TwoFactorSetupStep,
{
qrCodeSvg,
manualSetupKey,
buttonText: modalConfig.buttonText,
onNextStep: handleModalNextStep,
errors
}
) })
] }) });
}
const badgeVariants = cva(
"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
{
variants: {
variant: {
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
}
},
defaultVariants: {
variant: "default"
}
}
);
function Badge({
className,
variant,
asChild = false,
...props
}) {
const Comp = asChild ? Slot : "span";
return /* @__PURE__ */ jsx(
Comp,
{
"data-slot": "badge",
className: cn(badgeVariants({ variant }), className),
...props
}
);
}
const breadcrumbs = [
{
title: "Two-Factor Authentication",
href: show.url()
}
];
function TwoFactor({
requiresConfirmation = false,
twoFactorEnabled = false
}) {
const {
qrCodeSvg,
hasSetupData,
manualSetupKey,
clearSetupData,
fetchSetupData,
recoveryCodesList,
fetchRecoveryCodes,
errors
} = useTwoFactorAuth();
const [showSetupModal, setShowSetupModal] = useState(false);
return /* @__PURE__ */ jsxs(AppLayout, { breadcrumbs, children: [
/* @__PURE__ */ jsx(Head, { title: "Two-Factor Authentication" }),
/* @__PURE__ */ jsx(SettingsLayout, { children: /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
/* @__PURE__ */ jsx(
HeadingSmall,
{
title: "Two-Factor Authentication",
description: "Manage your two-factor authentication settings"
}
),
twoFactorEnabled ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start justify-start space-y-4", children: [
/* @__PURE__ */ jsx(Badge, { variant: "default", children: "Enabled" }),
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "With two-factor authentication enabled, you will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone." }),
/* @__PURE__ */ jsx(
TwoFactorRecoveryCodes,
{
recoveryCodesList,
fetchRecoveryCodes,
errors
}
),
/* @__PURE__ */ jsx("div", { className: "relative inline", children: /* @__PURE__ */ jsx(Form, { ...disable.form(), children: ({ processing }) => /* @__PURE__ */ jsxs(
Button,
{
variant: "destructive",
type: "submit",
disabled: processing,
children: [
/* @__PURE__ */ jsx(ShieldBan, {}),
" Disable 2FA"
]
}
) }) })
] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start justify-start space-y-4", children: [
/* @__PURE__ */ jsx(Badge, { variant: "destructive", children: "Disabled" }),
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: "When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone." }),
/* @__PURE__ */ jsx("div", { children: hasSetupData ? /* @__PURE__ */ jsxs(
Button,
{
onClick: () => setShowSetupModal(true),
children: [
/* @__PURE__ */ jsx(ShieldCheck, {}),
"Continue Setup"
]
}
) : /* @__PURE__ */ jsx(
Form,
{
...enable.form(),
onSuccess: () => setShowSetupModal(true),
children: ({ processing }) => /* @__PURE__ */ jsxs(
Button,
{
type: "submit",
disabled: processing,
children: [
/* @__PURE__ */ jsx(ShieldCheck, {}),
"Enable 2FA"
]
}
)
}
) })
] }),
/* @__PURE__ */ jsx(
TwoFactorSetupModal,
{
isOpen: showSetupModal,
onClose: () => setShowSetupModal(false),
requiresConfirmation,
twoFactorEnabled,
qrCodeSvg,
manualSetupKey,
clearSetupData,
fetchSetupData,
errors
}
)
] }) })
] });
}
export {
TwoFactor as default
};

View File

@@ -0,0 +1,125 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { I as InputError } from "./input-error-Su2MkR0P.js";
import { B as Button } from "./index-CY6fYws-.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { I as InputOTP, O as OTP_MAX_LENGTH, a as InputOTPGroup, b as InputOTPSlot } from "./use-two-factor-auth-CT68eJCK.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import { s as store } from "./index-BHwjGIZD.js";
import { Head, Form } from "@inertiajs/react";
import { REGEXP_ONLY_DIGITS } from "input-otp";
import { useState, useMemo } from "react";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "lucide-react";
import "./app-logo-icon-kpljnLMz.js";
function TwoFactorChallenge() {
const [showRecoveryInput, setShowRecoveryInput] = useState(false);
const [code, setCode] = useState("");
const authConfigContent = useMemo(() => {
if (showRecoveryInput) {
return {
title: "Recovery Code",
description: "Please confirm access to your account by entering one of your emergency recovery codes.",
toggleText: "login using an authentication code"
};
}
return {
title: "Authentication Code",
description: "Enter the authentication code provided by your authenticator application.",
toggleText: "login using a recovery code"
};
}, [showRecoveryInput]);
const toggleRecoveryMode = (clearErrors) => {
setShowRecoveryInput(!showRecoveryInput);
clearErrors();
setCode("");
};
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: authConfigContent.title,
description: authConfigContent.description,
children: [
/* @__PURE__ */ jsx(Head, { title: "Two-Factor Authentication" }),
/* @__PURE__ */ jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsx(
Form,
{
...store.form(),
className: "space-y-4",
resetOnError: true,
resetOnSuccess: !showRecoveryInput,
children: ({ errors, processing, clearErrors }) => /* @__PURE__ */ jsxs(Fragment, { children: [
showRecoveryInput ? /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx(
Input,
{
name: "recovery_code",
type: "text",
placeholder: "Enter recovery code",
autoFocus: showRecoveryInput,
required: true
}
),
/* @__PURE__ */ jsx(
InputError,
{
message: errors.recovery_code
}
)
] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center space-y-3 text-center", children: [
/* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-center", children: /* @__PURE__ */ jsx(
InputOTP,
{
name: "code",
maxLength: OTP_MAX_LENGTH,
value: code,
onChange: (value) => setCode(value),
disabled: processing,
pattern: REGEXP_ONLY_DIGITS,
children: /* @__PURE__ */ jsx(InputOTPGroup, { children: Array.from(
{ length: OTP_MAX_LENGTH },
(_, index) => /* @__PURE__ */ jsx(
InputOTPSlot,
{
index
},
index
)
) })
}
) }),
/* @__PURE__ */ jsx(InputError, { message: errors.code })
] }),
/* @__PURE__ */ jsx(
Button,
{
type: "submit",
className: "w-full",
disabled: processing,
children: "Continue"
}
),
/* @__PURE__ */ jsxs("div", { className: "text-center text-sm text-muted-foreground", children: [
/* @__PURE__ */ jsx("span", { children: "or you can " }),
/* @__PURE__ */ jsx(
"button",
{
type: "button",
className: "cursor-pointer text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",
onClick: () => toggleRecoveryMode(clearErrors),
children: authConfigContent.toggleText
}
)
] })
] })
}
) })
]
}
);
}
export {
TwoFactorChallenge as default
};

View File

@@ -0,0 +1,132 @@
import { jsx, jsxs } from "react/jsx-runtime";
import * as React from "react";
import { useState, useMemo, useCallback } from "react";
import { OTPInput, OTPInputContext } from "input-otp";
import { Minus } from "lucide-react";
import { c as cn } from "./index-CY6fYws-.js";
import { q as qrCode, a as secretKey, r as recoveryCodes } from "./index-BHwjGIZD.js";
const InputOTP = React.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx(
OTPInput,
{
ref,
containerClassName: cn(
"flex items-center gap-2 has-[:disabled]:opacity-50",
containerClassName
),
className: cn("disabled:cursor-not-allowed", className),
...props
}
));
InputOTP.displayName = "InputOTP";
const InputOTPGroup = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center", className), ...props }));
InputOTPGroup.displayName = "InputOTPGroup";
const InputOTPSlot = React.forwardRef(({ index, className, ...props }, ref) => {
const inputOTPContext = React.useContext(OTPInputContext);
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
return /* @__PURE__ */ jsxs(
"div",
{
ref,
className: cn(
"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",
isActive && "z-10 ring-1 ring-ring",
className
),
...props,
children: [
char,
hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
]
}
);
});
InputOTPSlot.displayName = "InputOTPSlot";
const InputOTPSeparator = React.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx(Minus, {}) }));
InputOTPSeparator.displayName = "InputOTPSeparator";
const OTP_MAX_LENGTH = 6;
const fetchJson = async (url) => {
const response = await fetch(url, {
headers: { Accept: "application/json" }
});
if (!response.ok) {
throw new Error(`Failed to fetch: ${response.status}`);
}
return response.json();
};
const useTwoFactorAuth = () => {
const [qrCodeSvg, setQrCodeSvg] = useState(null);
const [manualSetupKey, setManualSetupKey] = useState(null);
const [recoveryCodesList, setRecoveryCodesList] = useState([]);
const [errors, setErrors] = useState([]);
const hasSetupData = useMemo(
() => qrCodeSvg !== null && manualSetupKey !== null,
[qrCodeSvg, manualSetupKey]
);
const fetchQrCode = useCallback(async () => {
try {
const { svg } = await fetchJson(qrCode.url());
setQrCodeSvg(svg);
} catch {
setErrors((prev) => [...prev, "Failed to fetch QR code"]);
setQrCodeSvg(null);
}
}, []);
const fetchSetupKey = useCallback(async () => {
try {
const { secretKey: key } = await fetchJson(
secretKey.url()
);
setManualSetupKey(key);
} catch {
setErrors((prev) => [...prev, "Failed to fetch a setup key"]);
setManualSetupKey(null);
}
}, []);
const clearErrors = useCallback(() => {
setErrors([]);
}, []);
const clearSetupData = useCallback(() => {
setManualSetupKey(null);
setQrCodeSvg(null);
clearErrors();
}, [clearErrors]);
const fetchRecoveryCodes = useCallback(async () => {
try {
clearErrors();
const codes = await fetchJson(recoveryCodes.url());
setRecoveryCodesList(codes);
} catch {
setErrors((prev) => [...prev, "Failed to fetch recovery codes"]);
setRecoveryCodesList([]);
}
}, [clearErrors]);
const fetchSetupData = useCallback(async () => {
try {
clearErrors();
await Promise.all([fetchQrCode(), fetchSetupKey()]);
} catch {
setQrCodeSvg(null);
setManualSetupKey(null);
}
}, [clearErrors, fetchQrCode, fetchSetupKey]);
return {
qrCodeSvg,
manualSetupKey,
recoveryCodesList,
hasSetupData,
errors,
clearErrors,
clearSetupData,
fetchQrCode,
fetchSetupKey,
fetchSetupData,
fetchRecoveryCodes
};
};
export {
InputOTP as I,
OTP_MAX_LENGTH as O,
InputOTPGroup as a,
InputOTPSlot as b,
useTwoFactorAuth as u
};

View File

@@ -0,0 +1,73 @@
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { q as queryParams, B as Button, b as logout } from "./index-CY6fYws-.js";
import { Head, Form } from "@inertiajs/react";
import { LoaderCircle } from "lucide-react";
import { T as TextLink } from "./text-link-ByYmiDlq.js";
import { A as AuthLayout } from "./auth-layout-iyjWmxzQ.js";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "./app-logo-icon-kpljnLMz.js";
const store = (options) => ({
url: store.url(options),
method: "post"
});
store.definition = {
methods: ["post"],
url: "/email/verification-notification"
};
store.url = (options) => {
return store.definition.url + queryParams(options);
};
store.post = (options) => ({
url: store.url(options),
method: "post"
});
const storeForm = (options) => ({
action: store.url(options),
method: "post"
});
storeForm.post = (options) => ({
action: store.url(options),
method: "post"
});
store.form = storeForm;
const EmailVerificationNotificationController = { store };
function VerifyEmail({ status }) {
return /* @__PURE__ */ jsxs(
AuthLayout,
{
title: "Verify email",
description: "Please verify your email address by clicking on the link we just emailed to you.",
children: [
/* @__PURE__ */ jsx(Head, { title: "Email verification" }),
status === "verification-link-sent" && /* @__PURE__ */ jsx("div", { className: "mb-4 text-center text-sm font-medium text-green-600", children: "A new verification link has been sent to the email address you provided during registration." }),
/* @__PURE__ */ jsx(
Form,
{
...EmailVerificationNotificationController.store.form(),
className: "space-y-6 text-center",
children: ({ processing }) => /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs(Button, { disabled: processing, variant: "secondary", children: [
processing && /* @__PURE__ */ jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" }),
"Resend verification email"
] }),
/* @__PURE__ */ jsx(
TextLink,
{
href: logout(),
className: "mx-auto block text-sm",
children: "Log out"
}
)
] })
}
)
]
}
);
}
export {
VerifyEmail as default
};

View File

@@ -0,0 +1,385 @@
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
import { B as Button, e as about, f as artOfWeaving } from "./index-CY6fYws-.js";
import { u as useTranslations, i as index, L as Layout } from "./layout-toNsB0Jp.js";
import { Link, useForm, Head } from "@inertiajs/react";
import { MoveRightIcon, Star, MoveRight } from "lucide-react";
import { Navigation, Pagination } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import { D as Dialog, a as DialogTrigger, b as DialogContent, g as DialogHeader, c as DialogTitle, d as DialogDescription } from "./dialog-C3kXNAKa.js";
import { I as Input } from "./input-DfkIsvXR.js";
import { L as Label } from "./label-DrpjkvJN.js";
import { T as Textarea } from "./textarea-CcuSk8nN.js";
import FilePondPluginImageExifOrientation from "filepond-plugin-image-exif-orientation";
import FilePondPluginImagePreview from "filepond-plugin-image-preview";
/* empty css */
import { registerPlugin, FilePond } from "react-filepond";
import { useState, useEffect } from "react";
import { toast } from "sonner";
import "@radix-ui/react-slot";
import "class-variance-authority";
import "clsx";
import "tailwind-merge";
import "@icons-pack/react-simple-icons";
import "./select-CsRyyQUa.js";
import "@radix-ui/react-select";
import "./sheet-Bq2cyJmx.js";
import "@radix-ui/react-dialog";
import "@radix-ui/react-label";
function SwiperCarousel({
item
}) {
const { t } = useTranslations();
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
"div",
{
className: "relative mx-auto max-w-screen-2xl overflow-clip",
id: "hero_swiper",
children: [
/* @__PURE__ */ jsx(
Swiper,
{
slidesPerView: 1,
loop: true,
autoplay: {
delay: 1500
},
className: "w-full",
navigation: true,
modules: [Navigation],
children: item.map((e) => /* @__PURE__ */ jsx(SwiperSlide, { className: "relative !w-full overflow-clip", children: /* @__PURE__ */ jsx(
"img",
{
src: e.image_url,
alt: e.alt,
className: "mx-auto aspect-[16/6.5] h-full !w-full max-w-screen-2xl object-cover object-center max-sm:aspect-video"
}
) }))
}
),
/* @__PURE__ */ jsxs("div", { className: "absolute bottom-7 left-12 z-50 flex w-md flex-col gap-6 rounded-lg bg-[#FFF5F1]/80 px-12 py-6 font-serif", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("h1", { className: "text-3xl font-medium max-sm:text-lg", children: t("pages.home.banner.title") }),
/* @__PURE__ */ jsx("p", { className: "text-xl leading-tight max-sm:text-sm", children: t("pages.home.banner.subTitle") })
] }),
/* @__PURE__ */ jsx(Link, { href: index.product().url, children: /* @__PURE__ */ jsxs(
Button,
{
variant: "secondary",
size: "lg",
className: "cursor-pointer border border-primary bg-transparent text-lg ring-primary",
children: [
t("pages.home.banner.button"),
" ",
/* @__PURE__ */ jsx(MoveRightIcon, {})
]
}
) })
] })
]
}
) });
}
function Testimonial({
testimonial
}) {
const [file, setFile] = useState(null);
const [open, setOpen] = useState(false);
const { data, setData, post, processing, errors } = useForm({
name: "",
location: "",
description: "",
image: null
});
registerPlugin(
FilePondPluginImageExifOrientation,
FilePondPluginImagePreview
);
useEffect(() => {
if (file) {
setData("image", file.file);
}
}, [file, setData]);
const handleSubmit = (e) => {
e.preventDefault();
post("/testimonial", {
// forceFormData: true,
onSuccess: () => {
toast.success("Testimonial successfully uploaded!");
setOpen(false);
setFile(null);
setData({
name: "",
location: "",
description: "",
image: null
});
}
});
};
const { t } = useTranslations();
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("section", { className: "mx-auto flex max-w-screen-2xl flex-col items-center gap-12 px-16 py-12 max-sm:px-8", children: [
/* @__PURE__ */ jsx("h4", { className: "text-center font-serif text-4xl font-medium", children: t("pages.home.sections.testimonial.title") }),
/* @__PURE__ */ jsx(
"div",
{
className: "relative max-w-7xl overflow-clip max-sm:max-w-sm",
id: "testimonial",
children: /* @__PURE__ */ jsx(
Swiper,
{
spaceBetween: 16,
slidesPerView: 4,
breakpoints: {
432: {
slidesPerView: 2,
spaceBetween: 8
},
768: {
slidesPerView: 3,
spaceBetween: 8
},
1024: {
slidesPerView: 4,
spaceBetween: 16
}
},
loop: true,
autoplay: {
delay: 1500
},
className: "w-full",
pagination: true,
modules: [Pagination],
children: testimonial.map((review) => /* @__PURE__ */ jsx(SwiperSlide, { className: "relative overflow-clip", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 rounded-lg border border-gray-300 px-6 py-6 text-center", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx(
"img",
{
src: review.image,
alt: review.name,
className: "mb-4 aspect-video rounded-md object-cover object-center"
}
),
/* @__PURE__ */ jsx("p", { className: "text-lg font-bold", children: review.name }),
/* @__PURE__ */ jsx("p", { className: "text-sm text-gray-500", children: review.location })
] }),
/* @__PURE__ */ jsx("p", { className: "text-sm text-gray-800", children: review.description }),
/* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
/* @__PURE__ */ jsx(Star, { size: 16, color: "#EDC001" }),
/* @__PURE__ */ jsx(Star, { size: 16, color: "#EDC001" }),
/* @__PURE__ */ jsx(Star, { size: 16, color: "#EDC001" }),
/* @__PURE__ */ jsx(Star, { size: 16, color: "#EDC001" }),
/* @__PURE__ */ jsx(Star, { size: 16, color: "#EDC001" })
] })
] }) }))
}
)
}
),
/* @__PURE__ */ jsxs(Dialog, { open, onOpenChange: setOpen, children: [
/* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Button, { className: "cursor-pointer", children: t("pages.home.sections.testimonial.button") }) }),
/* @__PURE__ */ jsx(DialogContent, { className: "!max-w-3xl", children: /* @__PURE__ */ jsxs(DialogHeader, { children: [
/* @__PURE__ */ jsx(DialogTitle, { children: "Give your testimonial" }),
/* @__PURE__ */ jsx(DialogDescription, {}),
/* @__PURE__ */ jsxs(
"form",
{
className: "grid gap-4",
onSubmit: handleSubmit,
method: "POST",
children: [
/* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "name", children: "Name" }),
/* @__PURE__ */ jsx(
Input,
{
id: "name",
name: "name",
placeholder: "Enter your name",
value: data.name,
onChange: (e) => setData("name", e.target.value)
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "company", children: "Location" }),
/* @__PURE__ */ jsx(
Input,
{
id: "company",
name: "location",
placeholder: "Enter you location (e.g. Private Company / Country Name)",
value: data.location,
onChange: (e) => setData("location", e.target.value)
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
/* @__PURE__ */ jsx(Label, { htmlFor: "review", children: "Description" }),
/* @__PURE__ */ jsx(
Textarea,
{
id: "review",
name: "review",
cols: 20,
placeholder: "Write your review...",
value: data.description,
onChange: (e) => setData(
"description",
e.target.value
)
}
)
] }),
/* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
/* @__PURE__ */ jsx(Label, { children: "Image" }),
/* @__PURE__ */ jsx(
FilePond,
{
files: file ? [file] : [],
onupdatefiles: (fileItems) => {
setFile(fileItems[0] || null);
},
allowMultiple: false,
maxFiles: 1,
name: "image",
instantUpload: false,
storeAsFile: true,
labelIdle: 'Drag & Drop your image or <span class="filepond--label-action">Browse</span>'
}
),
errors.image && /* @__PURE__ */ jsx("span", { className: "text-red-600", children: errors.image })
] }),
/* @__PURE__ */ jsx(
Button,
{
type: "submit",
disabled: processing,
className: "cursor-pointer",
children: processing ? "Submitting..." : "Submit Now"
}
)
]
}
)
] }) })
] })
] }) });
}
const artofWeaving = "/build/assets/IMG_1301-B4CIh8ih.jpg";
const kaleenCarpet = "/build/assets/IMG_3401-C-Qu3Vp9.jpg";
const sooryaCarpet = "/build/assets/sci%20trad%2031-B2acD_xa.jpg";
function Welcome({
data
}) {
const { t } = useTranslations();
return /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsxs(Head, { title: "Premium Hand Knotted Carpets in Nepal", children: [
/* @__PURE__ */ jsx("link", { rel: "preconnect", href: "https://fonts.bunny.net" }),
/* @__PURE__ */ jsx(
"link",
{
href: "https://fonts.bunny.net/css?family=instrument-sans:400,500,600",
rel: "stylesheet"
}
),
/* @__PURE__ */ jsx(
"meta",
{
name: "description",
content: "Experience the finest hand-knotted carpets in Nepal with Soorya Carpet. Each piece is crafted by skilled artisans to deliver unmatched quality, luxury, and timeless design."
}
)
] }),
/* @__PURE__ */ jsx(Layout, { children: /* @__PURE__ */ jsxs("div", { children: [
/* @__PURE__ */ jsx(SwiperCarousel, { item: data?.carousel }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto grid max-w-screen-2xl grid-cols-2 gap-20 px-16 py-12", children: [
/* @__PURE__ */ jsx(
"img",
{
src: sooryaCarpet,
alt: "Soorya Carpet",
className: "aspect-video rounded-lg object-cover object-center"
}
),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("h2", { className: "font-serif text-3xl font-medium", children: t("pages.home.sections.first.title") }),
/* @__PURE__ */ jsx("p", { className: "text-gray-500", children: t("pages.home.sections.first.desc") })
] }),
/* @__PURE__ */ jsx(Link, { href: about(), children: /* @__PURE__ */ jsxs(
Button,
{
variant: "outline",
className: "w-fit cursor-pointer border border-primary bg-transparent font-serif ring-primary",
children: [
t("pages.home.sections.first.button"),
" ",
/* @__PURE__ */ jsx(MoveRight, {})
]
}
) })
] })
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto grid max-w-screen-2xl grid-cols-2 gap-20 px-16 py-12", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("h3", { className: "font-serif text-3xl font-medium", children: t("pages.home.sections.second.title") }),
/* @__PURE__ */ jsx("p", { className: "text-gray-500", children: t("pages.home.sections.second.desc") })
] }),
/* @__PURE__ */ jsx(Link, { href: about(), children: /* @__PURE__ */ jsxs(
Button,
{
variant: "outline",
className: "w-fit cursor-pointer border border-primary bg-transparent font-serif ring-primary",
children: [
t("pages.home.sections.second.button"),
/* @__PURE__ */ jsx(MoveRight, {})
]
}
) })
] }),
/* @__PURE__ */ jsx(
"img",
{
src: kaleenCarpet,
alt: "Kaleen Carpet",
className: "aspect-video rounded-lg object-cover object-center"
}
)
] }),
/* @__PURE__ */ jsxs("section", { className: "mx-auto grid max-w-screen-2xl grid-cols-2 gap-20 px-16 py-12", children: [
/* @__PURE__ */ jsx(
"img",
{
src: artofWeaving,
alt: "Art of Weaving",
className: "aspect-video rounded-lg object-cover object-center"
}
),
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
/* @__PURE__ */ jsx("h2", { className: "font-serif text-3xl font-medium", children: t("pages.home.sections.third.title") }),
/* @__PURE__ */ jsx("p", { className: "text-gray-500", children: t("pages.home.sections.third.desc") })
] }),
/* @__PURE__ */ jsx(Link, { href: artOfWeaving(), children: /* @__PURE__ */ jsxs(
Button,
{
variant: "outline",
className: "w-fit cursor-pointer border border-primary bg-transparent font-serif ring-primary",
children: [
t("pages.home.sections.third.button"),
" ",
/* @__PURE__ */ jsx(MoveRight, {})
]
}
) })
] })
] }),
/* @__PURE__ */ jsx(Testimonial, { testimonial: data?.testimonial })
] }) })
] });
}
export {
Welcome as default
};

View File

@@ -0,0 +1,531 @@
{
"node_modules/laravel-vite-plugin/inertia-helpers/index.js": [],
"node_modules/swiper/modules/navigation.css": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"node_modules/swiper/modules/pagination.css": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"node_modules/swiper/swiper.css": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/assets/img/Bespoke/Ree 6.jpg": [
"/build/assets/faq-pz_F0yUl.js",
"/build/assets/bes 5-BwicfiFA.jpg",
"/build/assets/Ree 6-CXyPf4sr.jpg",
"/build/assets/Shrek-HrZ6bJMT.jpg",
"/build/assets/Swarovsky embedded wall hang-CEzO-m5f.jpg"
],
"resources/assets/img/Bespoke/Shrek.jpg": [
"/build/assets/faq-pz_F0yUl.js",
"/build/assets/bes 5-BwicfiFA.jpg",
"/build/assets/Ree 6-CXyPf4sr.jpg",
"/build/assets/Shrek-HrZ6bJMT.jpg",
"/build/assets/Swarovsky embedded wall hang-CEzO-m5f.jpg"
],
"resources/assets/img/Bespoke/Swarovsky embedded wall hang.jpg": [
"/build/assets/faq-pz_F0yUl.js",
"/build/assets/bes 5-BwicfiFA.jpg",
"/build/assets/Ree 6-CXyPf4sr.jpg",
"/build/assets/Shrek-HrZ6bJMT.jpg",
"/build/assets/Swarovsky embedded wall hang-CEzO-m5f.jpg"
],
"resources/assets/img/Bespoke/bes 5.jpg": [
"/build/assets/faq-pz_F0yUl.js",
"/build/assets/bes 5-BwicfiFA.jpg",
"/build/assets/Ree 6-CXyPf4sr.jpg",
"/build/assets/Shrek-HrZ6bJMT.jpg",
"/build/assets/Swarovsky embedded wall hang-CEzO-m5f.jpg"
],
"resources/assets/img/about/kaleen.jpg": [
"/build/assets/about-Bpe9pve7.js",
"/build/assets/kaleen-D3tdUBUw.jpg",
"/build/assets/sci trad 8-DiNu6GWn.jpg"
],
"resources/assets/img/about/ns.gif": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/assets/img/about/oko.gif": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/assets/img/carpet/IMG_1301.jpg": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/assets/img/carpet/IMG_3401.jpg": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/assets/img/carpet/sci trad 31.jpg": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/assets/img/logo/soorya.png": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/assets/img/material/silk balls.jpg": [
"/build/assets/art-C_czZZ6v.js",
"/build/assets/silk balls-DWY7AS8B.jpg",
"/build/assets/silk yarn-CqpV2kWc.jpg",
"/build/assets/wool balls-DG1FtOmh.jpg",
"/build/assets/wool yarn-BKbNSfod.jpg",
"/build/assets/IMG_2719-CBS9fSAo.jpg"
],
"resources/assets/img/material/silk yarn.jpg": [
"/build/assets/art-C_czZZ6v.js",
"/build/assets/silk balls-DWY7AS8B.jpg",
"/build/assets/silk yarn-CqpV2kWc.jpg",
"/build/assets/wool balls-DG1FtOmh.jpg",
"/build/assets/wool yarn-BKbNSfod.jpg",
"/build/assets/IMG_2719-CBS9fSAo.jpg"
],
"resources/assets/img/material/wool balls.jpg": [
"/build/assets/art-C_czZZ6v.js",
"/build/assets/silk balls-DWY7AS8B.jpg",
"/build/assets/silk yarn-CqpV2kWc.jpg",
"/build/assets/wool balls-DG1FtOmh.jpg",
"/build/assets/wool yarn-BKbNSfod.jpg",
"/build/assets/IMG_2719-CBS9fSAo.jpg"
],
"resources/assets/img/material/wool yarn.jpg": [
"/build/assets/art-C_czZZ6v.js",
"/build/assets/silk balls-DWY7AS8B.jpg",
"/build/assets/silk yarn-CqpV2kWc.jpg",
"/build/assets/wool balls-DG1FtOmh.jpg",
"/build/assets/wool yarn-BKbNSfod.jpg",
"/build/assets/IMG_2719-CBS9fSAo.jpg"
],
"resources/assets/img/production/IMG_2719.jpg": [
"/build/assets/art-C_czZZ6v.js",
"/build/assets/silk balls-DWY7AS8B.jpg",
"/build/assets/silk yarn-CqpV2kWc.jpg",
"/build/assets/wool balls-DG1FtOmh.jpg",
"/build/assets/wool yarn-BKbNSfod.jpg",
"/build/assets/IMG_2719-CBS9fSAo.jpg"
],
"resources/assets/img/products/color swatches.jpg": [
"/build/assets/bespoke-Bov4UVda.js",
"/build/assets/color swatches-Dl8_1uRD.jpg"
],
"resources/assets/img/products/sci trad 8.jpg": [
"/build/assets/about-Bpe9pve7.js",
"/build/assets/kaleen-D3tdUBUw.jpg",
"/build/assets/sci trad 8-DiNu6GWn.jpg"
],
"resources/js/actions/App/Http/Controllers/Auth/AuthenticatedSessionController.ts": [
"/build/assets/login-Bx7GyWNN.js"
],
"resources/js/actions/App/Http/Controllers/Auth/EmailVerificationNotificationController.ts": [
"/build/assets/verify-email-C6dGXcHB.js"
],
"resources/js/actions/App/Http/Controllers/Auth/NewPasswordController.ts": [
"/build/assets/reset-password-yPQQhFaB.js"
],
"resources/js/actions/App/Http/Controllers/Auth/PasswordResetLinkController.ts": [
"/build/assets/forgot-password-BNiMrYQb.js"
],
"resources/js/actions/App/Http/Controllers/Auth/RegisteredUserController.ts": [
"/build/assets/register-5D2-Zto1.js"
],
"resources/js/actions/App/Http/Controllers/Settings/PasswordController.ts": [
"/build/assets/password-5nAC6NdB.js"
],
"resources/js/actions/App/Http/Controllers/Settings/ProfileController.ts": [
"/build/assets/profile-0AslOX4t.js"
],
"resources/js/components/alert-error.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/components/app-content.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/app-logo-icon.tsx": [
"/build/assets/app-logo-icon-kpljnLMz.js"
],
"resources/js/components/app-logo.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/app-shell.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/app-sidebar-header.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/app-sidebar.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/appearance-tabs.tsx": [
"/build/assets/appearance-Bfpl1eM5.js"
],
"resources/js/components/breadcrumbs.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/delete-user.tsx": [
"/build/assets/profile-0AslOX4t.js"
],
"resources/js/components/heading-small.tsx": [
"/build/assets/layout-BQI5MpcL.js"
],
"resources/js/components/heading.tsx": [
"/build/assets/layout-BQI5MpcL.js"
],
"resources/js/components/input-error.tsx": [
"/build/assets/input-error-Su2MkR0P.js"
],
"resources/js/components/layout/Footer.tsx": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/js/components/layout/Navbar.tsx": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/js/components/nav-main.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/nav-user.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/pages/Home/Swiper.tsx": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/js/components/pages/Home/Testimonial.tsx": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/js/components/text-link.tsx": [
"/build/assets/text-link-ByYmiDlq.js"
],
"resources/js/components/two-factor-recovery-codes.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/components/two-factor-setup-modal.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/components/ui/accordion.tsx": [
"/build/assets/faq-pz_F0yUl.js",
"/build/assets/bes 5-BwicfiFA.jpg",
"/build/assets/Ree 6-CXyPf4sr.jpg",
"/build/assets/Shrek-HrZ6bJMT.jpg",
"/build/assets/Swarovsky embedded wall hang-CEzO-m5f.jpg"
],
"resources/js/components/ui/alert.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/components/ui/avatar.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/ui/badge.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/components/ui/breadcrumb.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/ui/button.tsx": [
"/build/assets/index-CY6fYws-.js"
],
"resources/js/components/ui/card.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/components/ui/checkbox.tsx": [
"/build/assets/login-Bx7GyWNN.js"
],
"resources/js/components/ui/dialog.tsx": [
"/build/assets/dialog-C3kXNAKa.js"
],
"resources/js/components/ui/dropdown-menu.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/ui/input-otp.tsx": [
"/build/assets/use-two-factor-auth-CT68eJCK.js"
],
"resources/js/components/ui/input.tsx": [
"/build/assets/input-DfkIsvXR.js"
],
"resources/js/components/ui/label.tsx": [
"/build/assets/label-DrpjkvJN.js"
],
"resources/js/components/ui/placeholder-pattern.tsx": [
"/build/assets/dashboard-CbiUEmKd.js"
],
"resources/js/components/ui/select.tsx": [
"/build/assets/select-CsRyyQUa.js"
],
"resources/js/components/ui/separator.tsx": [
"/build/assets/layout-BQI5MpcL.js"
],
"resources/js/components/ui/sheet.tsx": [
"/build/assets/sheet-Bq2cyJmx.js"
],
"resources/js/components/ui/sidebar.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/ui/table.tsx": [
"/build/assets/table-DB-AS5w6.js"
],
"resources/js/components/ui/tabs.tsx": [
"/build/assets/tabs-C0o9riYx.js"
],
"resources/js/components/ui/textarea.tsx": [
"/build/assets/textarea-CcuSk8nN.js"
],
"resources/js/components/ui/tooltip.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/user-info.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/components/user-menu-content.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/hooks/use-appearance.tsx": [
"/build/assets/appearance-Bfpl1eM5.js"
],
"resources/js/hooks/use-clipboard.ts": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/hooks/use-initials.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/hooks/use-mobile-navigation.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/hooks/use-mobile.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/hooks/use-two-factor-auth.ts": [
"/build/assets/use-two-factor-auth-CT68eJCK.js"
],
"resources/js/layouts/app-layout.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/layouts/app/app-sidebar-layout.tsx": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/layouts/auth-layout.tsx": [
"/build/assets/auth-layout-iyjWmxzQ.js"
],
"resources/js/layouts/auth/auth-simple-layout.tsx": [
"/build/assets/auth-layout-iyjWmxzQ.js"
],
"resources/js/layouts/client/layout.tsx": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/js/layouts/settings/layout.tsx": [
"/build/assets/layout-BQI5MpcL.js"
],
"resources/js/lib/utils.ts": [
"/build/assets/index-CY6fYws-.js"
],
"resources/js/pages/about.tsx": [
"/build/assets/about-Bpe9pve7.js",
"/build/assets/kaleen-D3tdUBUw.jpg",
"/build/assets/sci trad 8-DiNu6GWn.jpg"
],
"resources/js/pages/art.tsx": [
"/build/assets/art-C_czZZ6v.js",
"/build/assets/silk balls-DWY7AS8B.jpg",
"/build/assets/silk yarn-CqpV2kWc.jpg",
"/build/assets/wool balls-DG1FtOmh.jpg",
"/build/assets/wool yarn-BKbNSfod.jpg",
"/build/assets/IMG_2719-CBS9fSAo.jpg"
],
"resources/js/pages/auth/confirm-password.tsx": [
"/build/assets/confirm-password-yJ2scxPz.js"
],
"resources/js/pages/auth/forgot-password.tsx": [
"/build/assets/forgot-password-BNiMrYQb.js"
],
"resources/js/pages/auth/login.tsx": [
"/build/assets/login-Bx7GyWNN.js"
],
"resources/js/pages/auth/register.tsx": [
"/build/assets/register-5D2-Zto1.js"
],
"resources/js/pages/auth/reset-password.tsx": [
"/build/assets/reset-password-yPQQhFaB.js"
],
"resources/js/pages/auth/two-factor-challenge.tsx": [
"/build/assets/two-factor-challenge-C3nZjMy6.js"
],
"resources/js/pages/auth/verify-email.tsx": [
"/build/assets/verify-email-C6dGXcHB.js"
],
"resources/js/pages/bespoke.tsx": [
"/build/assets/bespoke-Bov4UVda.js",
"/build/assets/color swatches-Dl8_1uRD.jpg"
],
"resources/js/pages/contact.tsx": [
"/build/assets/contact-DiSMu-mk.js"
],
"resources/js/pages/dashboard.tsx": [
"/build/assets/dashboard-CbiUEmKd.js"
],
"resources/js/pages/dashboard/carousel/add.tsx": [
"/build/assets/add-S6fabe2O.js",
"/build/assets/filepond-BjJCD9wJ.css"
],
"resources/js/pages/dashboard/carousel/carousel.tsx": [
"/build/assets/carousel-BH5ls6c-.js"
],
"resources/js/pages/dashboard/faq/add.tsx": [
"/build/assets/add-BhcrNqMR.js",
"/build/assets/filepond-BjJCD9wJ.css"
],
"resources/js/pages/dashboard/faq/index.tsx": [
"/build/assets/index-OpaYcuxi.js"
],
"resources/js/pages/dashboard/products/add.tsx": [
"/build/assets/add-CPccOhjJ.js",
"/build/assets/filepond-BjJCD9wJ.css"
],
"resources/js/pages/dashboard/products/edit.tsx": [
"/build/assets/edit-l0sNRNKZ.js"
],
"resources/js/pages/dashboard/products/index.tsx": [
"/build/assets/index-C7ejuoa3.js"
],
"resources/js/pages/dashboard/testimonial.tsx": [
"/build/assets/testimonial-B1EWgUPO.js"
],
"resources/js/pages/faq.tsx": [
"/build/assets/faq-pz_F0yUl.js",
"/build/assets/bes 5-BwicfiFA.jpg",
"/build/assets/Ree 6-CXyPf4sr.jpg",
"/build/assets/Shrek-HrZ6bJMT.jpg",
"/build/assets/Swarovsky embedded wall hang-CEzO-m5f.jpg"
],
"resources/js/pages/product.tsx": [
"/build/assets/product-DH6XS18R.js"
],
"resources/js/pages/settings/appearance.tsx": [
"/build/assets/appearance-Bfpl1eM5.js"
],
"resources/js/pages/settings/password.tsx": [
"/build/assets/password-5nAC6NdB.js"
],
"resources/js/pages/settings/profile.tsx": [
"/build/assets/profile-0AslOX4t.js"
],
"resources/js/pages/settings/two-factor.tsx": [
"/build/assets/two-factor-DaA3_KAg.js"
],
"resources/js/pages/welcome.tsx": [
"/build/assets/welcome-C5bPUp-g.js",
"/build/assets/welcome-uGqyt-El.css",
"/build/assets/filepond-BjJCD9wJ.css",
"/build/assets/IMG_1301-B4CIh8ih.jpg",
"/build/assets/IMG_3401-C-Qu3Vp9.jpg",
"/build/assets/sci trad 31-B2acD_xa.jpg"
],
"resources/js/routes/appearance/index.ts": [
"/build/assets/layout-BQI5MpcL.js"
],
"resources/js/routes/dashboard/carousel/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/dashboard/faq/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/dashboard/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/dashboard/product/add/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/dashboard/product/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/index.ts": [
"/build/assets/index-CY6fYws-.js"
],
"resources/js/routes/index/index.ts": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/js/routes/password/confirm/index.ts": [
"/build/assets/index-BRhO3_4E.js"
],
"resources/js/routes/password/index.ts": [
"/build/assets/index-BuzAnds1.js"
],
"resources/js/routes/profile/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/testimonial/index.ts": [
"/build/assets/app-layout-BFyUFda2.js"
],
"resources/js/routes/two-factor/index.ts": [
"/build/assets/index-BHwjGIZD.js"
],
"resources/js/routes/two-factor/login/index.ts": [
"/build/assets/index-BHwjGIZD.js"
],
"resources/js/routes/verification/index.ts": [
"/build/assets/profile-0AslOX4t.js"
],
"resources/js/ssr.tsx": [],
"resources/js/utils/i18n.ts": [
"/build/assets/layout-toNsB0Jp.js",
"/build/assets/ns-CsWIdWF7.gif",
"/build/assets/oko-BkZT_kDH.gif",
"/build/assets/soorya-Ci0dhsli.png"
],
"resources/js/wayfinder/index.ts": [
"/build/assets/index-CY6fYws-.js"
]
}

29
bootstrap/ssr/ssr.js Normal file
View File

@@ -0,0 +1,29 @@
import { jsx } from "react/jsx-runtime";
import { createInertiaApp } from "@inertiajs/react";
import createServer from "@inertiajs/react/server";
import ReactDOMServer from "react-dom/server";
async function resolvePageComponent(path, pages) {
for (const p of Array.isArray(path) ? path : [path]) {
const page = pages[p];
if (typeof page === "undefined") {
continue;
}
return typeof page === "function" ? page() : page;
}
throw new Error(`Page not found: ${path}`);
}
const appName = "Soorya Carpet";
createServer(
(page) => createInertiaApp({
page,
render: ReactDOMServer.renderToString,
title: (title) => title ? `${title} - ${appName}` : appName,
resolve: (name) => resolvePageComponent(
`./pages/${name}.tsx`,
/* @__PURE__ */ Object.assign({ "./pages/about.tsx": () => import("./assets/about-Bpe9pve7.js"), "./pages/art.tsx": () => import("./assets/art-C_czZZ6v.js"), "./pages/auth/confirm-password.tsx": () => import("./assets/confirm-password-yJ2scxPz.js"), "./pages/auth/forgot-password.tsx": () => import("./assets/forgot-password-BNiMrYQb.js"), "./pages/auth/login.tsx": () => import("./assets/login-Bx7GyWNN.js"), "./pages/auth/register.tsx": () => import("./assets/register-5D2-Zto1.js"), "./pages/auth/reset-password.tsx": () => import("./assets/reset-password-yPQQhFaB.js"), "./pages/auth/two-factor-challenge.tsx": () => import("./assets/two-factor-challenge-C3nZjMy6.js"), "./pages/auth/verify-email.tsx": () => import("./assets/verify-email-C6dGXcHB.js"), "./pages/bespoke.tsx": () => import("./assets/bespoke-Bov4UVda.js"), "./pages/contact.tsx": () => import("./assets/contact-DiSMu-mk.js"), "./pages/dashboard.tsx": () => import("./assets/dashboard-CbiUEmKd.js"), "./pages/dashboard/carousel/add.tsx": () => import("./assets/add-S6fabe2O.js"), "./pages/dashboard/carousel/carousel.tsx": () => import("./assets/carousel-BH5ls6c-.js"), "./pages/dashboard/faq/add.tsx": () => import("./assets/add-BhcrNqMR.js"), "./pages/dashboard/faq/index.tsx": () => import("./assets/index-OpaYcuxi.js"), "./pages/dashboard/products/add.tsx": () => import("./assets/add-CPccOhjJ.js"), "./pages/dashboard/products/edit.tsx": () => import("./assets/edit-l0sNRNKZ.js"), "./pages/dashboard/products/index.tsx": () => import("./assets/index-C7ejuoa3.js"), "./pages/dashboard/testimonial.tsx": () => import("./assets/testimonial-B1EWgUPO.js"), "./pages/faq.tsx": () => import("./assets/faq-pz_F0yUl.js"), "./pages/product.tsx": () => import("./assets/product-DH6XS18R.js"), "./pages/settings/appearance.tsx": () => import("./assets/appearance-Bfpl1eM5.js"), "./pages/settings/password.tsx": () => import("./assets/password-5nAC6NdB.js"), "./pages/settings/profile.tsx": () => import("./assets/profile-0AslOX4t.js"), "./pages/settings/two-factor.tsx": () => import("./assets/two-factor-DaA3_KAg.js"), "./pages/welcome.tsx": () => import("./assets/welcome-C5bPUp-g.js") })
),
setup: ({ App, props }) => {
return /* @__PURE__ */ jsx(App, { ...props });
}
})
);

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -0,0 +1,16 @@
import{j as e,H as a}from"./app-C6SiEMGn.js";import{u as c,L as i,n as l,o as r}from"./layout-DermKrDq.js";import{a as t}from"./createLucideIcon-CPpF-2ww.js";import"./app-6D7Y1jSv.js";import"./input-DYhKGVpQ.js";import"./label-BB9HLxkE.js";import"./index-B7t1D_co.js";import"./select-BuGuwdXt.js";import"./index-FUlYkgbj.js";import"./sheet-BvPq5L9Z.js";import"./index-ChxR6kRZ.js";import"./check-DEcJAs2N.js";/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const o=[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}],["path",{d:"M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66",key:"4oyue0"}],["path",{d:"m18 15-2-2",key:"60u0ii"}],["path",{d:"m15 18-2-2",key:"6p76be"}]],n=t("HeartHandshake",o);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const x=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]],d=t("Lightbulb",x);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const m=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],p=t("Target",m),h="/build/assets/kaleen-D3tdUBUw.jpg",g="/build/assets/sci%20trad%208-DiNu6GWn.jpg";function H(){const{t:s}=c();return e.jsxs(e.Fragment,{children:[e.jsx(a,{title:"About Us",children:e.jsx("meta",{name:"description",content:"Experience the finest hand-knotted carpets in Nepal with Soorya Carpet. Each piece is crafted by skilled artisans to deliver unmatched quality, luxury, and timeless design."})}),e.jsxs(i,{children:[e.jsxs("section",{className:"mx-auto flex max-w-screen-2xl flex-col gap-32 px-12 py-12 max-sm:px-8",children:[e.jsxs("div",{className:"grid h-1/2 grid-cols-2 gap-20 overflow-clip max-md:grid-cols-1 max-md:gap-12",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("h1",{className:"font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl",children:s("pages.about.sections.first.title")}),e.jsxs("div",{className:"flex flex-col gap-4 text-sm max-sm:text-base",children:[e.jsx("p",{children:s("pages.about.sections.first.desc.first")}),e.jsx("p",{children:s("pages.about.sections.first.desc.second")}),e.jsx("p",{children:s("pages.about.sections.first.desc.third")})]})]}),e.jsx("img",{src:g,alt:"Our Story",className:"aspect-[5/3] h-full w-full rounded-xl object-cover object-center"})]})," ",e.jsxs("div",{className:"grid h-1/2 grid-cols-2 gap-20 overflow-clip max-md:grid-cols-1 max-md:gap-12",children:[e.jsx("img",{src:h,alt:"Kaleen Story",className:"aspect-[5/3] h-full w-full rounded-xl object-cover object-center"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("h2",{className:"font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl",children:s("pages.about.sections.second.title")}),e.jsxs("div",{className:"flex flex-col gap-4 text-sm max-sm:text-base",children:[e.jsx("p",{children:s("pages.about.sections.second.desc.first")}),e.jsx("p",{children:s("pages.about.sections.second.desc.second")}),e.jsx("p",{children:s("pages.about.sections.second.desc.third")})]})]})]})]}),e.jsxs("section",{className:"mx-auto flex max-w-screen-2xl flex-col gap-8 px-12 py-12 max-md:px-6",children:[e.jsx("h3",{className:"text-center font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl",children:s("pages.about.sections.third.title")}),e.jsxs("div",{className:"flex gap-8 max-md:flex-col",children:[e.jsxs("div",{className:"flex flex-col items-center gap-4 rounded-xl bg-accent px-8 py-8 text-center max-sm:px-4",children:[e.jsx(d,{size:48,color:"#5A1A1A"}),e.jsx("p",{className:"font-serif text-3xl font-semibold",children:s("pages.about.sections.third.cards.first.title")}),e.jsx("p",{className:"text-justify text-lg tracking-tight",children:s("pages.about.sections.third.cards.first.desc")})]})," ",e.jsxs("div",{className:"flex flex-col items-center gap-4 rounded-xl bg-accent px-8 py-8 text-center",children:[e.jsx(p,{size:48,color:"#5A1A1A"}),e.jsx("p",{className:"font-serif text-3xl font-semibold",children:s("pages.about.sections.third.cards.second.title")}),e.jsx("p",{className:"text-justify text-lg tracking-tight",children:s("pages.about.sections.third.cards.second.desc")})]})," ",e.jsxs("div",{className:"flex flex-col items-center gap-4 rounded-xl bg-accent px-8 py-8 text-center",children:[e.jsx(n,{size:48,color:"#5A1A1A"}),e.jsx("p",{className:"font-serif text-3xl font-semibold",children:s("pages.about.sections.third.cards.third.title")}),e.jsx("p",{className:"text-justify text-lg tracking-tight",children:s("pages.about.sections.third.cards.third.desc")})]})]})]}),e.jsxs("section",{className:"mx-auto flex max-w-screen-2xl flex-col gap-8 px-12 py-12",children:[e.jsx("h4",{className:"text-center font-serif text-5xl leading-tight font-medium tracking-tight max-sm:text-4xl",children:s("pages.about.sections.fourth.title")}),e.jsxs("div",{className:"flex items-center justify-center gap-8",children:[e.jsx("img",{src:l,alt:"NS Standard"}),e.jsx("img",{src:r,alt:"OKO Standard"})]})]})]})]})}export{H as default};

View File

@@ -0,0 +1 @@
import{u as m,j as s,H as c}from"./app-C6SiEMGn.js";import{B as p}from"./createLucideIcon-CPpF-2ww.js";import{I as i}from"./input-DYhKGVpQ.js";import{L as l}from"./label-BB9HLxkE.js";import{A as x,d as f}from"./app-layout-B4kweoSW.js";import{t as h,r as g,p as j,a as b}from"./index-BQ4sA8lt.js";import"./app-6D7Y1jSv.js";import"./index-B7t1D_co.js";import"./sheet-BvPq5L9Z.js";import"./index-FUlYkgbj.js";import"./index-CxjaVpyF.js";import"./app-logo-icon-B_KiS1IV.js";import"./package-DTdg9l_D.js";g(j,b);function C(){const{data:a,setData:r,post:n,processing:o,errors:t,wasSuccessful:d}=m({question:"",answer:""}),u=e=>{e.preventDefault(),n(f.faq.addFaq().url,{forceFormData:!0}),d&&h.success("Product added successfully")};return s.jsxs(x,{children:[s.jsx(c,{title:"Add FAQ Questions"}),s.jsxs("section",{className:"flex flex-col gap-8 px-8 py-8",children:[s.jsx("h1",{className:"text-lg font-semibold tracking-tight",children:"Add FAQ Questions"}),s.jsxs("form",{onSubmit:u,method:"POST",encType:"multipart/formdata",className:"flex flex-col items-start gap-4",children:[s.jsxs("div",{className:"flex w-full flex-col gap-2",children:[s.jsx(l,{htmlFor:"question",children:"Question"}),s.jsx(i,{type:"text",id:"question",value:a.question,onChange:e=>r("question",e.target.value),className:"rounded border p-2"}),t.question&&s.jsx("span",{className:"text-red-600",children:t.question})]}),s.jsxs("div",{className:"flex w-full flex-col gap-2",children:[s.jsx(l,{htmlFor:"answer",children:"Answer"}),s.jsx(i,{type:"text",id:"answer",value:a.answer,onChange:e=>r("answer",e.target.value),className:"rounded border p-2"}),t.answer&&s.jsx("span",{className:"text-red-600",children:t.answer})]}),s.jsx(p,{type:"submit",disabled:o,className:"cursor-pointer",children:o?"submitting...":"Submit"})]})]})]})}export{C as default};

View File

@@ -0,0 +1 @@
import{r as i,u as c,j as e,H as f}from"./app-C6SiEMGn.js";import{B as x}from"./createLucideIcon-CPpF-2ww.js";import{I as g}from"./input-DYhKGVpQ.js";import{L as o}from"./label-BB9HLxkE.js";import{A as h}from"./app-layout-B4kweoSW.js";import{F as j,t as b,r as F,p as N,a as S}from"./index-BQ4sA8lt.js";import"./app-6D7Y1jSv.js";import"./index-B7t1D_co.js";import"./sheet-BvPq5L9Z.js";import"./index-FUlYkgbj.js";import"./index-CxjaVpyF.js";import"./app-logo-icon-B_KiS1IV.js";import"./package-DTdg9l_D.js";F(N,S);function H(){const[s,m]=i.useState(null),{data:n,setData:t,post:u,processing:r,errors:l,wasSuccessful:p}=c({alt:"",image_url:null});i.useEffect(()=>{s&&t("image_url",s.file)},[s,t]);const d=a=>{a.preventDefault(),u("/carousel",{forceFormData:!0}),p&&b.success("Slider image successfully uploaded")};return e.jsxs(h,{children:[e.jsx(f,{title:"Add Carousel"}),e.jsxs("section",{className:"flex flex-col gap-8 px-8 py-8",children:[e.jsx("h1",{className:"text-lg font-semibold tracking-tight",children:"Add Slider Image"}),e.jsxs("form",{onSubmit:d,method:"POST",encType:"multipart/formdata",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(o,{htmlFor:"title",children:"Title"}),e.jsx(g,{type:"text",id:"title",value:n.alt,onChange:a=>t("alt",a.target.value),className:"rounded border p-2"}),l.alt&&e.jsx("span",{className:"text-red-600",children:l.alt})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(o,{children:"Image"}),e.jsx(j,{files:s?[s]:[],onupdatefiles:a=>{m(a[0]||null)},allowMultiple:!1,maxFiles:1,name:"image_url",instantUpload:!1,storeAsFile:!0,labelIdle:'Drag & Drop your image or <span class="filepond--label-action">Browse</span>'}),l.image_url&&e.jsx("span",{className:"text-red-600",children:l.image_url})]}),e.jsx(x,{type:"submit",disabled:r,className:"cursor-pointer",children:r?"Uploading...":"Submit"})]})]})]})}export{H as default};

View File

@@ -0,0 +1 @@
import{r as d,u as x,j as e,H as f}from"./app-C6SiEMGn.js";import{B as h}from"./createLucideIcon-CPpF-2ww.js";import{I as g}from"./input-DYhKGVpQ.js";import{L as i}from"./label-BB9HLxkE.js";import{S as j,a as b,b as S,c as v,e as y,d as s}from"./select-BuGuwdXt.js";import{A as N,d as F}from"./app-layout-B4kweoSW.js";import{F as A,t as I,r as P,p as T,a as _}from"./index-BQ4sA8lt.js";import"./app-6D7Y1jSv.js";import"./index-B7t1D_co.js";import"./index-FUlYkgbj.js";import"./sheet-BvPq5L9Z.js";import"./index-ChxR6kRZ.js";import"./check-DEcJAs2N.js";import"./index-CxjaVpyF.js";import"./app-logo-icon-B_KiS1IV.js";import"./package-DTdg9l_D.js";P(T,_);function z(){const[l,n]=d.useState(null),{data:o,setData:a,post:m,processing:c,errors:r,wasSuccessful:p}=x({title:"",type:"traditional",image_url:null});d.useEffect(()=>{l&&a("image_url",l.file)},[l,a]);const u=t=>{t.preventDefault(),m(F.product.add().url,{forceFormData:!0}),p&&I.success("Product added successfully")};return e.jsxs(N,{children:[e.jsx(f,{title:"Add Product Image"}),e.jsxs("section",{className:"flex flex-col gap-8 px-8 py-8",children:[e.jsx("h1",{className:"text-lg font-semibold tracking-tight",children:"Add Product Image"}),e.jsxs("form",{onSubmit:u,method:"POST",encType:"multipart/formdata",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex w-full flex-col gap-4",children:[e.jsx(i,{htmlFor:"title",children:"Title"}),e.jsx(g,{type:"text",id:"title",value:o.title,onChange:t=>a("title",t.target.value),className:"rounded border p-2"}),r.title&&e.jsx("span",{className:"text-red-600",children:r.title})]}),e.jsxs("div",{className:"flex w-full flex-col gap-4",children:[e.jsx(i,{htmlFor:"title",children:"Type"}),e.jsxs(j,{value:o.type,onValueChange:t=>{console.log(t),a("type",t)},children:[e.jsx(b,{children:e.jsx(S,{placeholder:"Select a type"})}),e.jsx(v,{children:e.jsxs(y,{children:[e.jsx(s,{value:"traditional",children:"Traditional"}),e.jsx(s,{value:"modern",children:"Modern"}),e.jsx(s,{value:"bespoke",children:"Bespoke"}),e.jsx(s,{value:"abstract",children:"Abstract"}),e.jsx(s,{value:"art",children:"Art in carpet"})]})})]})]})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(i,{children:"Image"}),e.jsx(A,{files:l?[l]:[],onupdatefiles:t=>{n(t[0]||null)},allowMultiple:!1,maxFiles:1,name:"image_url",instantUpload:!1,storeAsFile:!0,labelIdle:'Drag & Drop your image or <span class="filepond--label-action">Browse</span>'}),r.image_url&&e.jsx("span",{className:"text-red-600",children:r.image_url})]}),e.jsx(h,{type:"submit",disabled:c,className:"cursor-pointer",children:c?"Uploading...":"Submit"})]})]})]})}export{z as default};

View File

@@ -0,0 +1 @@
const e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));export{e};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{j as L}from"./app-C6SiEMGn.js";function e(V){return L.jsx("svg",{...V,viewBox:"0 0 40 42",xmlns:"http://www.w3.org/2000/svg",children:L.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.2 5.63325L8.6 0.855469L0 5.63325V32.1434L16.2 41.1434L32.4 32.1434V23.699L40 19.4767V9.85547L31.4 5.07769L22.8 9.85547V18.2999L17.2 21.411V5.63325ZM38 18.2999L32.4 21.411V15.2545L38 12.1434V18.2999ZM36.9409 10.4439L31.4 13.5221L25.8591 10.4439L31.4 7.36561L36.9409 10.4439ZM24.8 18.2999V12.1434L30.4 15.2545V21.411L24.8 18.2999ZM23.8 20.0323L29.3409 23.1105L16.2 30.411L10.6591 27.3328L23.8 20.0323ZM7.6 27.9212L15.2 32.1434V38.2999L2 30.9666V7.92116L7.6 11.0323V27.9212ZM8.6 9.29991L3.05913 6.22165L8.6 3.14339L14.1409 6.22165L8.6 9.29991ZM30.4 24.8101L17.2 32.1434V38.2999L30.4 30.9666V24.8101ZM9.6 11.0323L15.2 7.92117V22.5221L9.6 25.6333V11.0323Z"})})}export{e as A};

View File

@@ -0,0 +1,16 @@
import{c as d,j as e,H as m}from"./app-C6SiEMGn.js";import{a,c as n}from"./createLucideIcon-CPpF-2ww.js";import{e as h,S as u,H as x}from"./layout-C1UmCZPc.js";import{A as y}from"./app-layout-B4kweoSW.js";import"./app-6D7Y1jSv.js";import"./index-B7t1D_co.js";import"./index-CaEroahx.js";import"./index-81wdD626.js";import"./index-BrphWuSj.js";import"./sheet-BvPq5L9Z.js";import"./index-FUlYkgbj.js";import"./index-CxjaVpyF.js";import"./app-logo-icon-B_KiS1IV.js";import"./package-DTdg9l_D.js";/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const k=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],g=a("Monitor",k);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const b=[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]],j=a("Moon",b);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const f=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],v=a("Sun",f);function A({className:r="",...s}){const{appearance:o,updateAppearance:i}=d(),c=[{value:"light",icon:v,label:"Light"},{value:"dark",icon:j,label:"Dark"},{value:"system",icon:g,label:"System"}];return e.jsx("div",{className:n("inline-flex gap-1 rounded-lg bg-neutral-100 p-1 dark:bg-neutral-800",r),...s,children:c.map(({value:t,icon:p,label:l})=>e.jsxs("button",{onClick:()=>i(t),className:n("flex items-center rounded-md px-3.5 py-1.5 transition-colors",o===t?"bg-white shadow-xs dark:bg-neutral-700 dark:text-neutral-100":"text-neutral-500 hover:bg-neutral-200/60 hover:text-black dark:text-neutral-400 dark:hover:bg-neutral-700/60"),children:[e.jsx(p,{className:"-ml-1 h-4 w-4"}),e.jsx("span",{className:"ml-1.5 text-sm",children:l})]},t))})}const M=[{title:"Appearance settings",href:h().url}];function R(){return e.jsxs(y,{breadcrumbs:M,children:[e.jsx(m,{title:"Appearance settings"}),e.jsx(u,{children:e.jsxs("div",{className:"space-y-6",children:[e.jsx(x,{title:"Appearance settings",description:"Update your account's appearance settings"}),e.jsx(A,{})]})})]})}export{R as default};

View File

@@ -0,0 +1,16 @@
import{j as e,H as t}from"./app-C6SiEMGn.js";import{T as i,a as n,b as s,c as a}from"./tabs-0s913y8g.js";import{L as r}from"./layout-DermKrDq.js";import{a as l}from"./createLucideIcon-CPpF-2ww.js";import{P as c}from"./palette-CS1w2D7p.js";import{P as o}from"./package-DTdg9l_D.js";import"./app-6D7Y1jSv.js";import"./index-FUlYkgbj.js";import"./index-CxjaVpyF.js";import"./sheet-BvPq5L9Z.js";import"./index-B7t1D_co.js";import"./input-DYhKGVpQ.js";import"./label-BB9HLxkE.js";import"./select-BuGuwdXt.js";import"./index-ChxR6kRZ.js";import"./check-DEcJAs2N.js";/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const d=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["path",{d:"M12 16.5A4.5 4.5 0 1 1 7.5 12 4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 1 1 4.5 4.5 4.5 4.5 0 1 1-4.5 4.5",key:"14wa3c"}],["path",{d:"M12 7.5V9",key:"1oy5b0"}],["path",{d:"M7.5 12H9",key:"eltsq1"}],["path",{d:"M16.5 12H15",key:"vk5kw4"}],["path",{d:"M12 16.5V15",key:"k7eayi"}],["path",{d:"m8 8 1.88 1.88",key:"nxy4qf"}],["path",{d:"M14.12 9.88 16 8",key:"1lst6k"}],["path",{d:"m8 16 1.88-1.88",key:"h2eex1"}],["path",{d:"M14.12 14.12 16 16",key:"uqkrx3"}]],x=l("Flower",d);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const m=[["path",{d:"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2",key:"1fvzgz"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2",key:"1kc0my"}],["path",{d:"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8",key:"10h0bg"}],["path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"1s1gnw"}]],h=l("Hand",m);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const f=[["path",{d:"M20.38 3.46 16 2a4 4 0 0 1-8 0L3.62 3.46a2 2 0 0 0-1.34 2.23l.58 3.47a1 1 0 0 0 .99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 0 0 2-2V10h2.15a1 1 0 0 0 .99-.84l.58-3.47a2 2 0 0 0-1.34-2.23z",key:"1wgbhj"}]],p=l("Shirt",f),u="/build/assets/silk%20balls-DWY7AS8B.jpg",g="/build/assets/silk%20yarn-CqpV2kWc.jpg",j="/build/assets/wool%20balls-DG1FtOmh.jpg",y="/build/assets/wool%20yarn-BKbNSfod.jpg",v="/build/assets/IMG_2719-CBS9fSAo.jpg";function B(){return e.jsx(e.Fragment,{children:e.jsxs(r,{children:[e.jsx(t,{title:"Art of Weaving"}),e.jsxs("section",{children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute h-full w-full bg-white/60"}),e.jsx("img",{src:v,alt:"Art of Weaving",className:"aspect-[16/4] object-cover object-center"}),e.jsx("h1",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 font-serif text-7xl font-medium tracking-tight",children:"The Art of Weaving"})]}),e.jsxs("div",{className:"mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-12",children:[e.jsx("h2",{className:"text-center font-serif text-4xl font-medium",children:"Our Craft: From Fiber to Fine Rug"}),e.jsxs(i,{defaultValue:"wool",className:"grid grid-cols-4 gap-8",children:[e.jsxs(n,{className:"!h-auto w-full flex-col",children:[e.jsxs(s,{value:"wool",className:"flex w-full gap-2 py-4",children:[e.jsx(p,{size:24})," Wool Selection & Sorting"]}),e.jsxs(s,{value:"dyeing",className:"w-full py-4",children:[e.jsx(c,{})," Artisan Dyeing"]}),e.jsxs(s,{value:"hand",className:"w-full py-4",children:[e.jsx(h,{})," Hand Weaving"]}),e.jsxs(s,{value:"finish",className:"w-full py-4",children:[e.jsx(x,{})," Finishing & Washing"]}),e.jsxs(s,{value:"quality",className:"w-full py-4",children:[e.jsx(o,{})," Quality Control & Packing"]})]}),e.jsxs("div",{className:"col-span-3",children:[e.jsx(a,{value:"wool",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("p",{className:"font-serif text-2xl font-medium",children:"Wool Selection & Sorting"}),e.jsx("p",{children:"Careful selection of the finest wool fibers, meticulously sorted by quality and texture to ensure only the best make it into our carpets."})]})}),e.jsx(a,{value:"dyeing",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("p",{className:"font-serif text-2xl font-medium",children:"Artisan Dyeing"}),e.jsx("p",{children:"Fibers are dyed using traditional methods and natural pigments, achieving rich, vibrant, and enduring colors that tell a story."})]})}),e.jsx(a,{value:"hand",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("p",{className:"font-serif text-2xl font-medium",children:"Hand Weaving"}),e.jsx("p",{children:"Skilled artisans hand-weave each knot with precision and passion, creating intricate patterns and unparalleled durability."})]})}),e.jsx(a,{value:"finish",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("p",{className:"font-serif text-2xl font-medium",children:"Finishing & Washing"}),e.jsx("p",{children:"Carpets undergo specialized washing, shearing, and meticulous hand-finishing to enhance their luster and softness."})]})}),e.jsx(a,{value:"quality",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("p",{className:"font-serif text-2xl font-medium",children:"Quality Control & Packing"}),e.jsx("p",{children:"Each rug passes rigorous quality checks before being carefully packed for its journey to your home, ensuring perfection."})]})})]})]})]}),e.jsxs("div",{className:"mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-8",children:[e.jsx("h3",{className:"text-center font-serif text-4xl font-medium",children:"Exquisite Materials"}),e.jsxs("div",{className:"grid grid-cols-4 gap-6",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("img",{src:u,alt:"Skill ball",className:"aspect-square rounded-lg object-cover object-center"}),e.jsx("p",{className:"font-serif text-lg font-medium",children:"Skill Ball"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("img",{src:g,alt:"Skill yarn",className:"aspect-square rounded-lg object-cover object-center"}),e.jsx("p",{className:"font-serif text-lg font-medium",children:"Skill Yarn"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("img",{src:j,alt:"wool ball",className:"aspect-square rounded-lg object-cover object-center"}),e.jsx("p",{className:"font-serif text-lg font-medium",children:"Wool Ball"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("img",{src:y,alt:"wool yarn",className:"aspect-square rounded-lg object-cover object-center"}),e.jsx("p",{className:"font-serif text-lg font-medium",children:"Wool Yarn"})]})]})]})]})]})})}export{B as default};

View File

@@ -0,0 +1 @@
import{j as e,L as a}from"./app-C6SiEMGn.js";import{A as c}from"./app-logo-icon-B_KiS1IV.js";import{h as n}from"./createLucideIcon-CPpF-2ww.js";function m({children:t,title:s,description:r}){return e.jsx("div",{className:"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10",children:e.jsx("div",{className:"w-full max-w-sm",children:e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsxs(a,{href:n(),className:"flex flex-col items-center gap-2 font-medium",children:[e.jsx("div",{className:"mb-1 flex h-9 w-9 items-center justify-center rounded-md",children:e.jsx(c,{className:"size-9 fill-current text-[var(--foreground)] dark:text-white"})}),e.jsx("span",{className:"sr-only",children:s})]}),e.jsxs("div",{className:"space-y-2 text-center",children:[e.jsx("h1",{className:"text-xl font-medium",children:s}),e.jsx("p",{className:"text-center text-sm text-muted-foreground",children:r})]})]}),t]})})})}function d({children:t,title:s,description:r,...l}){return e.jsx(m,{title:s,description:r,...l,children:t})}export{d as A};

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

View File

@@ -0,0 +1,16 @@
import{j as e,H as i}from"./app-C6SiEMGn.js";import{a as t,B as r}from"./createLucideIcon-CPpF-2ww.js";import{u as l,L as x}from"./layout-DermKrDq.js";import{P as o}from"./palette-CS1w2D7p.js";import"./app-6D7Y1jSv.js";import"./input-DYhKGVpQ.js";import"./label-BB9HLxkE.js";import"./index-B7t1D_co.js";import"./select-BuGuwdXt.js";import"./index-FUlYkgbj.js";import"./sheet-BvPq5L9Z.js";import"./index-ChxR6kRZ.js";import"./check-DEcJAs2N.js";/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const n=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]],m=t("ClipboardList",n);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const d=[["path",{d:"m14.622 17.897-10.68-2.913",key:"vj2p1u"}],["path",{d:"M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z",key:"18tc5c"}],["path",{d:"M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15",key:"ytzfxy"}]],p=t("Paintbrush",d);/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const f=[["path",{d:"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2",key:"wrbu53"}],["path",{d:"M15 18H9",key:"1lyqi6"}],["path",{d:"M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",key:"lysw3i"}],["circle",{cx:"17",cy:"18",r:"2",key:"332jqn"}],["circle",{cx:"7",cy:"18",r:"2",key:"19iecd"}]],h=t("Truck",f),j="/build/assets/color%20swatches-Dl8_1uRD.jpg";function L({product:c}){console.log(c);const{t:s}=l();return e.jsx(e.Fragment,{children:e.jsxs(x,{children:[e.jsx(i,{title:"Bespoke Design"}),e.jsx("section",{className:"",children:e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute h-full w-full bg-white/30"}),e.jsx("img",{src:j,alt:"Bespoke Design",className:"aspect-[16/4] object-cover object-center max-sm:aspect-[16/9]"}),e.jsxs("div",{className:"absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 flex-col gap-2",children:[e.jsx("h1",{className:"text-center font-serif text-5xl font-medium tracking-tight max-md:text-4xl max-sm:text-2xl",children:s("pages.bespoke.sections.banner.title")}),e.jsx("p",{className:"text-center text-lg text-gray-800 max-sm:text-sm",children:s("pages.bespoke.sections.banner.subTitle")})]})]})}),e.jsxs("section",{className:"mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-18 max-sm:px-8",children:[e.jsx("h2",{className:"text-center font-serif text-4xl font-medium max-md:text-2xl",children:s("pages.bespoke.sections.first.title")}),e.jsxs("div",{className:"grid grid-cols-4 gap-4 max-md:grid-cols-2 max-sm:grid-cols-1",children:[e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2",children:[e.jsx(m,{size:40,color:"#5A1A1A"}),e.jsx("p",{className:"text-center font-serif text-xl font-medium",children:s("pages.bespoke.sections.first.card.first.title")}),e.jsx("p",{className:"px-4 text-center text-sm",children:s("pages.bespoke.sections.first.card.first.desc")})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2",children:[e.jsx(o,{size:40,color:"#5A1A1A"}),e.jsx("p",{className:"text-center font-serif text-xl font-medium",children:s("pages.bespoke.sections.first.card.second.title")}),e.jsx("p",{className:"px-4 text-center text-sm",children:s("pages.bespoke.sections.first.card.second.desc")})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2",children:[e.jsx(p,{size:40,color:"#5A1A1A"}),e.jsx("p",{className:"text-center font-serif text-xl font-medium",children:s("pages.bespoke.sections.first.card.third.title")}),e.jsx("p",{className:"px-4 text-center text-sm",children:s("pages.bespoke.sections.first.card.third.desc")})]}),e.jsxs("div",{className:"flex flex-col items-center justify-center gap-2",children:[e.jsx(h,{size:40,color:"#5A1A1A"}),e.jsx("p",{className:"text-center font-serif text-xl font-medium",children:s("pages.bespoke.sections.first.card.fourth.title")}),e.jsx("p",{className:"px-4 text-center text-sm",children:s("pages.bespoke.sections.first.card.fourth.desc")})]})]})]}),e.jsxs("section",{className:"mx-auto flex max-w-screen-2xl flex-col gap-12 px-12 py-18 max-sm:px-8",children:[e.jsx("h3",{className:"text-center font-serif text-4xl font-medium max-md:text-2xl",children:"Bespoke Product"}),e.jsx("div",{className:"grid grid-cols-4 gap-4",children:c.map(a=>e.jsx("img",{src:a.image_url,alt:a.title,className:"aspect-[4/5] rounded-lg object-cover object-center"}))})]}),e.jsxs("section",{className:"mx-auto flex max-w-screen-2xl flex-col items-center gap-8 px-12 py-18 max-sm:px-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("h4",{className:"text-center font-serif text-4xl font-medium max-md:text-2xl",children:s("pages.bespoke.sections.second.title")}),e.jsxs("p",{className:"text-center max-md:text-sm",children:[s("pages.bespoke.sections.second.desc")," ",e.jsx("br",{})," ",s("pages.bespoke.sections.second.desc2")]})]}),e.jsx(r,{className:"cursor-pointer",children:s("pages.bespoke.sections.second.button")})]})]})})}export{L as default};

View File

@@ -0,0 +1 @@
import{j as e,H as n,L as l}from"./app-C6SiEMGn.js";import{B as o}from"./createLucideIcon-CPpF-2ww.js";import{T as x,a as m,b as t,c as s,d as j,e as a,P as h,f as p}from"./table-DVbaU0dA.js";import{A as u,c}from"./app-layout-B4kweoSW.js";import"./app-6D7Y1jSv.js";import"./sheet-BvPq5L9Z.js";import"./index-FUlYkgbj.js";import"./index-B7t1D_co.js";import"./index-CxjaVpyF.js";import"./app-logo-icon-B_KiS1IV.js";import"./package-DTdg9l_D.js";function B({carousel:d}){return e.jsx(e.Fragment,{children:e.jsxs(u,{breadcrumbs:[{title:"Carousel",href:c.index().url}],children:[e.jsx(n,{title:"Carousel"}),e.jsxs("section",{className:"flex flex-col gap-8 px-8 py-8",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:"Carousel"}),e.jsx(l,{href:c.add(),children:e.jsx(o,{className:"cursor-pointer",children:"Add Image"})})]}),e.jsxs(x,{children:[e.jsx(m,{children:e.jsxs(t,{children:[e.jsx(s,{className:"w-[80px]",children:"S.N."}),e.jsx(s,{className:"w-48",children:"Image"}),e.jsx(s,{children:"Title"}),e.jsx(s,{className:"text-right",children:"Action"})]})}),e.jsx(j,{children:d.map((r,i)=>e.jsxs(t,{children:[e.jsx(a,{className:"font-medium",children:i+1}),e.jsx(a,{children:e.jsx("img",{src:r.image_url,alt:r.alt,className:"aspect-video w-24 rounded-md object-cover object-center"})}),e.jsx(a,{children:r.alt}),e.jsx(a,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(l,{href:"",children:e.jsx(h,{size:18})}),e.jsx(l,{href:"",children:e.jsx(p,{size:18,color:"#D2042D"})})]})})]},i))})]})]})]})})}export{B as default};

View File

@@ -0,0 +1,6 @@
import{a as c}from"./createLucideIcon-CPpF-2ww.js";/**
* @license lucide-react v0.475.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const e=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],t=c("Check",e);export{t as C};

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 KiB

View File

@@ -0,0 +1 @@
import{j as s,H as a,F as e}from"./app-C6SiEMGn.js";import{I as t}from"./input-error-DHxzqysv.js";import{B as i}from"./createLucideIcon-CPpF-2ww.js";import{I as m}from"./input-DYhKGVpQ.js";import{L as d}from"./label-BB9HLxkE.js";import{A as p}from"./auth-layout-CgoifTok.js";import{s as n}from"./index-81wdD626.js";import{L as l}from"./loader-circle-BPtK_d4m.js";import"./app-6D7Y1jSv.js";import"./index-B7t1D_co.js";import"./app-logo-icon-B_KiS1IV.js";function b(){return s.jsxs(p,{title:"Confirm your password",description:"This is a secure area of the application. Please confirm your password before continuing.",children:[s.jsx(a,{title:"Confirm password"}),s.jsx(e,{...n.form(),resetOnSuccess:["password"],children:({processing:r,errors:o})=>s.jsxs("div",{className:"space-y-6",children:[s.jsxs("div",{className:"grid gap-2",children:[s.jsx(d,{htmlFor:"password",children:"Password"}),s.jsx(m,{id:"password",type:"password",name:"password",placeholder:"Password",autoComplete:"current-password",autoFocus:!0}),s.jsx(t,{message:o.password})]}),s.jsx("div",{className:"flex items-center",children:s.jsxs(i,{className:"w-full",disabled:r,"data-test":"confirm-password-button",children:[r&&s.jsx(l,{className:"h-4 w-4 animate-spin"}),"Confirm password"]})})]})})]})}export{b as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{r as a,j as e,H as o}from"./app-C6SiEMGn.js";import{A as t,a as l}from"./app-layout-B4kweoSW.js";import"./app-6D7Y1jSv.js";import"./createLucideIcon-CPpF-2ww.js";import"./sheet-BvPq5L9Z.js";import"./index-FUlYkgbj.js";import"./index-B7t1D_co.js";import"./index-CxjaVpyF.js";import"./app-logo-icon-B_KiS1IV.js";import"./package-DTdg9l_D.js";function r({className:d}){const s=a.useId();return e.jsxs("svg",{className:d,fill:"none",children:[e.jsx("defs",{children:e.jsx("pattern",{id:s,x:"0",y:"0",width:"10",height:"10",patternUnits:"userSpaceOnUse",children:e.jsx("path",{d:"M-3 13 15-5M-5 5l18-18M-1 21 17 3"})})}),e.jsx("rect",{stroke:"none",fill:`url(#${s})`,width:"100%",height:"100%"})]})}const i=[{title:"Dashboard",href:l().url}];function j(){return e.jsxs(t,{breadcrumbs:i,children:[e.jsx(o,{title:"Dashboard"}),e.jsxs("div",{className:"flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4",children:[e.jsxs("div",{className:"grid auto-rows-min gap-4 md:grid-cols-3",children:[e.jsx("div",{className:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border",children:e.jsx(r,{className:"absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20"})}),e.jsx("div",{className:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border",children:e.jsx(r,{className:"absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20"})}),e.jsx("div",{className:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border",children:e.jsx(r,{className:"absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20"})})]}),e.jsx("div",{className:"relative min-h-[100vh] flex-1 overflow-hidden rounded-xl border border-sidebar-border/70 md:min-h-min dark:border-sidebar-border",children:e.jsx(r,{className:"absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20"})})]})]})}export{j as default};

View File

@@ -0,0 +1 @@
import{j as t}from"./app-C6SiEMGn.js";import{R as i,T as l,C as r,d as s,X as d,e as c,D as g,P as u,O as f}from"./sheet-BvPq5L9Z.js";import{c as o}from"./createLucideIcon-CPpF-2ww.js";function v({...a}){return t.jsx(i,{"data-slot":"dialog",...a})}function b({...a}){return t.jsx(l,{"data-slot":"dialog-trigger",...a})}function x({...a}){return t.jsx(u,{"data-slot":"dialog-portal",...a})}function h({...a}){return t.jsx(s,{"data-slot":"dialog-close",...a})}function m({className:a,...e}){return t.jsx(f,{"data-slot":"dialog-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",a),...e})}function y({className:a,children:e,...n}){return t.jsxs(x,{"data-slot":"dialog-portal",children:[t.jsx(m,{}),t.jsxs(r,{"data-slot":"dialog-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",a),...n,children:[e,t.jsxs(s,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[t.jsx(d,{}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function N({className:a,...e}){return t.jsx("div",{"data-slot":"dialog-header",className:o("flex flex-col gap-2 text-center sm:text-left",a),...e})}function z({className:a,...e}){return t.jsx("div",{"data-slot":"dialog-footer",className:o("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...e})}function C({className:a,...e}){return t.jsx(c,{"data-slot":"dialog-title",className:o("text-lg leading-none font-semibold",a),...e})}function w({className:a,...e}){return t.jsx(g,{"data-slot":"dialog-description",className:o("text-muted-foreground text-sm",a),...e})}export{v as D,b as a,y as b,C as c,w as d,z as e,h as f,N as g};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{j as r,H as d,F as n}from"./app-C6SiEMGn.js";import{q as m,B as u,l as c}from"./createLucideIcon-CPpF-2ww.js";import{I as p}from"./input-error-DHxzqysv.js";import{T as h}from"./text-link-DNnNqMs9.js";import{I as f}from"./input-DYhKGVpQ.js";import{L as x}from"./label-BB9HLxkE.js";import{A as g}from"./auth-layout-CgoifTok.js";import{L as j}from"./loader-circle-BPtK_d4m.js";import"./app-6D7Y1jSv.js";import"./index-B7t1D_co.js";import"./app-logo-icon-B_KiS1IV.js";const t=e=>({url:t.url(e),method:"get"});t.definition={methods:["get","head"],url:"/forgot-password"};t.url=e=>t.definition.url+m(e);t.get=e=>({url:t.url(e),method:"get"});t.head=e=>({url:t.url(e),method:"head"});const s=e=>({action:t.url(e),method:"get"});s.get=e=>({action:t.url(e),method:"get"});s.head=e=>({action:t.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});t.form=s;const o=e=>({url:o.url(e),method:"post"});o.definition={methods:["post"],url:"/forgot-password"};o.url=e=>o.definition.url+m(e);o.post=e=>({url:o.url(e),method:"post"});const i=e=>({action:o.url(e),method:"post"});i.post=e=>({action:o.url(e),method:"post"});o.form=i;const y={store:o};function C({status:e}){return r.jsxs(g,{title:"Forgot password",description:"Enter your email to receive a password reset link",children:[r.jsx(d,{title:"Forgot password"}),e&&r.jsx("div",{className:"mb-4 text-center text-sm font-medium text-green-600",children:e}),r.jsxs("div",{className:"space-y-6",children:[r.jsx(n,{...y.store.form(),children:({processing:a,errors:l})=>r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"grid gap-2",children:[r.jsx(x,{htmlFor:"email",children:"Email address"}),r.jsx(f,{id:"email",type:"email",name:"email",autoComplete:"off",autoFocus:!0,placeholder:"email@example.com"}),r.jsx(p,{message:l.email})]}),r.jsx("div",{className:"my-6 flex items-center justify-start",children:r.jsxs(u,{className:"w-full",disabled:a,"data-test":"email-password-reset-link-button",children:[a&&r.jsx(j,{className:"h-4 w-4 animate-spin"}),"Email password reset link"]})})]})}),r.jsxs("div",{className:"space-x-1 text-center text-sm text-muted-foreground",children:[r.jsx("span",{children:"Or, return to"}),r.jsx(h,{href:c(),children:"log in"})]})]})]})}export{C as default};

View File

@@ -0,0 +1 @@
import{q as s}from"./createLucideIcon-CPpF-2ww.js";const o=t=>({url:o.url(t),method:"post"});o.definition={methods:["post"],url:"/user/confirm-password"};o.url=t=>o.definition.url+s(t);o.post=t=>({url:o.url(t),method:"post"});const r=t=>({action:o.url(t),method:"post"});r.post=t=>({action:o.url(t),method:"post"});o.form=r;const n={store:Object.assign(o,o)};export{n as c,o as s};

View File

@@ -0,0 +1 @@
import{a as p,g as u,r as f,j as l}from"./app-C6SiEMGn.js";import{e as v}from"./createLucideIcon-CPpF-2ww.js";var e=p();const h=u(e);var d=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],D=d.reduce((r,t)=>{const s=v(`Primitive.${t}`),i=f.forwardRef((o,a)=>{const{asChild:m,...n}=o,c=m?s:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(c,{...n,ref:a})});return i.displayName=`Primitive.${t}`,{...r,[t]:i}},{});function w(r,t){r&&e.flushSync(()=>r.dispatchEvent(t))}export{D as P,h as R,w as d,e as r};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{q as a}from"./createLucideIcon-CPpF-2ww.js";const l=e=>({url:l.url(e),method:"post"});l.definition={methods:["post"],url:"/two-factor-challenge"};l.url=e=>l.definition.url+a(e);l.post=e=>({url:l.url(e),method:"post"});const q=e=>({action:l.url(e),method:"post"});q.post=e=>({action:l.url(e),method:"post"});l.form=q;const E={store:Object.assign(l,l)},d=e=>({url:d.url(e),method:"get"});d.definition={methods:["get","head"],url:"/two-factor-challenge"};d.url=e=>d.definition.url+a(e);d.get=e=>({url:d.url(e),method:"get"});d.head=e=>({url:d.url(e),method:"head"});const h=e=>({action:d.url(e),method:"get"});h.get=e=>({action:d.url(e),method:"get"});h.head=e=>({action:d.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});d.form=h;const m=e=>({url:m.url(e),method:"post"});m.definition={methods:["post"],url:"/user/two-factor-authentication"};m.url=e=>m.definition.url+a(e);m.post=e=>({url:m.url(e),method:"post"});const Q=e=>({action:m.url(e),method:"post"});Q.post=e=>({action:m.url(e),method:"post"});m.form=Q;const n=e=>({url:n.url(e),method:"post"});n.definition={methods:["post"],url:"/user/confirmed-two-factor-authentication"};n.url=e=>n.definition.url+a(e);n.post=e=>({url:n.url(e),method:"post"});const p=e=>({action:n.url(e),method:"post"});p.post=e=>({action:n.url(e),method:"post"});n.form=p;const s=e=>({url:s.url(e),method:"delete"});s.definition={methods:["delete"],url:"/user/two-factor-authentication"};s.url=e=>s.definition.url+a(e);s.delete=e=>({url:s.url(e),method:"delete"});const b=e=>({action:s.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"DELETE",...e?.query??e?.mergeQuery??{}}}),method:"post"});b.delete=e=>({action:s.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"DELETE",...e?.query??e?.mergeQuery??{}}}),method:"post"});s.form=b;const r=e=>({url:r.url(e),method:"get"});r.definition={methods:["get","head"],url:"/user/two-factor-qr-code"};r.url=e=>r.definition.url+a(e);r.get=e=>({url:r.url(e),method:"get"});r.head=e=>({url:r.url(e),method:"head"});const c=e=>({action:r.url(e),method:"get"});c.get=e=>({action:r.url(e),method:"get"});c.head=e=>({action:r.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});r.form=c;const t=e=>({url:t.url(e),method:"get"});t.definition={methods:["get","head"],url:"/user/two-factor-secret-key"};t.url=e=>t.definition.url+a(e);t.get=e=>({url:t.url(e),method:"get"});t.head=e=>({url:t.url(e),method:"head"});const g=e=>({action:t.url(e),method:"get"});g.get=e=>({action:t.url(e),method:"get"});g.head=e=>({action:t.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});t.form=g;const o=e=>({url:o.url(e),method:"get"});o.definition={methods:["get","head"],url:"/user/two-factor-recovery-codes"};o.url=e=>o.definition.url+a(e);o.get=e=>({url:o.url(e),method:"get"});o.head=e=>({url:o.url(e),method:"head"});const y=e=>({action:o.url(e),method:"get"});y.get=e=>({action:o.url(e),method:"get"});y.head=e=>({action:o.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});o.form=y;const i=e=>({url:i.url(e),method:"post"});i.definition={methods:["post"],url:"/user/two-factor-recovery-codes"};i.url=e=>i.definition.url+a(e);i.post=e=>({url:i.url(e),method:"post"});const w=e=>({action:i.url(e),method:"post"});w.post=e=>({action:i.url(e),method:"post"});i.form=w;const u=e=>({url:u.url(e),method:"get"});u.definition={methods:["get","head"],url:"/settings/two-factor"};u.url=e=>u.definition.url+a(e);u.get=e=>({url:u.url(e),method:"get"});u.head=e=>({url:u.url(e),method:"head"});const f=e=>({action:u.url(e),method:"get"});f.get=e=>({action:u.url(e),method:"get"});f.head=e=>({action:u.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});u.form=f;Object.assign(d,E),Object.assign(m,m),Object.assign(n,n),Object.assign(s,s),Object.assign(r,r),Object.assign(t,t),Object.assign(o,o),Object.assign(i,i),Object.assign(u,u);export{t as a,u as b,i as c,n as d,s as e,m as f,r as q,o as r,l as s};

Some files were not shown because too many files have changed in this diff Show More