@yeongseoksong/framework 1.5.0 → 1.6.0

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,28 @@ 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
+ return /* @__PURE__ */ jsx29(Box11, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs15(
1570
1588
  Breadcrumbs,
1571
1589
  {
1572
- separator: /* @__PURE__ */ jsx28(IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1590
+ separator: /* @__PURE__ */ jsx29(IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1573
1591
  separatorMargin: "xs",
1574
1592
  children: [
1575
- /* @__PURE__ */ jsx28(
1593
+ /* @__PURE__ */ jsx29(
1576
1594
  SdLink.Sub,
1577
1595
  {
1578
1596
  href: homeHref,
1579
1597
  "aria-label": homeLabel,
1580
1598
  style: { display: "inline-flex", alignItems: "center" },
1581
- children: /* @__PURE__ */ jsx28(IconHome, { size: 16, stroke: 2 })
1599
+ children: /* @__PURE__ */ jsx29(IconHome, { size: 16, stroke: 2 })
1582
1600
  }
1583
1601
  ),
1584
1602
  trail.map((item, i) => {
1585
1603
  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);
1604
+ return isLast ? /* @__PURE__ */ jsx29(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ jsx29(SdLink.Sub, { href: item.href, children: item.label }, item.id);
1587
1605
  })
1588
1606
  ]
1589
1607
  }
@@ -1594,7 +1612,7 @@ function SdBreadcrumb(_a4) {
1594
1612
  import { Carousel } from "@mantine/carousel";
1595
1613
  import { Anchor as Anchor2, Box as Box12, Group as Group9, Stack as Stack15 } from "@mantine/core";
1596
1614
  import { IconArrowNarrowRight } from "@tabler/icons-react";
1597
- import { Fragment as Fragment3, jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
1615
+ import { Fragment as Fragment3, jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
1598
1616
  var variantMap = {
1599
1617
  primary: SdButton.Primary,
1600
1618
  secondary: SdButton.Secondary,
@@ -1604,12 +1622,12 @@ var variantMap = {
1604
1622
  function CtaButton({ cta }) {
1605
1623
  var _a4;
1606
1624
  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 }) });
1625
+ 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
1626
  }
1609
1627
  function HeroCarousel({ slides, children }) {
1610
- if (children) return /* @__PURE__ */ jsx29(Fragment3, { children });
1628
+ if (children) return /* @__PURE__ */ jsx30(Fragment3, { children });
1611
1629
  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(
1630
+ return /* @__PURE__ */ jsx30(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx30(Carousel.Slide, { children: /* @__PURE__ */ jsx30(
1613
1631
  Box12,
1614
1632
  {
1615
1633
  style: {
@@ -1622,7 +1640,7 @@ function HeroCarousel({ slides, children }) {
1622
1640
  justifyContent: "center"
1623
1641
  },
1624
1642
  children: /* @__PURE__ */ jsxs16(Stack15, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
1625
- /* @__PURE__ */ jsx29(
1643
+ /* @__PURE__ */ jsx30(
1626
1644
  SdTextBox.Hero,
1627
1645
  {
1628
1646
  title: slide.title,
@@ -1631,7 +1649,7 @@ function HeroCarousel({ slides, children }) {
1631
1649
  align: "center"
1632
1650
  }
1633
1651
  ),
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)) })
1652
+ 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
1653
  ] })
1636
1654
  }
1637
1655
  ) }, i)) });
@@ -1641,7 +1659,7 @@ function HeroCarousel({ slides, children }) {
1641
1659
  import { Box as Box13, Burger, Drawer, Group as Group10, Menu, NavLink, Stack as Stack16 } from "@mantine/core";
1642
1660
  import { IconChevronDown } from "@tabler/icons-react";
1643
1661
  import { useDisclosure, useFocusWithin, useHover, useMergedRef } from "@mantine/hooks";
1644
- import { Fragment as Fragment4, jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
1662
+ import { Fragment as Fragment4, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
1645
1663
  var BAR_HEIGHT = 60;
1646
1664
  var MAX_DEPTH = 3;
1647
1665
  var NAV_LINK_STYLES = {
@@ -1663,9 +1681,9 @@ function useNavTree(navItems) {
1663
1681
  function MobileNavNode({ item, depth, childrenOf, close }) {
1664
1682
  const kids = depth < MAX_DEPTH ? childrenOf(item.id) : [];
1665
1683
  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 }) });
1684
+ return /* @__PURE__ */ jsx31(Box13, { px: "sm", py: 8, children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
1667
1685
  }
1668
- return /* @__PURE__ */ jsx30(
1686
+ return /* @__PURE__ */ jsx31(
1669
1687
  NavLink,
1670
1688
  {
1671
1689
  label: item.label,
@@ -1673,7 +1691,7 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1673
1691
  component: item.href ? "a" : "button",
1674
1692
  href: item.href,
1675
1693
  childrenOffset: 28,
1676
- children: kids.map((kid) => /* @__PURE__ */ jsx30(
1694
+ children: kids.map((kid) => /* @__PURE__ */ jsx31(
1677
1695
  MobileNavNode,
1678
1696
  {
1679
1697
  item: kid,
@@ -1687,9 +1705,9 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1687
1705
  );
1688
1706
  }
1689
1707
  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" }) })
1708
+ return /* @__PURE__ */ jsx31(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs17(Stack16, { gap: 0, children: [
1709
+ topItems.map((item) => /* @__PURE__ */ jsx31(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
1710
+ loginFlag && /* @__PURE__ */ jsx31(Stack16, { gap: "xs", mt: "md", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1693
1711
  ] }) });
1694
1712
  }
1695
1713
  function MegaHeader({ navItems, loginFlag }) {
@@ -1700,7 +1718,7 @@ function MegaHeader({ navItems, loginFlag }) {
1700
1718
  const rootRef = useMergedRef(hoverRef, focusRef);
1701
1719
  const expanded = hasAnyChildren && (hovered || focused);
1702
1720
  return /* @__PURE__ */ jsxs17(Fragment4, { children: [
1703
- /* @__PURE__ */ jsx30(
1721
+ /* @__PURE__ */ jsx31(
1704
1722
  Box13,
1705
1723
  {
1706
1724
  ref: rootRef,
@@ -1711,12 +1729,12 @@ function MegaHeader({ navItems, loginFlag }) {
1711
1729
  borderBottom: expanded ? "1px solid var(--mantine-color-slate-2)" : void 0,
1712
1730
  transition: "box-shadow 0.15s"
1713
1731
  },
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) => {
1732
+ children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
1733
+ /* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(Logo, {}) }),
1734
+ /* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1717
1735
  const kids = childrenOf(item.id);
1718
1736
  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 }) }),
1737
+ /* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }) }),
1720
1738
  kids.length > 0 && /*
1721
1739
  Mantine Collapse를 쓰지 않는다 — 접힐 때 display:none이 되어
1722
1740
  하위 링크가 폭 계산에서 빠졌다가 펼칠 때 다시 들어오면서
@@ -1724,7 +1742,7 @@ function MegaHeader({ navItems, loginFlag }) {
1724
1742
  height 0 + overflow hidden은 폭 기여를 유지하므로 간격이 고정된다.
1725
1743
  visibility:hidden이 접힌 상태의 링크를 탭 순서에서도 빼준다.
1726
1744
  */
1727
- /* @__PURE__ */ jsx30(
1745
+ /* @__PURE__ */ jsx31(
1728
1746
  Box13,
1729
1747
  {
1730
1748
  "aria-hidden": !expanded,
@@ -1735,14 +1753,14 @@ function MegaHeader({ navItems, loginFlag }) {
1735
1753
  visibility: expanded ? "visible" : "hidden",
1736
1754
  transition: "opacity 0.15s ease"
1737
1755
  },
1738
- children: /* @__PURE__ */ jsx30(Stack16, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1756
+ children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1739
1757
  const grandkids = childrenOf(kid.id);
1740
1758
  if (grandkids.length === 0) {
1741
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1759
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1742
1760
  }
1743
1761
  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))
1762
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
1763
+ grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
1746
1764
  ] }, kid.id);
1747
1765
  }) })
1748
1766
  }
@@ -1750,13 +1768,13 @@ function MegaHeader({ navItems, loginFlag }) {
1750
1768
  ] }, item.id);
1751
1769
  }) }),
1752
1770
  /* @__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" }) })
1771
+ /* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1772
+ loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1755
1773
  ] })
1756
1774
  ] }) })
1757
1775
  }
1758
1776
  ),
1759
- /* @__PURE__ */ jsx30(
1777
+ /* @__PURE__ */ jsx31(
1760
1778
  MobileNav,
1761
1779
  {
1762
1780
  opened,
@@ -1769,18 +1787,18 @@ function MegaHeader({ navItems, loginFlag }) {
1769
1787
  ] });
1770
1788
  }
1771
1789
  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);
1790
+ 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
1791
  }
1774
1792
  function SimpleHeader({ navItems, loginFlag }) {
1775
1793
  const [opened, { toggle, close }] = useDisclosure();
1776
1794
  const { topItems, childrenOf } = useNavTree(navItems);
1777
1795
  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) => {
1796
+ /* @__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: [
1797
+ /* @__PURE__ */ jsx31(Logo, {}),
1798
+ /* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1781
1799
  const kids = childrenOf(item.id);
1782
1800
  if (kids.length === 0) {
1783
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }, item.id);
1801
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
1784
1802
  }
1785
1803
  return (
1786
1804
  /*
@@ -1800,16 +1818,16 @@ function SimpleHeader({ navItems, loginFlag }) {
1800
1818
  radius: "md",
1801
1819
  withinPortal: true,
1802
1820
  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 })
1821
+ /* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
1822
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
1823
+ /* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
1806
1824
  ] }) }) }),
1807
- /* @__PURE__ */ jsx30(Menu.Dropdown, { children: kids.map((kid) => {
1825
+ /* @__PURE__ */ jsx31(Menu.Dropdown, { children: kids.map((kid) => {
1808
1826
  const grandkids = childrenOf(kid.id);
1809
1827
  if (grandkids.length > 0) {
1810
1828
  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) })
1829
+ /* @__PURE__ */ jsx31(Menu.Sub.Target, { children: /* @__PURE__ */ jsx31(Menu.Sub.Item, { children: kid.label }) }),
1830
+ /* @__PURE__ */ jsx31(Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
1813
1831
  ] }, kid.id);
1814
1832
  }
1815
1833
  return renderMenuLeaf(kid);
@@ -1821,11 +1839,11 @@ function SimpleHeader({ navItems, loginFlag }) {
1821
1839
  );
1822
1840
  }) }),
1823
1841
  /* @__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" }) })
1842
+ /* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1843
+ loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1826
1844
  ] })
1827
1845
  ] }) }) }),
1828
- /* @__PURE__ */ jsx30(
1846
+ /* @__PURE__ */ jsx31(
1829
1847
  MobileNav,
1830
1848
  {
1831
1849
  opened,
@@ -1841,12 +1859,12 @@ function PanelHeader({ navItems, loginFlag }) {
1841
1859
  const [opened, { toggle, close }] = useDisclosure();
1842
1860
  const { topItems, childrenOf } = useNavTree(navItems);
1843
1861
  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) => {
1862
+ /* @__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: [
1863
+ /* @__PURE__ */ jsx31(Logo, {}),
1864
+ /* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1847
1865
  const kids = childrenOf(item.id);
1848
1866
  if (kids.length === 0) {
1849
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: item.href, children: item.label }, item.id);
1867
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
1850
1868
  }
1851
1869
  return /* @__PURE__ */ jsxs17(
1852
1870
  Menu,
@@ -1860,18 +1878,18 @@ function PanelHeader({ navItems, loginFlag }) {
1860
1878
  radius: "md",
1861
1879
  withinPortal: true,
1862
1880
  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 })
1881
+ /* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
1882
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
1883
+ /* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
1866
1884
  ] }) }) }),
1867
- /* @__PURE__ */ jsx30(Menu.Dropdown, { children: /* @__PURE__ */ jsx30(Stack16, { gap: "xs", p: "xs", children: kids.map((kid) => {
1885
+ /* @__PURE__ */ jsx31(Menu.Dropdown, { children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", p: "xs", children: kids.map((kid) => {
1868
1886
  const grandkids = childrenOf(kid.id);
1869
1887
  if (grandkids.length === 0) {
1870
- return /* @__PURE__ */ jsx30(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1888
+ return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1871
1889
  }
1872
1890
  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))
1891
+ /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
1892
+ grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
1875
1893
  ] }, kid.id);
1876
1894
  }) }) })
1877
1895
  ]
@@ -1880,11 +1898,11 @@ function PanelHeader({ navItems, loginFlag }) {
1880
1898
  );
1881
1899
  }) }),
1882
1900
  /* @__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" }) })
1901
+ /* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1902
+ loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1885
1903
  ] })
1886
1904
  ] }) }) }),
1887
- /* @__PURE__ */ jsx30(
1905
+ /* @__PURE__ */ jsx31(
1888
1906
  MobileNav,
1889
1907
  {
1890
1908
  opened,
@@ -1916,16 +1934,16 @@ import {
1916
1934
  IconBrandYoutube,
1917
1935
  IconWorld
1918
1936
  } from "@tabler/icons-react";
1919
- import { Fragment as Fragment5, jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
1937
+ import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
1920
1938
  function FooterNavColumns({ items }) {
1921
1939
  const topLevel = items.filter((item) => !item.parentId);
1922
1940
  const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
1923
1941
  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),
1942
+ 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: [
1943
+ /* @__PURE__ */ jsx32(SdLink.Sub, { href: group.href, children: group.label }, group.id),
1926
1944
  getChildren(group.id).map((link, id) => {
1927
1945
  if (id >= CHILD_THRESH) return;
1928
- return /* @__PURE__ */ jsx31(SdLink.Hint, { href: link.href, children: link.label }, link.id);
1946
+ return /* @__PURE__ */ jsx32(SdLink.Hint, { href: link.href, children: link.label }, link.id);
1929
1947
  })
1930
1948
  ] }) }, group.id)) });
1931
1949
  }
@@ -1939,10 +1957,10 @@ var SOCIAL_ICONS = {
1939
1957
  blog: IconWorld
1940
1958
  };
1941
1959
  function FooterSocials({ items }) {
1942
- return /* @__PURE__ */ jsx31(Group11, { gap: 0, wrap: "nowrap", children: items.map((item) => {
1960
+ return /* @__PURE__ */ jsx32(Group11, { gap: 0, wrap: "nowrap", children: items.map((item) => {
1943
1961
  var _a4, _b;
1944
1962
  const Icon = (_a4 = SOCIAL_ICONS[item.platform]) != null ? _a4 : IconWorld;
1945
- return /* @__PURE__ */ jsx31(
1963
+ return /* @__PURE__ */ jsx32(
1946
1964
  ActionIcon,
1947
1965
  {
1948
1966
  component: "a",
@@ -1953,7 +1971,7 @@ function FooterSocials({ items }) {
1953
1971
  color: "gray",
1954
1972
  variant: "subtle",
1955
1973
  "aria-label": (_b = item.label) != null ? _b : item.platform,
1956
- children: /* @__PURE__ */ jsx31(Icon, { size: 18, stroke: 1.5 })
1974
+ children: /* @__PURE__ */ jsx32(Icon, { size: 18, stroke: 1.5 })
1957
1975
  },
1958
1976
  item.url
1959
1977
  );
@@ -1961,32 +1979,32 @@ function FooterSocials({ items }) {
1961
1979
  }
1962
1980
  function InfoCell({ label, children }) {
1963
1981
  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
1982
+ /* @__PURE__ */ jsx32(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
1983
+ typeof children === "string" ? /* @__PURE__ */ jsx32(SdText.Sub, { children }) : children
1966
1984
  ] });
1967
1985
  }
1968
1986
  function FooterCompanyInfo({ company }) {
1969
1987
  const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
1970
1988
  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 }) })
1989
+ /* @__PURE__ */ jsx32(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
1990
+ /* @__PURE__ */ jsx32(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
1991
+ sortedAddresses.map((addr) => /* @__PURE__ */ jsx32(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
1992
+ /* @__PURE__ */ jsx32(InfoCell, { label: "Tel", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
1993
+ company.fax && /* @__PURE__ */ jsx32(InfoCell, { label: "Fax", children: company.fax }),
1994
+ /* @__PURE__ */ jsx32(InfoCell, { label: "Email", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
1977
1995
  ] });
1978
1996
  }
1979
1997
  function SdFooter({ company, navItems, policyLinks, description }) {
1980
1998
  const visibleNav = filterAndSort(navItems);
1981
1999
  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 }),
2000
+ return /* @__PURE__ */ jsx32(Box14, { component: "footer", children: /* @__PURE__ */ jsx32(SdContainer, { py: "lg", children: /* @__PURE__ */ jsxs18(Stack17, { children: [
2001
+ /* @__PURE__ */ jsx32(Logo, { size: "sm" }),
2002
+ description && /* @__PURE__ */ jsx32(SdText.Sub, { children: description }),
1985
2003
  /* @__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 }) }) })
2004
+ /* @__PURE__ */ jsx32(Box14, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx32(FooterCompanyInfo, { company }) }),
2005
+ 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
2006
  ] }),
1989
- /* @__PURE__ */ jsx31(Divider3, {}),
2007
+ /* @__PURE__ */ jsx32(Divider3, {}),
1990
2008
  /* @__PURE__ */ jsxs18(Group11, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
1991
2009
  /* @__PURE__ */ jsxs18(SdText.Sub, { children: [
1992
2010
  "\xA9 ",
@@ -1996,11 +2014,11 @@ function SdFooter({ company, navItems, policyLinks, description }) {
1996
2014
  ". All rights reserved."
1997
2015
  ] }),
1998
2016
  /* @__PURE__ */ jsxs18(Group11, { gap: "lg", wrap: "wrap", children: [
1999
- visiblePolicy.length > 0 && /* @__PURE__ */ jsx31(Group11, { gap: "lg", children: visiblePolicy.map((item) => {
2017
+ visiblePolicy.length > 0 && /* @__PURE__ */ jsx32(Group11, { gap: "lg", children: visiblePolicy.map((item) => {
2000
2018
  const Link4 = item.highlight ? SdLink.Body : SdLink.Sub;
2001
- return /* @__PURE__ */ jsx31(Link4, { href: item.href, children: item.label }, item.id);
2019
+ return /* @__PURE__ */ jsx32(Link4, { href: item.href, children: item.label }, item.id);
2002
2020
  }) }),
2003
- company.socials && company.socials.length > 0 && /* @__PURE__ */ jsx31(FooterSocials, { items: company.socials })
2021
+ company.socials && company.socials.length > 0 && /* @__PURE__ */ jsx32(FooterSocials, { items: company.socials })
2004
2022
  ] })
2005
2023
  ] })
2006
2024
  ] }) }) });
@@ -2008,7 +2026,7 @@ function SdFooter({ company, navItems, policyLinks, description }) {
2008
2026
 
2009
2027
  // ui/organism/FeatureSection.tsx
2010
2028
  import { Stack as Stack18 } from "@mantine/core";
2011
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2029
+ import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
2012
2030
  function SdFeatureSection(_a4) {
2013
2031
  var _b = _a4, {
2014
2032
  label,
@@ -2025,8 +2043,8 @@ function SdFeatureSection(_a4) {
2025
2043
  "cols",
2026
2044
  "py"
2027
2045
  ]);
2028
- return /* @__PURE__ */ jsx32(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs19(Stack18, { gap: "xl", children: [
2029
- /* @__PURE__ */ jsx32(
2046
+ return /* @__PURE__ */ jsx33(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs19(Stack18, { gap: "xl", children: [
2047
+ /* @__PURE__ */ jsx33(
2030
2048
  SdTextBox.Section,
2031
2049
  {
2032
2050
  label,
@@ -2037,13 +2055,13 @@ function SdFeatureSection(_a4) {
2037
2055
  align: "center"
2038
2056
  }
2039
2057
  ),
2040
- /* @__PURE__ */ jsx32(SdFeatures, { items, cols })
2058
+ /* @__PURE__ */ jsx33(SdFeatures, { items, cols })
2041
2059
  ] }) }));
2042
2060
  }
2043
2061
 
2044
2062
  // ui/organism/TimelineSection.tsx
2045
2063
  import { Center as Center3, Stack as Stack19 } from "@mantine/core";
2046
- import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
2064
+ import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
2047
2065
  function SdTimelineSection(_a4) {
2048
2066
  var _b = _a4, {
2049
2067
  label,
@@ -2058,15 +2076,15 @@ function SdTimelineSection(_a4) {
2058
2076
  "items",
2059
2077
  "py"
2060
2078
  ]);
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 }) })
2079
+ return /* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsxs20(Stack19, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
2080
+ /* @__PURE__ */ jsx34(SdTextBox.Section, { label, title, description }),
2081
+ /* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsx34(SdTimeline, { items }) })
2064
2082
  ] })) });
2065
2083
  }
2066
2084
 
2067
2085
  // ui/organism/StepsSection.tsx
2068
2086
  import { Stack as Stack20 } from "@mantine/core";
2069
- import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
2087
+ import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
2070
2088
  function SdStepsSection(_a4) {
2071
2089
  var _b = _a4, {
2072
2090
  label,
@@ -2081,17 +2099,17 @@ function SdStepsSection(_a4) {
2081
2099
  "items",
2082
2100
  "py"
2083
2101
  ]);
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 })
2102
+ return /* @__PURE__ */ jsx35(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs21(Stack20, { gap: "xl", children: [
2103
+ (label || title || description) && /* @__PURE__ */ jsx35(SdTextBox.Section, { label, title, description }),
2104
+ /* @__PURE__ */ jsx35(SdSteps.Bubble, { items })
2087
2105
  ] }) }));
2088
2106
  }
2089
2107
 
2090
2108
  // ui/organism/ErrorView.tsx
2091
2109
  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";
2110
+ import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
2093
2111
  function StatusCode({ code }) {
2094
- return /* @__PURE__ */ jsx35(
2112
+ return /* @__PURE__ */ jsx36(
2095
2113
  Text2,
2096
2114
  {
2097
2115
  fz: 160,
@@ -2105,15 +2123,15 @@ function StatusCode({ code }) {
2105
2123
  );
2106
2124
  }
2107
2125
  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" }),
2126
+ return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
2127
+ /* @__PURE__ */ jsx36(StatusCode, { code: "500" }),
2110
2128
  /* @__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." })
2129
+ /* @__PURE__ */ jsx36(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
2130
+ /* @__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
2131
  ] }),
2114
2132
  /* @__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" })
2133
+ /* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
2134
+ onHome && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
2117
2135
  ] })
2118
2136
  ] }) }) });
2119
2137
  }
@@ -2125,15 +2143,15 @@ function NotFound({
2125
2143
  },
2126
2144
  onBack = () => window.history.back()
2127
2145
  }) {
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" }),
2146
+ return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
2147
+ /* @__PURE__ */ jsx36(StatusCode, { code: "404" }),
2130
2148
  /* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
2131
- /* @__PURE__ */ jsx35(SdTitle.Section, { children: title }),
2132
- /* @__PURE__ */ jsx35(SdText.Body, { maw: 480, children: description })
2149
+ /* @__PURE__ */ jsx36(SdTitle.Section, { children: title }),
2150
+ /* @__PURE__ */ jsx36(SdText.Body, { maw: 480, children: description })
2133
2151
  ] }),
2134
2152
  /* @__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" })
2153
+ onHome && /* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
2154
+ onBack && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
2137
2155
  ] })
2138
2156
  ] }) }) });
2139
2157
  }
@@ -2173,7 +2191,7 @@ var brandDotTexture = {
2173
2191
  };
2174
2192
 
2175
2193
  // ui/organism/LoginView.tsx
2176
- import { Fragment as Fragment6, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
2194
+ import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
2177
2195
  var SOCIAL_META = {
2178
2196
  google: { Icon: IconBrandGoogle, label: "\uAD6C\uAE00\uB85C \uB85C\uADF8\uC778" },
2179
2197
  kakao: { Icon: IconBrandKakaoTalk, label: "\uCE74\uCE74\uC624\uB85C \uB85C\uADF8\uC778" },
@@ -2202,9 +2220,9 @@ function LoginForm({
2202
2220
  remember: data.get("remember") === "on"
2203
2221
  });
2204
2222
  }
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(
2223
+ return /* @__PURE__ */ jsx37("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ jsxs23(Stack22, { gap: "md", children: [
2224
+ error && /* @__PURE__ */ jsx37(SdText.Error, { children: error }),
2225
+ /* @__PURE__ */ jsx37(
2208
2226
  SdInput.Email,
2209
2227
  {
2210
2228
  name: "email",
@@ -2214,7 +2232,7 @@ function LoginForm({
2214
2232
  required: true
2215
2233
  }
2216
2234
  ),
2217
- /* @__PURE__ */ jsx36(
2235
+ /* @__PURE__ */ jsx37(
2218
2236
  SdInput.Password,
2219
2237
  {
2220
2238
  name: "password",
@@ -2225,32 +2243,32 @@ function LoginForm({
2225
2243
  }
2226
2244
  ),
2227
2245
  (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?" })
2246
+ withRemember ? /* @__PURE__ */ jsx37(Checkbox2, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ jsx37("span", {}),
2247
+ findPasswordHref && /* @__PURE__ */ jsx37(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
2230
2248
  ] }),
2231
- /* @__PURE__ */ jsx36(
2249
+ /* @__PURE__ */ jsx37(
2232
2250
  SdButton.Primary,
2233
2251
  {
2234
2252
  type: "submit",
2235
2253
  fullWidth: true,
2236
2254
  loading,
2237
- leftSection: /* @__PURE__ */ jsx36(IconLogin2, { size: 16 }),
2255
+ leftSection: /* @__PURE__ */ jsx37(IconLogin2, { size: 16 }),
2238
2256
  children: submitLabel
2239
2257
  }
2240
2258
  ),
2241
2259
  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) => {
2260
+ /* @__PURE__ */ jsx37(Divider4, { label: "\uB610\uB294", labelPosition: "center" }),
2261
+ /* @__PURE__ */ jsx37(Stack22, { gap: "xs", children: socials.map((social) => {
2244
2262
  var _a4;
2245
2263
  const { Icon, label } = SOCIAL_META[social.provider];
2246
- return /* @__PURE__ */ jsx36(
2264
+ return /* @__PURE__ */ jsx37(
2247
2265
  SdButton.Outline,
2248
2266
  {
2249
2267
  color: "slate",
2250
2268
  fullWidth: true,
2251
2269
  type: "button",
2252
2270
  onClick: social.onClick,
2253
- leftSection: /* @__PURE__ */ jsx36(Icon, { size: 16 }),
2271
+ leftSection: /* @__PURE__ */ jsx37(Icon, { size: 16 }),
2254
2272
  children: (_a4 = social.label) != null ? _a4 : label
2255
2273
  },
2256
2274
  social.provider
@@ -2258,16 +2276,16 @@ function LoginForm({
2258
2276
  }) })
2259
2277
  ] }),
2260
2278
  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" })
2279
+ /* @__PURE__ */ jsx37(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
2280
+ /* @__PURE__ */ jsx37(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
2263
2281
  ] }),
2264
2282
  children
2265
2283
  ] }) });
2266
2284
  }
2267
2285
  function FormHeader({ title, description }) {
2268
2286
  return /* @__PURE__ */ jsxs23(Stack22, { gap: "lg", children: [
2269
- /* @__PURE__ */ jsx36(Logo, { size: "sm" }),
2270
- /* @__PURE__ */ jsx36(SdTextBox.Card, { title, description: description != null ? description : "" })
2287
+ /* @__PURE__ */ jsx37(Logo, { size: "sm" }),
2288
+ /* @__PURE__ */ jsx37(SdTextBox.Card, { title, description: description != null ? description : "" })
2271
2289
  ] });
2272
2290
  }
2273
2291
  function Card7(_a4) {
@@ -2280,9 +2298,9 @@ function Card7(_a4) {
2280
2298
  "description",
2281
2299
  "mih"
2282
2300
  ]);
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))
2301
+ 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: [
2302
+ /* @__PURE__ */ jsx37(FormHeader, { title, description }),
2303
+ /* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
2286
2304
  ] }) }) });
2287
2305
  }
2288
2306
  function Split(_a4) {
@@ -2307,8 +2325,8 @@ function Split(_a4) {
2307
2325
  pos: "relative",
2308
2326
  style: __spreadValues({ overflow: "hidden", display: "flex", alignItems: "flex-end" }, brandSurface),
2309
2327
  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(
2328
+ /* @__PURE__ */ jsx37(Box16, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2329
+ /* @__PURE__ */ jsx37(Box16, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx37(
2312
2330
  SdTextBox.Hero,
2313
2331
  {
2314
2332
  title: brandTitle,
@@ -2322,9 +2340,9 @@ function Split(_a4) {
2322
2340
  ]
2323
2341
  }
2324
2342
  ),
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))
2343
+ /* @__PURE__ */ jsx37(Center5, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", w: "100%", maw: 400, children: [
2344
+ /* @__PURE__ */ jsx37(FormHeader, { title, description }),
2345
+ /* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
2328
2346
  ] }) })
2329
2347
  ] });
2330
2348
  }
@@ -2340,9 +2358,9 @@ var SdLoginViewSplit = SdLoginView.Split;
2340
2358
  // ui/organism/Result.tsx
2341
2359
  import { Box as Box17, Center as Center6, Group as Group14, Stack as Stack23 } from "@mantine/core";
2342
2360
  import { IconCircleCheck, IconCircleX } from "@tabler/icons-react";
2343
- import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
2361
+ import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
2344
2362
  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)` }) });
2363
+ 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
2364
  }
2347
2365
  function createResult(defaults) {
2348
2366
  return function SdResult2({
@@ -2353,16 +2371,16 @@ function createResult(defaults) {
2353
2371
  children,
2354
2372
  mih = "60vh"
2355
2373
  }) {
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 }),
2374
+ return /* @__PURE__ */ jsx38(Center6, { mih, children: /* @__PURE__ */ jsx38(SdContainer, { children: /* @__PURE__ */ jsxs24(Stack23, { align: "center", gap: "lg", ta: "center", children: [
2375
+ /* @__PURE__ */ jsx38(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
2358
2376
  /* @__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 })
2377
+ /* @__PURE__ */ jsx38(SdTitle.Section, { children: title }),
2378
+ description && /* @__PURE__ */ jsx38(SdText.Body, { maw: 480, children: description })
2361
2379
  ] }),
2362
- children && /* @__PURE__ */ jsx37(Box17, { children }),
2380
+ children && /* @__PURE__ */ jsx38(Box17, { children }),
2363
2381
  (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 })
2382
+ primaryAction && /* @__PURE__ */ jsx38(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
2383
+ secondaryAction && /* @__PURE__ */ jsx38(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
2366
2384
  ] })
2367
2385
  ] }) }) });
2368
2386
  };
@@ -2386,7 +2404,7 @@ var SdResultError = SdResult.Error;
2386
2404
 
2387
2405
  // ui/template/MainLayout.tsx
2388
2406
  import { AppShell } from "@mantine/core";
2389
- import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
2407
+ import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
2390
2408
  var headers = {
2391
2409
  mega: SdHeader.Mega,
2392
2410
  simple: SdHeader.Simple,
@@ -2401,15 +2419,15 @@ function MainLayout({
2401
2419
  }) {
2402
2420
  const Header = headers[headerVariant];
2403
2421
  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 })
2422
+ /* @__PURE__ */ jsx39(AppShell.Header, { children: /* @__PURE__ */ jsx39(Header, { navItems, loginFlag }) }),
2423
+ /* @__PURE__ */ jsx39(AppShell.Main, { children }),
2424
+ /* @__PURE__ */ jsx39(SdFooter, { company: companyInfo, navItems })
2407
2425
  ] });
2408
2426
  }
2409
2427
 
2410
2428
  // ui/template/PageLayout.tsx
2411
2429
  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";
2430
+ import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
2413
2431
  var HERO_MIN_H = "38svh";
2414
2432
  var HERO_PY = { base: 56, sm: 88 };
2415
2433
  var HERO_MAW = 680;
@@ -2421,12 +2439,12 @@ function Content({
2421
2439
  }) {
2422
2440
  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
+ showBreadcrumb && /* @__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
  };