import { jsxs, jsx, Fragment } from "react/jsx-runtime"; import { router } from "@inertiajs/core"; import { Link, Head } from "@inertiajs/react"; import classNames from "classnames"; import { useState } from "react"; import { u as useRoute } from "../app.js"; import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; import { Transition } from "@headlessui/react"; function ApplicationMark(props) { return /* @__PURE__ */ jsxs( "svg", { viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [ /* @__PURE__ */ jsx( "path", { d: "M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z", fill: "#6875F5" } ), /* @__PURE__ */ jsx( "path", { d: "M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z", fill: "#6875F5" } ) ] } ); } function Banner() { var _a, _b; const [show, setShow] = useState(true); const { props } = useTypedPage(); const style = ((_a = props.jetstream.flash) == null ? void 0 : _a.bannerStyle) || "success"; const message = ((_b = props.jetstream.flash) == null ? void 0 : _b.banner) || ""; return /* @__PURE__ */ jsx("div", { children: show && message ? /* @__PURE__ */ jsx( "div", { className: classNames({ "bg-indigo-500": style == "success", "bg-red-700": style == "danger" }), children: /* @__PURE__ */ jsx("div", { className: "max-w-(--breakpoint-xl) mx-auto py-2 px-3 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between flex-wrap", children: [ /* @__PURE__ */ jsxs("div", { className: "w-0 flex-1 flex items-center min-w-0", children: [ /* @__PURE__ */ jsx( "span", { className: classNames("flex p-2 rounded-lg", { "bg-indigo-600": style == "success", "bg-red-600": style == "danger" }), children: (() => { switch (style) { case "success": return /* @__PURE__ */ jsx( "svg", { className: "h-5 w-5 text-white", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx( "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" } ) } ); case "danger": return /* @__PURE__ */ jsx( "svg", { className: "h-5 w-5 text-white", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx( "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" } ) } ); default: return null; } })() } ), /* @__PURE__ */ jsx("p", { className: "ml-3 font-medium text-sm text-white truncate", children: message }) ] }), /* @__PURE__ */ jsx("div", { className: "shrink-0 sm:ml-3", children: /* @__PURE__ */ jsx( "button", { type: "button", className: classNames( "-mr-1 flex p-2 rounded-md focus:outline-hidden sm:-mr-2 transition", { "hover:bg-indigo-600 focus:bg-indigo-600": style == "success", "hover:bg-red-600 focus:bg-red-600": style == "danger" } ), "aria-label": "Dismiss", onClick: (e) => { e.preventDefault(); setShow(false); }, children: /* @__PURE__ */ jsx( "svg", { className: "h-5 w-5 text-white", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx( "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M6 18L18 6M6 6l12 12" } ) } ) } ) }) ] }) }) } ) : null }); } function Dropdown({ align = "right", width = "48", contentClasses = "py-1 bg-white dark:bg-gray-700", renderTrigger, children }) { const [open, setOpen] = useState(false); const widthClass = { "48": "w-48" }[width.toString()]; const alignmentClasses = (() => { if (align === "left") { return "origin-top-left left-0"; } else if (align === "right") { return "origin-top-right right-0"; } else { return "origin-top"; } })(); return /* @__PURE__ */ jsxs("div", { className: "relative", children: [ /* @__PURE__ */ jsx("div", { onClick: () => setOpen(!open), children: renderTrigger() }), /* @__PURE__ */ jsx( "div", { className: "fixed inset-0 z-40", style: { display: open ? "block" : "none" }, onClick: () => setOpen(false) } ), /* @__PURE__ */ jsx( Transition, { show: open, enter: "transition ease-out duration-200", enterFrom: "transform opacity-0 scale-95", enterTo: "transform opacity-100 scale-100", leave: "transition ease-in duration-75", leaveFrom: "transform opacity-100 scale-100", leaveTo: "transform opacity-0 scale-95", children: /* @__PURE__ */ jsx("div", { className: "relative z-50", children: /* @__PURE__ */ jsx( "div", { className: classNames( "absolute mt-2 rounded-md shadow-lg", widthClass, alignmentClasses ), onClick: () => setOpen(false), children: /* @__PURE__ */ jsx( "div", { className: classNames( "rounded-md ring-1 ring-black ring-opacity-5", contentClasses ), children } ) } ) }) } ) ] }); } function DropdownLink({ as, href, children }) { return /* @__PURE__ */ jsx("div", { children: (() => { switch (as) { case "button": return /* @__PURE__ */ jsx( "button", { type: "submit", className: "block w-full px-4 py-2 text-left text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out", children } ); case "a": return /* @__PURE__ */ jsx( "a", { href, className: "block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out", children } ); default: return /* @__PURE__ */ jsx( Link, { href: href || "", className: "block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out", children } ); } })() }); } function NavLink({ active, href, children }) { const classes = active ? "inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 dark:border-indigo-600 text-sm font-medium leading-5 text-gray-900 dark:text-gray-100 focus:outline-hidden focus:border-indigo-700 transition duration-150 ease-in-out" : "inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-700 focus:outline-hidden focus:text-gray-700 dark:focus:text-gray-300 focus:border-gray-300 dark:focus:border-gray-700 transition duration-150 ease-in-out"; return /* @__PURE__ */ jsx(Link, { href, className: classes, children }); } function ResponsiveNavLink({ active, href, children, ...props }) { const classes = active ? "block w-full pl-3 pr-4 py-2 border-l-4 border-indigo-400 dark:border-indigo-600 text-left text-base font-medium text-indigo-700 dark:text-indigo-300 bg-indigo-50 dark:bg-indigo-900/50 focus:outline-hidden focus:text-indigo-800 dark:focus:text-indigo-200 focus:bg-indigo-100 dark:focus:bg-indigo-900 focus:border-indigo-700 dark:focus:border-indigo-300 transition duration-150 ease-in-out" : "block w-full pl-3 pr-4 py-2 border-l-4 border-transparent text-left text-base font-medium text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 hover:border-gray-300 dark:hover:border-gray-600 focus:outline-hidden focus:text-gray-800 dark:focus:text-gray-200 focus:bg-gray-50 dark:focus:bg-gray-700 focus:border-gray-300 dark:focus:border-gray-600 transition duration-150 ease-in-out"; return /* @__PURE__ */ jsx("div", { children: "as" in props && props.as === "button" ? /* @__PURE__ */ jsx("button", { className: classNames("w-full text-left", classes), children }) : /* @__PURE__ */ jsx(Link, { href: href || "", className: classes, children }) }); } function AppLayout({ title, renderHeader, children }) { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j; const page = useTypedPage(); const route = useRoute(); const [showingNavigationDropdown, setShowingNavigationDropdown] = useState(false); function switchToTeam(e, team) { e.preventDefault(); router.put( route("current-team.update"), { team_id: team.id }, { preserveState: false } ); } function logout(e) { e.preventDefault(); router.post(route("logout")); } return /* @__PURE__ */ jsxs("div", { children: [ /* @__PURE__ */ jsx(Head, { title }), /* @__PURE__ */ jsx(Banner, {}), /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-gray-100 dark:bg-gray-900", children: [ /* @__PURE__ */ jsxs("nav", { className: "bg-white dark:bg-gray-800 border-b border-gray-100 dark:border-gray-700", children: [ /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between h-16", children: [ /* @__PURE__ */ jsxs("div", { className: "flex", children: [ /* @__PURE__ */ jsx("div", { className: "shrink-0 flex items-center", children: /* @__PURE__ */ jsx(Link, { href: route("dashboard"), children: /* @__PURE__ */ jsx(ApplicationMark, { className: "block h-9 w-auto" }) }) }), /* @__PURE__ */ jsx("div", { className: "hidden space-x-8 sm:-my-px sm:ml-10 sm:flex", children: /* @__PURE__ */ jsx( NavLink, { href: route("dashboard"), active: route().current("dashboard"), children: "Dashboard" } ) }) ] }), /* @__PURE__ */ jsxs("div", { className: "hidden sm:flex sm:items-center sm:ml-6", children: [ /* @__PURE__ */ jsx("div", { className: "ml-3 relative", children: page.props.jetstream.hasTeamFeatures ? /* @__PURE__ */ jsx( Dropdown, { align: "right", width: "60", renderTrigger: () => { var _a2, _b2; return /* @__PURE__ */ jsx("span", { className: "inline-flex rounded-md", children: /* @__PURE__ */ jsxs( "button", { type: "button", className: "inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-300 focus:outline-hidden focus:bg-gray-50 dark:focus:bg-gray-700 active:bg-gray-50 dark:active:bg-gray-700 transition ease-in-out duration-150", children: [ (_b2 = (_a2 = page.props.auth.user) == null ? void 0 : _a2.current_team) == null ? void 0 : _b2.name, /* @__PURE__ */ jsx( "svg", { className: "ml-2 -mr-0.5 h-4 w-4", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ jsx( "path", { fillRule: "evenodd", d: "M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z", clipRule: "evenodd" } ) } ) ] } ) }); }, children: /* @__PURE__ */ jsx("div", { className: "w-60", children: page.props.jetstream.hasTeamFeatures ? /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Manage Team" }), /* @__PURE__ */ jsx( DropdownLink, { href: route("teams.show", [ (_a = page.props.auth.user) == null ? void 0 : _a.current_team ]), children: "Team Settings" } ), page.props.jetstream.canCreateTeams ? /* @__PURE__ */ jsx(DropdownLink, { href: route("teams.create"), children: "Create New Team" }) : null, /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Switch Teams" }), (_c = (_b = page.props.auth.user) == null ? void 0 : _b.all_teams) == null ? void 0 : _c.map((team) => { var _a2; return /* @__PURE__ */ jsx( "form", { onSubmit: (e) => switchToTeam(e, team), children: /* @__PURE__ */ jsx(DropdownLink, { as: "button", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ team.id == ((_a2 = page.props.auth.user) == null ? void 0 : _a2.current_team_id) && /* @__PURE__ */ jsx( "svg", { className: "mr-2 h-5 w-5 text-green-400", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) } ), /* @__PURE__ */ jsx("div", { children: team.name }) ] }) }) }, team.id ); }) ] }) : null }) } ) : null }), /* @__PURE__ */ jsx("div", { className: "ml-3 relative", children: /* @__PURE__ */ jsxs( Dropdown, { align: "right", width: "48", renderTrigger: () => { var _a2, _b2, _c2; return page.props.jetstream.managesProfilePhotos ? /* @__PURE__ */ jsx("button", { className: "flex text-sm border-2 border-transparent rounded-full focus:outline-hidden focus:border-gray-300 transition", children: /* @__PURE__ */ jsx( "img", { className: "h-8 w-8 rounded-full object-cover", src: (_a2 = page.props.auth.user) == null ? void 0 : _a2.profile_photo_url, alt: (_b2 = page.props.auth.user) == null ? void 0 : _b2.name } ) }) : /* @__PURE__ */ jsx("span", { className: "inline-flex rounded-md", children: /* @__PURE__ */ jsxs( "button", { type: "button", className: "inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-300 focus:outline-hidden focus:bg-gray-50 dark:focus:bg-gray-700 active:bg-gray-50 dark:active:bg-gray-700 transition ease-in-out duration-150", children: [ (_c2 = page.props.auth.user) == null ? void 0 : _c2.name, /* @__PURE__ */ jsx( "svg", { className: "ml-2 -mr-0.5 h-4 w-4", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: /* @__PURE__ */ jsx( "path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.5 8.25l-7.5 7.5-7.5-7.5" } ) } ) ] } ) }); }, children: [ /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Manage Account" }), /* @__PURE__ */ jsx(DropdownLink, { href: route("profile.show"), children: "Profile" }), page.props.jetstream.hasApiFeatures ? /* @__PURE__ */ jsx(DropdownLink, { href: route("api-tokens.index"), children: "API Tokens" }) : null, /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), /* @__PURE__ */ jsx("form", { onSubmit: logout, children: /* @__PURE__ */ jsx(DropdownLink, { as: "button", children: "Log Out" }) }) ] } ) }) ] }), /* @__PURE__ */ jsx("div", { className: "-mr-2 flex items-center sm:hidden", children: /* @__PURE__ */ jsx( "button", { onClick: () => setShowingNavigationDropdown(!showingNavigationDropdown), className: "inline-flex items-center justify-center p-2 rounded-md text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-900 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-900 focus:text-gray-500 dark:focus:text-gray-400 transition duration-150 ease-in-out", children: /* @__PURE__ */ jsxs( "svg", { className: "h-6 w-6", stroke: "currentColor", fill: "none", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ jsx( "path", { className: classNames({ hidden: showingNavigationDropdown, "inline-flex": !showingNavigationDropdown }), strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M4 6h16M4 12h16M4 18h16" } ), /* @__PURE__ */ jsx( "path", { className: classNames({ hidden: !showingNavigationDropdown, "inline-flex": showingNavigationDropdown }), strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M6 18L18 6M6 6l12 12" } ) ] } ) } ) }) ] }) }), /* @__PURE__ */ jsxs( "div", { className: classNames("sm:hidden", { block: showingNavigationDropdown, hidden: !showingNavigationDropdown }), children: [ /* @__PURE__ */ jsx("div", { className: "pt-2 pb-3 space-y-1", children: /* @__PURE__ */ jsx( ResponsiveNavLink, { href: route("dashboard"), active: route().current("dashboard"), children: "Dashboard" } ) }), /* @__PURE__ */ jsxs("div", { className: "pt-4 pb-1 border-t border-gray-200 dark:border-gray-600", children: [ /* @__PURE__ */ jsxs("div", { className: "flex items-center px-4", children: [ page.props.jetstream.managesProfilePhotos ? /* @__PURE__ */ jsx("div", { className: "shrink-0 mr-3", children: /* @__PURE__ */ jsx( "img", { className: "h-10 w-10 rounded-full object-cover", src: (_d = page.props.auth.user) == null ? void 0 : _d.profile_photo_url, alt: (_e = page.props.auth.user) == null ? void 0 : _e.name } ) }) : null, /* @__PURE__ */ jsxs("div", { children: [ /* @__PURE__ */ jsx("div", { className: "font-medium text-base text-gray-800 dark:text-gray-200", children: (_f = page.props.auth.user) == null ? void 0 : _f.name }), /* @__PURE__ */ jsx("div", { className: "font-medium text-sm text-gray-500", children: (_g = page.props.auth.user) == null ? void 0 : _g.email }) ] }) ] }), /* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-1", children: [ /* @__PURE__ */ jsx( ResponsiveNavLink, { href: route("profile.show"), active: route().current("profile.show"), children: "Profile" } ), page.props.jetstream.hasApiFeatures ? /* @__PURE__ */ jsx( ResponsiveNavLink, { href: route("api-tokens.index"), active: route().current("api-tokens.index"), children: "API Tokens" } ) : null, /* @__PURE__ */ jsx("form", { method: "POST", onSubmit: logout, children: /* @__PURE__ */ jsx(ResponsiveNavLink, { as: "button", children: "Log Out" }) }), page.props.jetstream.hasTeamFeatures ? /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Manage Team" }), /* @__PURE__ */ jsx( ResponsiveNavLink, { href: route("teams.show", [ (_h = page.props.auth.user) == null ? void 0 : _h.current_team ]), active: route().current("teams.show"), children: "Team Settings" } ), page.props.jetstream.canCreateTeams ? /* @__PURE__ */ jsx( ResponsiveNavLink, { href: route("teams.create"), active: route().current("teams.create"), children: "Create New Team" } ) : null, /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Switch Teams" }), (_j = (_i = page.props.auth.user) == null ? void 0 : _i.all_teams) == null ? void 0 : _j.map((team) => { var _a2; return /* @__PURE__ */ jsx("form", { onSubmit: (e) => switchToTeam(e, team), children: /* @__PURE__ */ jsx(ResponsiveNavLink, { as: "button", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ team.id == ((_a2 = page.props.auth.user) == null ? void 0 : _a2.current_team_id) && /* @__PURE__ */ jsx( "svg", { className: "mr-2 h-5 w-5 text-green-400", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) } ), /* @__PURE__ */ jsx("div", { children: team.name }) ] }) }) }, team.id); }) ] }) : null ] }) ] }) ] } ) ] }), renderHeader ? /* @__PURE__ */ jsx("header", { className: "bg-white dark:bg-gray-800 shadow-sm", children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8", children: renderHeader() }) }) : null, /* @__PURE__ */ jsx("main", { children }) ] }) ] }); } export { AppLayout as A };