@yeongseoksong/framework 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui/index.mjs CHANGED
@@ -1527,7 +1527,23 @@ var SdMapTabs = Tabs2;
1527
1527
  import { Box as Box11, Breadcrumbs } from "@mantine/core";
1528
1528
  import { usePathname } from "next/navigation";
1529
1529
  import { IconChevronRight, IconHome } from "@tabler/icons-react";
1530
- import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
1530
+
1531
+ // ui/template/NavProvider.tsx
1532
+ import { createContext, useContext } from "react";
1533
+ import { jsx as jsx28 } from "react/jsx-runtime";
1534
+ var NavContext = createContext([]);
1535
+ function NavProvider({
1536
+ children,
1537
+ navItems
1538
+ }) {
1539
+ return /* @__PURE__ */ jsx28(NavContext.Provider, { value: navItems, children });
1540
+ }
1541
+ function useNav() {
1542
+ return useContext(NavContext);
1543
+ }
1544
+
1545
+ // ui/molecule/Breadcrumb.tsx
1546
+ import { jsx as jsx29, jsxs as jsxs15 } from "react/jsx-runtime";
1531
1547
  function normalizePath(href) {
1532
1548
  if (!href) return "";
1533
1549
  const trimmed = href.replace(/\/+$/, "");
@@ -1553,7 +1569,7 @@ function buildTrail(navItems, currentHref) {
1553
1569
  }
1554
1570
  function SdBreadcrumb(_a4) {
1555
1571
  var _b = _a4, {
1556
- navItems,
1572
+ navItems: navItemsProp,
1557
1573
  currentHref,
1558
1574
  homeHref = "/",
1559
1575
  homeLabel = "\uD648"
@@ -1564,26 +1580,29 @@ function SdBreadcrumb(_a4) {
1564
1580
  "homeLabel"
1565
1581
  ]);
1566
1582
  var _a5;
1583
+ const navFromContext = useNav();
1584
+ const navItems = navItemsProp != null ? navItemsProp : navFromContext;
1567
1585
  const pathname = usePathname();
1568
1586
  const trail = buildTrail(navItems, (_a5 = currentHref != null ? currentHref : pathname) != null ? _a5 : "");
1569
- return /* @__PURE__ */ jsx28(Box11, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs15(
1587
+ if (navItems.length === 0) return;
1588
+ return /* @__PURE__ */ jsx29(Box11, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs15(
1570
1589
  Breadcrumbs,
1571
1590
  {
1572
- separator: /* @__PURE__ */ jsx28(IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1591
+ separator: /* @__PURE__ */ jsx29(IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1573
1592
  separatorMargin: "xs",
1574
1593
  children: [
1575
- /* @__PURE__ */ jsx28(
1594
+ /* @__PURE__ */ jsx29(
1576
1595
  SdLink.Sub,
1577
1596
  {
1578
1597
  href: homeHref,
1579
1598
  "aria-label": homeLabel,
1580
1599
  style: { display: "inline-flex", alignItems: "center" },
1581
- children: /* @__PURE__ */ jsx28(IconHome, { size: 16, stroke: 2 })
1600
+ children: /* @__PURE__ */ jsx29(IconHome, { size: 16, stroke: 2 })
1582
1601
  }
1583
1602
  ),
1584
1603
  trail.map((item, i) => {
1585
1604
  const isLast = i === trail.length - 1;
1586
- return isLast ? /* @__PURE__ */ jsx28(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ jsx28(SdLink.Sub, { href: item.href, children: item.label }, item.id);
1605
+ return isLast ? /* @__PURE__ */ jsx29(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ jsx29(SdLink.Sub, { href: item.href, children: item.label }, item.id);
1587
1606
  })
1588
1607
  ]
1589
1608
  }
@@ -1594,7 +1613,7 @@ function SdBreadcrumb(_a4) {
1594
1613
  import { Carousel } from "@mantine/carousel";
1595
1614
  import { Anchor as Anchor2, Box as Box12, Group as Group9, Stack as Stack15 } from "@mantine/core";
1596
1615
  import { IconArrowNarrowRight } from "@tabler/icons-react";
1597
- import { Fragment as Fragment3, jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
1616
+ import { Fragment as Fragment3, jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
1598
1617
  var variantMap = {
1599
1618
  primary: SdButton.Primary,
1600
1619
  secondary: SdButton.Secondary,
@@ -1604,12 +1623,12 @@ var variantMap = {
1604
1623
  function CtaButton({ cta }) {
1605
1624
  var _a4;
1606
1625
  const Button3 = variantMap[(_a4 = cta.variant) != null ? _a4 : "primary"];
1607
- return /* @__PURE__ */ jsx29(Anchor2, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ jsx29(Button3, { size: "md", rightSection: /* @__PURE__ */ jsx29(IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ jsx29(Button3, { size: "md", children: cta.label }) });
1626
+ return /* @__PURE__ */ jsx30(Anchor2, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ jsx30(Button3, { size: "md", rightSection: /* @__PURE__ */ jsx30(IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ jsx30(Button3, { size: "md", children: cta.label }) });
1608
1627
  }
1609
1628
  function HeroCarousel({ slides, children }) {
1610
- if (children) return /* @__PURE__ */ jsx29(Fragment3, { children });
1629
+ if (children) return /* @__PURE__ */ jsx30(Fragment3, { children });
1611
1630
  const filterdSlides = filterAndSort(slides);
1612
- return /* @__PURE__ */ jsx29(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx29(Carousel.Slide, { children: /* @__PURE__ */ jsx29(
1631
+ return /* @__PURE__ */ jsx30(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx30(Carousel.Slide, { children: /* @__PURE__ */ jsx30(
1613
1632
  Box12,
1614
1633
  {
1615
1634
  style: {
@@ -1622,7 +1641,7 @@ function HeroCarousel({ slides, children }) {
1622
1641
  justifyContent: "center"
1623
1642
  },
1624
1643
  children: /* @__PURE__ */ jsxs16(Stack15, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
1625
- /* @__PURE__ */ jsx29(
1644
+ /* @__PURE__ */ jsx30(
1626
1645
  SdTextBox.Hero,
1627
1646
  {
1628
1647
  title: slide.title,
@@ -1631,7 +1650,7 @@ function HeroCarousel({ slides, children }) {
1631
1650
  align: "center"
1632
1651
  }
1633
1652
  ),
1634
- slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ jsx29(Group9, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ jsx29(CtaButton, { cta }, cta.href)) })
1653
+ slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ jsx30(Group9, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ jsx30(CtaButton, { cta }, cta.href)) })
1635
1654
  ] })
1636
1655
  }
1637
1656
  ) }, i)) });
@@ -1641,7 +1660,7 @@ function HeroCarousel({ slides, children }) {
1641
1660
  import { Box as Box13, Burger, Drawer, Group as Group10, Menu, NavLink, Stack as Stack16 } from "@mantine/core";
1642
1661
  import { IconChevronDown } from "@tabler/icons-react";
1643
1662
  import { useDisclosure, useFocusWithin, useHover, useMergedRef } from "@mantine/hooks";
1644
- import { Fragment as Fragment4, jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
1663
+ import { Fragment as Fragment4, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
1645
1664
  var BAR_HEIGHT = 60;
1646
1665
  var MAX_DEPTH = 3;
1647
1666
  var NAV_LINK_STYLES = {
@@ -1663,9 +1682,9 @@ function useNavTree(navItems) {
1663
1682
  function MobileNavNode({ item, depth, childrenOf, close }) {
1664
1683
  const kids = depth < MAX_DEPTH ? childrenOf(item.id) : [];
1665
1684
  if (kids.length === 0) {
1666
- return /* @__PURE__ */ jsx30(Box13, { px: "sm", py: 8, children: /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
1685
+ return /* @__PURE__ */ jsx31(Box13, { px: "sm", py: 8, children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
1667
1686
  }
1668
- return /* @__PURE__ */ jsx30(
1687
+ return /* @__PURE__ */ jsx31(
1669
1688
  NavLink,
1670
1689
  {
1671
1690
  label: item.label,
@@ -1673,7 +1692,7 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1673
1692
  component: item.href ? "a" : "button",
1674
1693
  href: item.href,
1675
1694
  childrenOffset: 28,
1676
- children: kids.map((kid) => /* @__PURE__ */ jsx30(
1695
+ children: kids.map((kid) => /* @__PURE__ */ jsx31(
1677
1696
  MobileNavNode,
1678
1697
  {
1679
1698
  item: kid,
@@ -1687,9 +1706,9 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1687
1706
  );
1688
1707
  }
1689
1708
  function MobileNav({ opened, close, topItems, childrenOf, loginFlag }) {
1690
- return /* @__PURE__ */ jsx30(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs17(Stack16, { gap: 0, children: [
1691
- topItems.map((item) => /* @__PURE__ */ jsx30(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
1692
- loginFlag && /* @__PURE__ */ jsx30(Stack16, { gap: "xs", mt: "md", children: /* @__PURE__ */ jsx30(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1709
+ return /* @__PURE__ */ jsx31(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs17(Stack16, { gap: 0, children: [
1710
+ topItems.map((item) => /* @__PURE__ */ jsx31(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
1711
+ loginFlag && /* @__PURE__ */ jsx31(Stack16, { gap: "xs", mt: "md", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1693
1712
  ] }) });
1694
1713
  }
1695
1714
  function MegaHeader({ navItems, loginFlag }) {
@@ -1700,7 +1719,7 @@ function MegaHeader({ navItems, loginFlag }) {
1700
1719
  const rootRef = useMergedRef(hoverRef, focusRef);
1701
1720
  const expanded = hasAnyChildren && (hovered || focused);
1702
1721
  return /* @__PURE__ */ jsxs17(Fragment4, { children: [
1703
- /* @__PURE__ */ jsx30(
1722
+ /* @__PURE__ */ jsx31(
1704
1723
  Box13,
1705
1724
  {
1706
1725
  ref: rootRef,
@@ -1711,12 +1730,12 @@ function MegaHeader({ navItems, loginFlag }) {
1711
1730
  borderBottom: expanded ? "1px solid var(--mantine-color-slate-2)" : void 0,
1712
1731
  transition: "box-shadow 0.15s"
1713
1732
  },
1714
- children: /* @__PURE__ */ jsx30(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
1715
- /* @__PURE__ */ jsx30(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx30(Logo, {}) }),
1716
- /* @__PURE__ */ jsx30(Group10, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1733
+ children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
1734
+ /* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(Logo, {}) }),
1735
+ /* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1717
1736
  const kids = childrenOf(item.id);
1718
1737
  return /* @__PURE__ */ jsxs17(Stack16, { gap: 0, align: "center", children: [
1719
- /* @__PURE__ */ jsx30(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }) }),
1738
+ /* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }) }),
1720
1739
  kids.length > 0 && /*
1721
1740
  Mantine Collapse를 쓰지 않는다 — 접힐 때 display:none이 되어
1722
1741
  하위 링크가 폭 계산에서 빠졌다가 펼칠 때 다시 들어오면서
@@ -1724,7 +1743,7 @@ function MegaHeader({ navItems, loginFlag }) {
1724
1743
  height 0 + overflow hidden은 폭 기여를 유지하므로 간격이 고정된다.
1725
1744
  visibility:hidden이 접힌 상태의 링크를 탭 순서에서도 빼준다.
1726
1745
  */
1727
- /* @__PURE__ */ jsx30(
1746
+ /* @__PURE__ */ jsx31(
1728
1747
  Box13,
1729
1748
  {
1730
1749
  "aria-hidden": !expanded,
@@ -1735,14 +1754,14 @@ function MegaHeader({ navItems, loginFlag }) {
1735
1754
  visibility: expanded ? "visible" : "hidden",
1736
1755
  transition: "opacity 0.15s ease"
1737
1756
  },
1738
- children: /* @__PURE__ */ jsx30(Stack16, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1757
+ children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1739
1758
  const grandkids = childrenOf(kid.id);
1740
1759
  if (grandkids.length === 0) {
1741
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1760
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1742
1761
  }
1743
1762
  return /* @__PURE__ */ jsxs17(Stack16, { gap: 2, align: "center", children: [
1744
- /* @__PURE__ */ jsx30(SdLink.Body, { href: kid.href, children: kid.label }),
1745
- grandkids.map((gk) => /* @__PURE__ */ jsx30(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
1763
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
1764
+ grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
1746
1765
  ] }, kid.id);
1747
1766
  }) })
1748
1767
  }
@@ -1750,13 +1769,13 @@ function MegaHeader({ navItems, loginFlag }) {
1750
1769
  ] }, item.id);
1751
1770
  }) }),
1752
1771
  /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, align: "center", gap: "sm", wrap: "nowrap", children: [
1753
- /* @__PURE__ */ jsx30(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1754
- loginFlag && /* @__PURE__ */ jsx30(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx30(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1772
+ /* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1773
+ loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1755
1774
  ] })
1756
1775
  ] }) })
1757
1776
  }
1758
1777
  ),
1759
- /* @__PURE__ */ jsx30(
1778
+ /* @__PURE__ */ jsx31(
1760
1779
  MobileNav,
1761
1780
  {
1762
1781
  opened,
@@ -1769,18 +1788,18 @@ function MegaHeader({ navItems, loginFlag }) {
1769
1788
  ] });
1770
1789
  }
1771
1790
  function renderMenuLeaf(item) {
1772
- return item.href ? /* @__PURE__ */ jsx30(Menu.Item, { component: "a", href: item.href, children: item.label }, item.id) : /* @__PURE__ */ jsx30(Menu.Label, { children: item.label }, item.id);
1791
+ return item.href ? /* @__PURE__ */ jsx31(Menu.Item, { component: "a", href: item.href, children: item.label }, item.id) : /* @__PURE__ */ jsx31(Menu.Label, { children: item.label }, item.id);
1773
1792
  }
1774
1793
  function SimpleHeader({ navItems, loginFlag }) {
1775
1794
  const [opened, { toggle, close }] = useDisclosure();
1776
1795
  const { topItems, childrenOf } = useNavTree(navItems);
1777
1796
  return /* @__PURE__ */ jsxs17(Fragment4, { children: [
1778
- /* @__PURE__ */ jsx30(Box13, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ jsx30(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1779
- /* @__PURE__ */ jsx30(Logo, {}),
1780
- /* @__PURE__ */ jsx30(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1797
+ /* @__PURE__ */ jsx31(Box13, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1798
+ /* @__PURE__ */ jsx31(Logo, {}),
1799
+ /* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1781
1800
  const kids = childrenOf(item.id);
1782
1801
  if (kids.length === 0) {
1783
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }, item.id);
1802
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
1784
1803
  }
1785
1804
  return (
1786
1805
  /*
@@ -1800,16 +1819,16 @@ function SimpleHeader({ navItems, loginFlag }) {
1800
1819
  radius: "md",
1801
1820
  withinPortal: true,
1802
1821
  children: [
1803
- /* @__PURE__ */ jsx30(Menu.Target, { children: /* @__PURE__ */ jsx30(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
1804
- /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }),
1805
- /* @__PURE__ */ jsx30(IconChevronDown, { size: 14, stroke: 2 })
1822
+ /* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
1823
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
1824
+ /* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
1806
1825
  ] }) }) }),
1807
- /* @__PURE__ */ jsx30(Menu.Dropdown, { children: kids.map((kid) => {
1826
+ /* @__PURE__ */ jsx31(Menu.Dropdown, { children: kids.map((kid) => {
1808
1827
  const grandkids = childrenOf(kid.id);
1809
1828
  if (grandkids.length > 0) {
1810
1829
  return /* @__PURE__ */ jsxs17(Menu.Sub, { children: [
1811
- /* @__PURE__ */ jsx30(Menu.Sub.Target, { children: /* @__PURE__ */ jsx30(Menu.Sub.Item, { children: kid.label }) }),
1812
- /* @__PURE__ */ jsx30(Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
1830
+ /* @__PURE__ */ jsx31(Menu.Sub.Target, { children: /* @__PURE__ */ jsx31(Menu.Sub.Item, { children: kid.label }) }),
1831
+ /* @__PURE__ */ jsx31(Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
1813
1832
  ] }, kid.id);
1814
1833
  }
1815
1834
  return renderMenuLeaf(kid);
@@ -1821,11 +1840,11 @@ function SimpleHeader({ navItems, loginFlag }) {
1821
1840
  );
1822
1841
  }) }),
1823
1842
  /* @__PURE__ */ jsxs17(Group10, { align: "center", gap: "sm", wrap: "nowrap", children: [
1824
- /* @__PURE__ */ jsx30(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1825
- loginFlag && /* @__PURE__ */ jsx30(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx30(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1843
+ /* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1844
+ loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1826
1845
  ] })
1827
1846
  ] }) }) }),
1828
- /* @__PURE__ */ jsx30(
1847
+ /* @__PURE__ */ jsx31(
1829
1848
  MobileNav,
1830
1849
  {
1831
1850
  opened,
@@ -1841,12 +1860,12 @@ function PanelHeader({ navItems, loginFlag }) {
1841
1860
  const [opened, { toggle, close }] = useDisclosure();
1842
1861
  const { topItems, childrenOf } = useNavTree(navItems);
1843
1862
  return /* @__PURE__ */ jsxs17(Fragment4, { children: [
1844
- /* @__PURE__ */ jsx30(Box13, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ jsx30(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1845
- /* @__PURE__ */ jsx30(Logo, {}),
1846
- /* @__PURE__ */ jsx30(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1863
+ /* @__PURE__ */ jsx31(Box13, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1864
+ /* @__PURE__ */ jsx31(Logo, {}),
1865
+ /* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1847
1866
  const kids = childrenOf(item.id);
1848
1867
  if (kids.length === 0) {
1849
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }, item.id);
1868
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
1850
1869
  }
1851
1870
  return /* @__PURE__ */ jsxs17(
1852
1871
  Menu,
@@ -1860,18 +1879,18 @@ function PanelHeader({ navItems, loginFlag }) {
1860
1879
  radius: "md",
1861
1880
  withinPortal: true,
1862
1881
  children: [
1863
- /* @__PURE__ */ jsx30(Menu.Target, { children: /* @__PURE__ */ jsx30(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
1864
- /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }),
1865
- /* @__PURE__ */ jsx30(IconChevronDown, { size: 14, stroke: 2 })
1882
+ /* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
1883
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
1884
+ /* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
1866
1885
  ] }) }) }),
1867
- /* @__PURE__ */ jsx30(Menu.Dropdown, { children: /* @__PURE__ */ jsx30(Stack16, { gap: "xs", p: "xs", children: kids.map((kid) => {
1886
+ /* @__PURE__ */ jsx31(Menu.Dropdown, { children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", p: "xs", children: kids.map((kid) => {
1868
1887
  const grandkids = childrenOf(kid.id);
1869
1888
  if (grandkids.length === 0) {
1870
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1889
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1871
1890
  }
1872
1891
  return /* @__PURE__ */ jsxs17(Stack16, { gap: 2, children: [
1873
- /* @__PURE__ */ jsx30(SdLink.Body, { href: kid.href, children: kid.label }),
1874
- grandkids.map((gk) => /* @__PURE__ */ jsx30(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
1892
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
1893
+ grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
1875
1894
  ] }, kid.id);
1876
1895
  }) }) })
1877
1896
  ]
@@ -1880,11 +1899,11 @@ function PanelHeader({ navItems, loginFlag }) {
1880
1899
  );
1881
1900
  }) }),
1882
1901
  /* @__PURE__ */ jsxs17(Group10, { align: "center", gap: "sm", wrap: "nowrap", children: [
1883
- /* @__PURE__ */ jsx30(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1884
- loginFlag && /* @__PURE__ */ jsx30(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx30(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1902
+ /* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1903
+ loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1885
1904
  ] })
1886
1905
  ] }) }) }),
1887
- /* @__PURE__ */ jsx30(
1906
+ /* @__PURE__ */ jsx31(
1888
1907
  MobileNav,
1889
1908
  {
1890
1909
  opened,
@@ -1916,16 +1935,16 @@ import {
1916
1935
  IconBrandYoutube,
1917
1936
  IconWorld
1918
1937
  } from "@tabler/icons-react";
1919
- import { Fragment as Fragment5, jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
1938
+ import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
1920
1939
  function FooterNavColumns({ items }) {
1921
1940
  const topLevel = items.filter((item) => !item.parentId);
1922
1941
  const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
1923
1942
  const CHILD_THRESH = 4;
1924
- return /* @__PURE__ */ jsx31(Fragment5, { children: topLevel.map((group) => /* @__PURE__ */ jsx31(Grid5.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ jsxs18(Stack17, { gap: "xs", children: [
1925
- /* @__PURE__ */ jsx31(SdLink.Sub, { href: group.href, children: group.label }, group.id),
1943
+ return /* @__PURE__ */ jsx32(Fragment5, { children: topLevel.map((group) => /* @__PURE__ */ jsx32(Grid5.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ jsxs18(Stack17, { gap: "xs", children: [
1944
+ /* @__PURE__ */ jsx32(SdLink.Sub, { href: group.href, children: group.label }, group.id),
1926
1945
  getChildren(group.id).map((link, id) => {
1927
1946
  if (id >= CHILD_THRESH) return;
1928
- return /* @__PURE__ */ jsx31(SdLink.Hint, { href: link.href, children: link.label }, link.id);
1947
+ return /* @__PURE__ */ jsx32(SdLink.Hint, { href: link.href, children: link.label }, link.id);
1929
1948
  })
1930
1949
  ] }) }, group.id)) });
1931
1950
  }
@@ -1939,10 +1958,10 @@ var SOCIAL_ICONS = {
1939
1958
  blog: IconWorld
1940
1959
  };
1941
1960
  function FooterSocials({ items }) {
1942
- return /* @__PURE__ */ jsx31(Group11, { gap: 0, wrap: "nowrap", children: items.map((item) => {
1961
+ return /* @__PURE__ */ jsx32(Group11, { gap: 0, wrap: "nowrap", children: items.map((item) => {
1943
1962
  var _a4, _b;
1944
1963
  const Icon = (_a4 = SOCIAL_ICONS[item.platform]) != null ? _a4 : IconWorld;
1945
- return /* @__PURE__ */ jsx31(
1964
+ return /* @__PURE__ */ jsx32(
1946
1965
  ActionIcon,
1947
1966
  {
1948
1967
  component: "a",
@@ -1953,7 +1972,7 @@ function FooterSocials({ items }) {
1953
1972
  color: "gray",
1954
1973
  variant: "subtle",
1955
1974
  "aria-label": (_b = item.label) != null ? _b : item.platform,
1956
- children: /* @__PURE__ */ jsx31(Icon, { size: 18, stroke: 1.5 })
1975
+ children: /* @__PURE__ */ jsx32(Icon, { size: 18, stroke: 1.5 })
1957
1976
  },
1958
1977
  item.url
1959
1978
  );
@@ -1961,32 +1980,32 @@ function FooterSocials({ items }) {
1961
1980
  }
1962
1981
  function InfoCell({ label, children }) {
1963
1982
  return /* @__PURE__ */ jsxs18(Group11, { gap: 6, wrap: "nowrap", align: "baseline", children: [
1964
- /* @__PURE__ */ jsx31(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
1965
- typeof children === "string" ? /* @__PURE__ */ jsx31(SdText.Sub, { children }) : children
1983
+ /* @__PURE__ */ jsx32(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
1984
+ typeof children === "string" ? /* @__PURE__ */ jsx32(SdText.Sub, { children }) : children
1966
1985
  ] });
1967
1986
  }
1968
1987
  function FooterCompanyInfo({ company }) {
1969
1988
  const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
1970
1989
  return /* @__PURE__ */ jsxs18(SimpleGrid6, { cols: { base: 2, sm: 2, md: 1 }, spacing: "md", verticalSpacing: 0, children: [
1971
- /* @__PURE__ */ jsx31(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
1972
- /* @__PURE__ */ jsx31(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
1973
- sortedAddresses.map((addr) => /* @__PURE__ */ jsx31(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
1974
- /* @__PURE__ */ jsx31(InfoCell, { label: "Tel", children: /* @__PURE__ */ jsx31(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
1975
- company.fax && /* @__PURE__ */ jsx31(InfoCell, { label: "Fax", children: company.fax }),
1976
- /* @__PURE__ */ jsx31(InfoCell, { label: "Email", children: /* @__PURE__ */ jsx31(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
1990
+ /* @__PURE__ */ jsx32(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
1991
+ /* @__PURE__ */ jsx32(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
1992
+ sortedAddresses.map((addr) => /* @__PURE__ */ jsx32(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
1993
+ /* @__PURE__ */ jsx32(InfoCell, { label: "Tel", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
1994
+ company.fax && /* @__PURE__ */ jsx32(InfoCell, { label: "Fax", children: company.fax }),
1995
+ /* @__PURE__ */ jsx32(InfoCell, { label: "Email", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
1977
1996
  ] });
1978
1997
  }
1979
1998
  function SdFooter({ company, navItems, policyLinks, description }) {
1980
1999
  const visibleNav = filterAndSort(navItems);
1981
2000
  const visiblePolicy = filterAndSort(policyLinks);
1982
- return /* @__PURE__ */ jsx31(Box14, { component: "footer", children: /* @__PURE__ */ jsx31(SdContainer, { py: "lg", children: /* @__PURE__ */ jsxs18(Stack17, { children: [
1983
- /* @__PURE__ */ jsx31(Logo, { size: "sm" }),
1984
- description && /* @__PURE__ */ jsx31(SdText.Sub, { children: description }),
2001
+ return /* @__PURE__ */ jsx32(Box14, { component: "footer", children: /* @__PURE__ */ jsx32(SdContainer, { py: "lg", children: /* @__PURE__ */ jsxs18(Stack17, { children: [
2002
+ /* @__PURE__ */ jsx32(Logo, { size: "sm" }),
2003
+ description && /* @__PURE__ */ jsx32(SdText.Sub, { children: description }),
1985
2004
  /* @__PURE__ */ jsxs18(Flex, { direction: { base: "column", md: "row" }, gap: 48, align: "flex-start", children: [
1986
- /* @__PURE__ */ jsx31(Box14, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx31(FooterCompanyInfo, { company }) }),
1987
- visibleNav.length > 0 && /* @__PURE__ */ jsx31(Box14, { flex: { base: "0 0 auto", md: "2 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx31(Grid5, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ jsx31(FooterNavColumns, { items: visibleNav }) }) })
2005
+ /* @__PURE__ */ jsx32(Box14, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx32(FooterCompanyInfo, { company }) }),
2006
+ visibleNav.length > 0 && /* @__PURE__ */ jsx32(Box14, { flex: { base: "0 0 auto", md: "2 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx32(Grid5, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ jsx32(FooterNavColumns, { items: visibleNav }) }) })
1988
2007
  ] }),
1989
- /* @__PURE__ */ jsx31(Divider3, {}),
2008
+ /* @__PURE__ */ jsx32(Divider3, {}),
1990
2009
  /* @__PURE__ */ jsxs18(Group11, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
1991
2010
  /* @__PURE__ */ jsxs18(SdText.Sub, { children: [
1992
2011
  "\xA9 ",
@@ -1996,11 +2015,11 @@ function SdFooter({ company, navItems, policyLinks, description }) {
1996
2015
  ". All rights reserved."
1997
2016
  ] }),
1998
2017
  /* @__PURE__ */ jsxs18(Group11, { gap: "lg", wrap: "wrap", children: [
1999
- visiblePolicy.length > 0 && /* @__PURE__ */ jsx31(Group11, { gap: "lg", children: visiblePolicy.map((item) => {
2018
+ visiblePolicy.length > 0 && /* @__PURE__ */ jsx32(Group11, { gap: "lg", children: visiblePolicy.map((item) => {
2000
2019
  const Link4 = item.highlight ? SdLink.Body : SdLink.Sub;
2001
- return /* @__PURE__ */ jsx31(Link4, { href: item.href, children: item.label }, item.id);
2020
+ return /* @__PURE__ */ jsx32(Link4, { href: item.href, children: item.label }, item.id);
2002
2021
  }) }),
2003
- company.socials && company.socials.length > 0 && /* @__PURE__ */ jsx31(FooterSocials, { items: company.socials })
2022
+ company.socials && company.socials.length > 0 && /* @__PURE__ */ jsx32(FooterSocials, { items: company.socials })
2004
2023
  ] })
2005
2024
  ] })
2006
2025
  ] }) }) });
@@ -2008,7 +2027,7 @@ function SdFooter({ company, navItems, policyLinks, description }) {
2008
2027
 
2009
2028
  // ui/organism/FeatureSection.tsx
2010
2029
  import { Stack as Stack18 } from "@mantine/core";
2011
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2030
+ import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
2012
2031
  function SdFeatureSection(_a4) {
2013
2032
  var _b = _a4, {
2014
2033
  label,
@@ -2025,8 +2044,8 @@ function SdFeatureSection(_a4) {
2025
2044
  "cols",
2026
2045
  "py"
2027
2046
  ]);
2028
- return /* @__PURE__ */ jsx32(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs19(Stack18, { gap: "xl", children: [
2029
- /* @__PURE__ */ jsx32(
2047
+ return /* @__PURE__ */ jsx33(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs19(Stack18, { gap: "xl", children: [
2048
+ /* @__PURE__ */ jsx33(
2030
2049
  SdTextBox.Section,
2031
2050
  {
2032
2051
  label,
@@ -2037,13 +2056,13 @@ function SdFeatureSection(_a4) {
2037
2056
  align: "center"
2038
2057
  }
2039
2058
  ),
2040
- /* @__PURE__ */ jsx32(SdFeatures, { items, cols })
2059
+ /* @__PURE__ */ jsx33(SdFeatures, { items, cols })
2041
2060
  ] }) }));
2042
2061
  }
2043
2062
 
2044
2063
  // ui/organism/TimelineSection.tsx
2045
2064
  import { Center as Center3, Stack as Stack19 } from "@mantine/core";
2046
- import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
2065
+ import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
2047
2066
  function SdTimelineSection(_a4) {
2048
2067
  var _b = _a4, {
2049
2068
  label,
@@ -2058,15 +2077,15 @@ function SdTimelineSection(_a4) {
2058
2077
  "items",
2059
2078
  "py"
2060
2079
  ]);
2061
- return /* @__PURE__ */ jsx33(Center3, { children: /* @__PURE__ */ jsxs20(Stack19, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
2062
- /* @__PURE__ */ jsx33(SdTextBox.Section, { label, title, description }),
2063
- /* @__PURE__ */ jsx33(Center3, { children: /* @__PURE__ */ jsx33(SdTimeline, { items }) })
2080
+ return /* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsxs20(Stack19, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
2081
+ /* @__PURE__ */ jsx34(SdTextBox.Section, { label, title, description }),
2082
+ /* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsx34(SdTimeline, { items }) })
2064
2083
  ] })) });
2065
2084
  }
2066
2085
 
2067
2086
  // ui/organism/StepsSection.tsx
2068
2087
  import { Stack as Stack20 } from "@mantine/core";
2069
- import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
2088
+ import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
2070
2089
  function SdStepsSection(_a4) {
2071
2090
  var _b = _a4, {
2072
2091
  label,
@@ -2081,17 +2100,17 @@ function SdStepsSection(_a4) {
2081
2100
  "items",
2082
2101
  "py"
2083
2102
  ]);
2084
- return /* @__PURE__ */ jsx34(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs21(Stack20, { gap: "xl", children: [
2085
- (label || title || description) && /* @__PURE__ */ jsx34(SdTextBox.Section, { label, title, description }),
2086
- /* @__PURE__ */ jsx34(SdSteps.Bubble, { items })
2103
+ return /* @__PURE__ */ jsx35(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs21(Stack20, { gap: "xl", children: [
2104
+ (label || title || description) && /* @__PURE__ */ jsx35(SdTextBox.Section, { label, title, description }),
2105
+ /* @__PURE__ */ jsx35(SdSteps.Bubble, { items })
2087
2106
  ] }) }));
2088
2107
  }
2089
2108
 
2090
2109
  // ui/organism/ErrorView.tsx
2091
2110
  import { Center as Center4, Group as Group12, Stack as Stack21, Text as Text2 } from "@mantine/core";
2092
- import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
2111
+ import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
2093
2112
  function StatusCode({ code }) {
2094
- return /* @__PURE__ */ jsx35(
2113
+ return /* @__PURE__ */ jsx36(
2095
2114
  Text2,
2096
2115
  {
2097
2116
  fz: 160,
@@ -2105,15 +2124,15 @@ function StatusCode({ code }) {
2105
2124
  );
2106
2125
  }
2107
2126
  function Page({ error, onReset, onHome }) {
2108
- return /* @__PURE__ */ jsx35(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx35(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
2109
- /* @__PURE__ */ jsx35(StatusCode, { code: "500" }),
2127
+ return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
2128
+ /* @__PURE__ */ jsx36(StatusCode, { code: "500" }),
2110
2129
  /* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
2111
- /* @__PURE__ */ jsx35(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
2112
- /* @__PURE__ */ jsx35(SdText.Body, { maw: 480, children: "\uC608\uAE30\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694." })
2130
+ /* @__PURE__ */ jsx36(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
2131
+ /* @__PURE__ */ jsx36(SdText.Body, { maw: 480, children: "\uC608\uAE30\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694." })
2113
2132
  ] }),
2114
2133
  /* @__PURE__ */ jsxs22(Group12, { gap: "sm", justify: "center", children: [
2115
- /* @__PURE__ */ jsx35(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
2116
- onHome && /* @__PURE__ */ jsx35(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
2134
+ /* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
2135
+ onHome && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
2117
2136
  ] })
2118
2137
  ] }) }) });
2119
2138
  }
@@ -2125,15 +2144,15 @@ function NotFound({
2125
2144
  },
2126
2145
  onBack = () => window.history.back()
2127
2146
  }) {
2128
- return /* @__PURE__ */ jsx35(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx35(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
2129
- /* @__PURE__ */ jsx35(StatusCode, { code: "404" }),
2147
+ return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
2148
+ /* @__PURE__ */ jsx36(StatusCode, { code: "404" }),
2130
2149
  /* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
2131
- /* @__PURE__ */ jsx35(SdTitle.Section, { children: title }),
2132
- /* @__PURE__ */ jsx35(SdText.Body, { maw: 480, children: description })
2150
+ /* @__PURE__ */ jsx36(SdTitle.Section, { children: title }),
2151
+ /* @__PURE__ */ jsx36(SdText.Body, { maw: 480, children: description })
2133
2152
  ] }),
2134
2153
  /* @__PURE__ */ jsxs22(Group12, { gap: "sm", justify: "center", children: [
2135
- onHome && /* @__PURE__ */ jsx35(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
2136
- onBack && /* @__PURE__ */ jsx35(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
2154
+ onHome && /* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
2155
+ onBack && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
2137
2156
  ] })
2138
2157
  ] }) }) });
2139
2158
  }
@@ -2173,7 +2192,7 @@ var brandDotTexture = {
2173
2192
  };
2174
2193
 
2175
2194
  // ui/organism/LoginView.tsx
2176
- import { Fragment as Fragment6, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
2195
+ import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
2177
2196
  var SOCIAL_META = {
2178
2197
  google: { Icon: IconBrandGoogle, label: "\uAD6C\uAE00\uB85C \uB85C\uADF8\uC778" },
2179
2198
  kakao: { Icon: IconBrandKakaoTalk, label: "\uCE74\uCE74\uC624\uB85C \uB85C\uADF8\uC778" },
@@ -2202,9 +2221,9 @@ function LoginForm({
2202
2221
  remember: data.get("remember") === "on"
2203
2222
  });
2204
2223
  }
2205
- return /* @__PURE__ */ jsx36("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ jsxs23(Stack22, { gap: "md", children: [
2206
- error && /* @__PURE__ */ jsx36(SdText.Error, { children: error }),
2207
- /* @__PURE__ */ jsx36(
2224
+ return /* @__PURE__ */ jsx37("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ jsxs23(Stack22, { gap: "md", children: [
2225
+ error && /* @__PURE__ */ jsx37(SdText.Error, { children: error }),
2226
+ /* @__PURE__ */ jsx37(
2208
2227
  SdInput.Email,
2209
2228
  {
2210
2229
  name: "email",
@@ -2214,7 +2233,7 @@ function LoginForm({
2214
2233
  required: true
2215
2234
  }
2216
2235
  ),
2217
- /* @__PURE__ */ jsx36(
2236
+ /* @__PURE__ */ jsx37(
2218
2237
  SdInput.Password,
2219
2238
  {
2220
2239
  name: "password",
@@ -2225,32 +2244,32 @@ function LoginForm({
2225
2244
  }
2226
2245
  ),
2227
2246
  (withRemember || findPasswordHref) && /* @__PURE__ */ jsxs23(Group13, { justify: "space-between", align: "center", wrap: "nowrap", children: [
2228
- withRemember ? /* @__PURE__ */ jsx36(Checkbox2, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ jsx36("span", {}),
2229
- findPasswordHref && /* @__PURE__ */ jsx36(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
2247
+ withRemember ? /* @__PURE__ */ jsx37(Checkbox2, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ jsx37("span", {}),
2248
+ findPasswordHref && /* @__PURE__ */ jsx37(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
2230
2249
  ] }),
2231
- /* @__PURE__ */ jsx36(
2250
+ /* @__PURE__ */ jsx37(
2232
2251
  SdButton.Primary,
2233
2252
  {
2234
2253
  type: "submit",
2235
2254
  fullWidth: true,
2236
2255
  loading,
2237
- leftSection: /* @__PURE__ */ jsx36(IconLogin2, { size: 16 }),
2256
+ leftSection: /* @__PURE__ */ jsx37(IconLogin2, { size: 16 }),
2238
2257
  children: submitLabel
2239
2258
  }
2240
2259
  ),
2241
2260
  socials && socials.length > 0 && /* @__PURE__ */ jsxs23(Fragment6, { children: [
2242
- /* @__PURE__ */ jsx36(Divider4, { label: "\uB610\uB294", labelPosition: "center" }),
2243
- /* @__PURE__ */ jsx36(Stack22, { gap: "xs", children: socials.map((social) => {
2261
+ /* @__PURE__ */ jsx37(Divider4, { label: "\uB610\uB294", labelPosition: "center" }),
2262
+ /* @__PURE__ */ jsx37(Stack22, { gap: "xs", children: socials.map((social) => {
2244
2263
  var _a4;
2245
2264
  const { Icon, label } = SOCIAL_META[social.provider];
2246
- return /* @__PURE__ */ jsx36(
2265
+ return /* @__PURE__ */ jsx37(
2247
2266
  SdButton.Outline,
2248
2267
  {
2249
2268
  color: "slate",
2250
2269
  fullWidth: true,
2251
2270
  type: "button",
2252
2271
  onClick: social.onClick,
2253
- leftSection: /* @__PURE__ */ jsx36(Icon, { size: 16 }),
2272
+ leftSection: /* @__PURE__ */ jsx37(Icon, { size: 16 }),
2254
2273
  children: (_a4 = social.label) != null ? _a4 : label
2255
2274
  },
2256
2275
  social.provider
@@ -2258,16 +2277,16 @@ function LoginForm({
2258
2277
  }) })
2259
2278
  ] }),
2260
2279
  signUpHref && /* @__PURE__ */ jsxs23(Group13, { gap: 6, justify: "center", children: [
2261
- /* @__PURE__ */ jsx36(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
2262
- /* @__PURE__ */ jsx36(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
2280
+ /* @__PURE__ */ jsx37(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
2281
+ /* @__PURE__ */ jsx37(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
2263
2282
  ] }),
2264
2283
  children
2265
2284
  ] }) });
2266
2285
  }
2267
2286
  function FormHeader({ title, description }) {
2268
2287
  return /* @__PURE__ */ jsxs23(Stack22, { gap: "lg", children: [
2269
- /* @__PURE__ */ jsx36(Logo, { size: "sm" }),
2270
- /* @__PURE__ */ jsx36(SdTextBox.Card, { title, description: description != null ? description : "" })
2288
+ /* @__PURE__ */ jsx37(Logo, { size: "sm" }),
2289
+ /* @__PURE__ */ jsx37(SdTextBox.Card, { title, description: description != null ? description : "" })
2271
2290
  ] });
2272
2291
  }
2273
2292
  function Card7(_a4) {
@@ -2280,9 +2299,9 @@ function Card7(_a4) {
2280
2299
  "description",
2281
2300
  "mih"
2282
2301
  ]);
2283
- return /* @__PURE__ */ jsx36(Center5, { mih, bg: "slate.0", p: "md", children: /* @__PURE__ */ jsx36(Paper, { w: "100%", maw: 420, p: { base: "lg", sm: "xl" }, radius: "lg", withBorder: true, shadow: "sm", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", children: [
2284
- /* @__PURE__ */ jsx36(FormHeader, { title, description }),
2285
- /* @__PURE__ */ jsx36(LoginForm, __spreadValues({}, formProps))
2302
+ return /* @__PURE__ */ jsx37(Center5, { mih, bg: "slate.0", p: "md", children: /* @__PURE__ */ jsx37(Paper, { w: "100%", maw: 420, p: { base: "lg", sm: "xl" }, radius: "lg", withBorder: true, shadow: "sm", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", children: [
2303
+ /* @__PURE__ */ jsx37(FormHeader, { title, description }),
2304
+ /* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
2286
2305
  ] }) }) });
2287
2306
  }
2288
2307
  function Split(_a4) {
@@ -2307,8 +2326,8 @@ function Split(_a4) {
2307
2326
  pos: "relative",
2308
2327
  style: __spreadValues({ overflow: "hidden", display: "flex", alignItems: "flex-end" }, brandSurface),
2309
2328
  children: [
2310
- /* @__PURE__ */ jsx36(Box16, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2311
- /* @__PURE__ */ jsx36(Box16, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx36(
2329
+ /* @__PURE__ */ jsx37(Box16, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2330
+ /* @__PURE__ */ jsx37(Box16, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx37(
2312
2331
  SdTextBox.Hero,
2313
2332
  {
2314
2333
  title: brandTitle,
@@ -2322,9 +2341,9 @@ function Split(_a4) {
2322
2341
  ]
2323
2342
  }
2324
2343
  ),
2325
- /* @__PURE__ */ jsx36(Center5, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", w: "100%", maw: 400, children: [
2326
- /* @__PURE__ */ jsx36(FormHeader, { title, description }),
2327
- /* @__PURE__ */ jsx36(LoginForm, __spreadValues({}, formProps))
2344
+ /* @__PURE__ */ jsx37(Center5, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", w: "100%", maw: 400, children: [
2345
+ /* @__PURE__ */ jsx37(FormHeader, { title, description }),
2346
+ /* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
2328
2347
  ] }) })
2329
2348
  ] });
2330
2349
  }
@@ -2340,9 +2359,9 @@ var SdLoginViewSplit = SdLoginView.Split;
2340
2359
  // ui/organism/Result.tsx
2341
2360
  import { Box as Box17, Center as Center6, Group as Group14, Stack as Stack23 } from "@mantine/core";
2342
2361
  import { IconCircleCheck, IconCircleX } from "@tabler/icons-react";
2343
- import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
2362
+ import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
2344
2363
  function ResultIcon({ color, Icon }) {
2345
- return /* @__PURE__ */ jsx37(Center6, { w: 88, h: 88, bg: `${color}.0`, style: { borderRadius: "50%" }, "aria-hidden": true, children: /* @__PURE__ */ jsx37(Icon, { size: 48, stroke: 1.5, color: `var(--mantine-color-${color}-6)` }) });
2364
+ return /* @__PURE__ */ jsx38(Center6, { w: 88, h: 88, bg: `${color}.0`, style: { borderRadius: "50%" }, "aria-hidden": true, children: /* @__PURE__ */ jsx38(Icon, { size: 48, stroke: 1.5, color: `var(--mantine-color-${color}-6)` }) });
2346
2365
  }
2347
2366
  function createResult(defaults) {
2348
2367
  return function SdResult2({
@@ -2353,16 +2372,16 @@ function createResult(defaults) {
2353
2372
  children,
2354
2373
  mih = "60vh"
2355
2374
  }) {
2356
- return /* @__PURE__ */ jsx37(Center6, { mih, children: /* @__PURE__ */ jsx37(SdContainer, { children: /* @__PURE__ */ jsxs24(Stack23, { align: "center", gap: "lg", ta: "center", children: [
2357
- /* @__PURE__ */ jsx37(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
2375
+ return /* @__PURE__ */ jsx38(Center6, { mih, children: /* @__PURE__ */ jsx38(SdContainer, { children: /* @__PURE__ */ jsxs24(Stack23, { align: "center", gap: "lg", ta: "center", children: [
2376
+ /* @__PURE__ */ jsx38(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
2358
2377
  /* @__PURE__ */ jsxs24(Stack23, { gap: "sm", align: "center", children: [
2359
- /* @__PURE__ */ jsx37(SdTitle.Section, { children: title }),
2360
- description && /* @__PURE__ */ jsx37(SdText.Body, { maw: 480, children: description })
2378
+ /* @__PURE__ */ jsx38(SdTitle.Section, { children: title }),
2379
+ description && /* @__PURE__ */ jsx38(SdText.Body, { maw: 480, children: description })
2361
2380
  ] }),
2362
- children && /* @__PURE__ */ jsx37(Box17, { children }),
2381
+ children && /* @__PURE__ */ jsx38(Box17, { children }),
2363
2382
  (primaryAction || secondaryAction) && /* @__PURE__ */ jsxs24(Group14, { gap: "sm", justify: "center", children: [
2364
- primaryAction && /* @__PURE__ */ jsx37(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
2365
- secondaryAction && /* @__PURE__ */ jsx37(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
2383
+ primaryAction && /* @__PURE__ */ jsx38(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
2384
+ secondaryAction && /* @__PURE__ */ jsx38(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
2366
2385
  ] })
2367
2386
  ] }) }) });
2368
2387
  };
@@ -2386,7 +2405,7 @@ var SdResultError = SdResult.Error;
2386
2405
 
2387
2406
  // ui/template/MainLayout.tsx
2388
2407
  import { AppShell } from "@mantine/core";
2389
- import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
2408
+ import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
2390
2409
  var headers = {
2391
2410
  mega: SdHeader.Mega,
2392
2411
  simple: SdHeader.Simple,
@@ -2401,15 +2420,15 @@ function MainLayout({
2401
2420
  }) {
2402
2421
  const Header = headers[headerVariant];
2403
2422
  return /* @__PURE__ */ jsxs25(AppShell, { header: { height: 60 }, children: [
2404
- /* @__PURE__ */ jsx38(AppShell.Header, { children: /* @__PURE__ */ jsx38(Header, { navItems, loginFlag }) }),
2405
- /* @__PURE__ */ jsx38(AppShell.Main, { children }),
2406
- /* @__PURE__ */ jsx38(SdFooter, { company: companyInfo, navItems })
2423
+ /* @__PURE__ */ jsx39(AppShell.Header, { children: /* @__PURE__ */ jsx39(Header, { navItems, loginFlag }) }),
2424
+ /* @__PURE__ */ jsx39(AppShell.Main, { children }),
2425
+ /* @__PURE__ */ jsx39(SdFooter, { company: companyInfo, navItems })
2407
2426
  ] });
2408
2427
  }
2409
2428
 
2410
2429
  // ui/template/PageLayout.tsx
2411
2430
  import { Box as Box18, Divider as Divider5, Group as Group15, Space, Stack as Stack24 } from "@mantine/core";
2412
- import { Fragment as Fragment7, jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
2431
+ import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
2413
2432
  var HERO_MIN_H = "38svh";
2414
2433
  var HERO_PY = { base: 56, sm: 88 };
2415
2434
  var HERO_MAW = 680;
@@ -2419,14 +2438,13 @@ function Content({
2419
2438
  breadcrumb = true,
2420
2439
  currentHref
2421
2440
  }) {
2422
- const showBreadcrumb = breadcrumb && !!navItems && navItems.length > 0;
2423
2441
  return /* @__PURE__ */ jsxs26(SdContainer, { py: "xl", children: [
2424
- showBreadcrumb && /* @__PURE__ */ jsx39(SdBreadcrumb, { navItems, currentHref, mb: "lg" }),
2425
- /* @__PURE__ */ jsx39(Stack24, { gap: "xl", children })
2442
+ breadcrumb && /* @__PURE__ */ jsx40(SdBreadcrumb, { navItems, currentHref, mb: "lg" }),
2443
+ /* @__PURE__ */ jsx40(Stack24, { gap: "xl", children })
2426
2444
  ] });
2427
2445
  }
2428
2446
  function LayoutGap() {
2429
- return /* @__PURE__ */ jsx39(Space, {});
2447
+ return /* @__PURE__ */ jsx40(Space, {});
2430
2448
  }
2431
2449
  function Minimal({
2432
2450
  label,
@@ -2438,9 +2456,9 @@ function Minimal({
2438
2456
  currentHref
2439
2457
  }) {
2440
2458
  return /* @__PURE__ */ jsxs26(Plain2, { navItems, breadcrumb, currentHref, children: [
2441
- /* @__PURE__ */ jsx39(LayoutGap, {}),
2442
- /* @__PURE__ */ jsx39(SdTextBox.Section, { label, title, description: description != null ? description : "" }),
2443
- /* @__PURE__ */ jsx39(Divider5, {}),
2459
+ /* @__PURE__ */ jsx40(LayoutGap, {}),
2460
+ /* @__PURE__ */ jsx40(SdTextBox.Section, { label, title, description: description != null ? description : "" }),
2461
+ /* @__PURE__ */ jsx40(Divider5, {}),
2444
2462
  children
2445
2463
  ] });
2446
2464
  }
@@ -2450,15 +2468,15 @@ function Plain2({
2450
2468
  breadcrumb,
2451
2469
  currentHref
2452
2470
  }) {
2453
- return /* @__PURE__ */ jsx39(Fragment7, { children: /* @__PURE__ */ jsx39(Content, { navItems, breadcrumb, currentHref, children }) });
2471
+ return /* @__PURE__ */ jsx40(Fragment7, { children: /* @__PURE__ */ jsx40(Content, { navItems, breadcrumb, currentHref, children }) });
2454
2472
  }
2455
2473
  function HeroCopy({ label, title, description }) {
2456
2474
  return /* @__PURE__ */ jsxs26(Stack24, { gap: "md", maw: HERO_MAW, children: [
2457
2475
  label && /* @__PURE__ */ jsxs26(Group15, { gap: "sm", align: "center", wrap: "nowrap", children: [
2458
- /* @__PURE__ */ jsx39(Box18, { w: 28, h: 2, bg: "primary.3", style: { borderRadius: 2 } }),
2459
- /* @__PURE__ */ jsx39(SdText.Eyebrow, { c: "primary.1", children: label })
2476
+ /* @__PURE__ */ jsx40(Box18, { w: 28, h: 2, bg: "primary.3", style: { borderRadius: 2 } }),
2477
+ /* @__PURE__ */ jsx40(SdText.Eyebrow, { c: "primary.1", children: label })
2460
2478
  ] }),
2461
- /* @__PURE__ */ jsx39(
2479
+ /* @__PURE__ */ jsx40(
2462
2480
  SdTextBox.Hero,
2463
2481
  {
2464
2482
  title,
@@ -2496,7 +2514,7 @@ function Image2({
2496
2514
  backgroundColor: "var(--mantine-color-slate-9)"
2497
2515
  },
2498
2516
  children: [
2499
- /* @__PURE__ */ jsx39(
2517
+ /* @__PURE__ */ jsx40(
2500
2518
  Box18,
2501
2519
  {
2502
2520
  "aria-hidden": true,
@@ -2507,11 +2525,11 @@ function Image2({
2507
2525
  }
2508
2526
  }
2509
2527
  ),
2510
- /* @__PURE__ */ jsx39(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx39(HeroCopy, { label, title, description }) })
2528
+ /* @__PURE__ */ jsx40(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx40(HeroCopy, { label, title, description }) })
2511
2529
  ]
2512
2530
  }
2513
2531
  ),
2514
- /* @__PURE__ */ jsx39(Content, { navItems, breadcrumb, currentHref, children })
2532
+ /* @__PURE__ */ jsx40(Content, { navItems, breadcrumb, currentHref, children })
2515
2533
  ] });
2516
2534
  }
2517
2535
  function Brand({
@@ -2536,12 +2554,12 @@ function Brand({
2536
2554
  borderBottom: "1px solid var(--mantine-color-slate-8)"
2537
2555
  }, brandSurface),
2538
2556
  children: [
2539
- /* @__PURE__ */ jsx39(Box18, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2540
- /* @__PURE__ */ jsx39(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx39(HeroCopy, { label, title, description }) })
2557
+ /* @__PURE__ */ jsx40(Box18, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2558
+ /* @__PURE__ */ jsx40(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx40(HeroCopy, { label, title, description }) })
2541
2559
  ]
2542
2560
  }
2543
2561
  ),
2544
- /* @__PURE__ */ jsx39(Content, { navItems, breadcrumb, currentHref, children })
2562
+ /* @__PURE__ */ jsx40(Content, { navItems, breadcrumb, currentHref, children })
2545
2563
  ] });
2546
2564
  }
2547
2565
  var PageLayout = {
@@ -2559,6 +2577,9 @@ var PageLayoutMinimal = PageLayout.Minimal;
2559
2577
  var PageLayoutBrand = PageLayout.Brand;
2560
2578
  var PageLayoutPlain = PageLayout.Plain;
2561
2579
 
2580
+ // ui/template/SdProvider.tsx
2581
+ import { MantineProvider } from "@mantine/core";
2582
+
2562
2583
  // ui/theme.ts
2563
2584
  import { createTheme, rem as rem2 } from "@mantine/core";
2564
2585
  var primary = [
@@ -2816,10 +2837,25 @@ var theme = createTheme({
2816
2837
  }
2817
2838
  }
2818
2839
  });
2840
+
2841
+ // ui/template/SdProvider.tsx
2842
+ import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
2843
+ function SdProvider({
2844
+ children,
2845
+ theme: theme2 = theme,
2846
+ navItems,
2847
+ defaultColorScheme = "light"
2848
+ }) {
2849
+ return /* @__PURE__ */ jsxs27(MantineProvider, { theme: theme2, defaultColorScheme, children: [
2850
+ /* @__PURE__ */ jsx41(SdToastProvider, {}),
2851
+ /* @__PURE__ */ jsx41(NavProvider, { navItems, children })
2852
+ ] });
2853
+ }
2819
2854
  export {
2820
2855
  HeroCarousel,
2821
2856
  Logo,
2822
2857
  MainLayout,
2858
+ NavProvider,
2823
2859
  PageLayout,
2824
2860
  PageLayoutBrand,
2825
2861
  PageLayoutImage,
@@ -2905,6 +2941,7 @@ export {
2905
2941
  SdPricingCardDefault,
2906
2942
  SdPricingCardFeatured,
2907
2943
  SdPricingCardGrid,
2944
+ SdProvider,
2908
2945
  SdQuote,
2909
2946
  SdQuoteCard,
2910
2947
  SdQuotePlain,
@@ -2968,5 +3005,6 @@ export {
2968
3005
  SdToastSuccess,
2969
3006
  SdToastUpdate,
2970
3007
  SdToastWarning,
2971
- theme
3008
+ theme,
3009
+ useNav
2972
3010
  };