@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.cjs CHANGED
@@ -63,6 +63,7 @@ __export(ui_exports, {
63
63
  HeroCarousel: () => HeroCarousel,
64
64
  Logo: () => Logo,
65
65
  MainLayout: () => MainLayout,
66
+ NavProvider: () => NavProvider,
66
67
  PageLayout: () => PageLayout,
67
68
  PageLayoutBrand: () => PageLayoutBrand,
68
69
  PageLayoutImage: () => PageLayoutImage,
@@ -148,6 +149,7 @@ __export(ui_exports, {
148
149
  SdPricingCardDefault: () => SdPricingCardDefault,
149
150
  SdPricingCardFeatured: () => SdPricingCardFeatured,
150
151
  SdPricingCardGrid: () => SdPricingCardGrid,
152
+ SdProvider: () => SdProvider,
151
153
  SdQuote: () => SdQuote,
152
154
  SdQuoteCard: () => SdQuoteCard,
153
155
  SdQuotePlain: () => SdQuotePlain,
@@ -211,7 +213,8 @@ __export(ui_exports, {
211
213
  SdToastSuccess: () => SdToastSuccess,
212
214
  SdToastUpdate: () => SdToastUpdate,
213
215
  SdToastWarning: () => SdToastWarning,
214
- theme: () => theme
216
+ theme: () => theme,
217
+ useNav: () => useNav
215
218
  });
216
219
  module.exports = __toCommonJS(ui_exports);
217
220
 
@@ -1669,7 +1672,23 @@ var SdMapTabs = Tabs2;
1669
1672
  var import_core27 = require("@mantine/core");
1670
1673
  var import_navigation = require("next/navigation");
1671
1674
  var import_icons_react5 = require("@tabler/icons-react");
1675
+
1676
+ // ui/template/NavProvider.tsx
1677
+ var import_react4 = require("react");
1672
1678
  var import_jsx_runtime29 = require("react/jsx-runtime");
1679
+ var NavContext = (0, import_react4.createContext)([]);
1680
+ function NavProvider({
1681
+ children,
1682
+ navItems
1683
+ }) {
1684
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(NavContext.Provider, { value: navItems, children });
1685
+ }
1686
+ function useNav() {
1687
+ return (0, import_react4.useContext)(NavContext);
1688
+ }
1689
+
1690
+ // ui/molecule/Breadcrumb.tsx
1691
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1673
1692
  function normalizePath(href) {
1674
1693
  if (!href) return "";
1675
1694
  const trimmed = href.replace(/\/+$/, "");
@@ -1695,7 +1714,7 @@ function buildTrail(navItems, currentHref) {
1695
1714
  }
1696
1715
  function SdBreadcrumb(_a4) {
1697
1716
  var _b = _a4, {
1698
- navItems,
1717
+ navItems: navItemsProp,
1699
1718
  currentHref,
1700
1719
  homeHref = "/",
1701
1720
  homeLabel = "\uD648"
@@ -1706,26 +1725,29 @@ function SdBreadcrumb(_a4) {
1706
1725
  "homeLabel"
1707
1726
  ]);
1708
1727
  var _a5;
1728
+ const navFromContext = useNav();
1729
+ const navItems = navItemsProp != null ? navItemsProp : navFromContext;
1709
1730
  const pathname = (0, import_navigation.usePathname)();
1710
1731
  const trail = buildTrail(navItems, (_a5 = currentHref != null ? currentHref : pathname) != null ? _a5 : "");
1711
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1732
+ if (navItems.length === 0) return;
1733
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1712
1734
  import_core27.Breadcrumbs,
1713
1735
  {
1714
- separator: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons_react5.IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1736
+ separator: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons_react5.IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1715
1737
  separatorMargin: "xs",
1716
1738
  children: [
1717
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1739
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1718
1740
  SdLink.Sub,
1719
1741
  {
1720
1742
  href: homeHref,
1721
1743
  "aria-label": homeLabel,
1722
1744
  style: { display: "inline-flex", alignItems: "center" },
1723
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons_react5.IconHome, { size: 16, stroke: 2 })
1745
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons_react5.IconHome, { size: 16, stroke: 2 })
1724
1746
  }
1725
1747
  ),
1726
1748
  trail.map((item, i) => {
1727
1749
  const isLast = i === trail.length - 1;
1728
- return isLast ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdLink.Sub, { href: item.href, children: item.label }, item.id);
1750
+ return isLast ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SdLink.Sub, { href: item.href, children: item.label }, item.id);
1729
1751
  })
1730
1752
  ]
1731
1753
  }
@@ -1736,7 +1758,7 @@ function SdBreadcrumb(_a4) {
1736
1758
  var import_carousel = require("@mantine/carousel");
1737
1759
  var import_core28 = require("@mantine/core");
1738
1760
  var import_icons_react6 = require("@tabler/icons-react");
1739
- var import_jsx_runtime30 = require("react/jsx-runtime");
1761
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1740
1762
  var variantMap = {
1741
1763
  primary: SdButton.Primary,
1742
1764
  secondary: SdButton.Secondary,
@@ -1746,12 +1768,12 @@ var variantMap = {
1746
1768
  function CtaButton({ cta }) {
1747
1769
  var _a4;
1748
1770
  const Button3 = variantMap[(_a4 = cta.variant) != null ? _a4 : "primary"];
1749
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Anchor, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button3, { size: "md", rightSection: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons_react6.IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button3, { size: "md", children: cta.label }) });
1771
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core28.Anchor, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button3, { size: "md", rightSection: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_icons_react6.IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button3, { size: "md", children: cta.label }) });
1750
1772
  }
1751
1773
  function HeroCarousel({ slides, children }) {
1752
- if (children) return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children });
1774
+ if (children) return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children });
1753
1775
  const filterdSlides = filterAndSort(slides);
1754
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_carousel.Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_carousel.Carousel.Slide, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1776
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_carousel.Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_carousel.Carousel.Slide, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1755
1777
  import_core28.Box,
1756
1778
  {
1757
1779
  style: {
@@ -1763,8 +1785,8 @@ function HeroCarousel({ slides, children }) {
1763
1785
  alignItems: "center",
1764
1786
  justifyContent: "center"
1765
1787
  },
1766
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Stack, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
1767
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1788
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core28.Stack, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
1789
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1768
1790
  SdTextBox.Hero,
1769
1791
  {
1770
1792
  title: slide.title,
@@ -1773,7 +1795,7 @@ function HeroCarousel({ slides, children }) {
1773
1795
  align: "center"
1774
1796
  }
1775
1797
  ),
1776
- slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Group, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CtaButton, { cta }, cta.href)) })
1798
+ slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core28.Group, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(CtaButton, { cta }, cta.href)) })
1777
1799
  ] })
1778
1800
  }
1779
1801
  ) }, i)) });
@@ -1783,7 +1805,7 @@ function HeroCarousel({ slides, children }) {
1783
1805
  var import_core29 = require("@mantine/core");
1784
1806
  var import_icons_react7 = require("@tabler/icons-react");
1785
1807
  var import_hooks = require("@mantine/hooks");
1786
- var import_jsx_runtime31 = require("react/jsx-runtime");
1808
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1787
1809
  var BAR_HEIGHT = 60;
1788
1810
  var MAX_DEPTH = 3;
1789
1811
  var NAV_LINK_STYLES = {
@@ -1805,9 +1827,9 @@ function useNavTree(navItems) {
1805
1827
  function MobileNavNode({ item, depth, childrenOf, close }) {
1806
1828
  const kids = depth < MAX_DEPTH ? childrenOf(item.id) : [];
1807
1829
  if (kids.length === 0) {
1808
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Box, { px: "sm", py: 8, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
1830
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Box, { px: "sm", py: 8, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
1809
1831
  }
1810
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1832
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1811
1833
  import_core29.NavLink,
1812
1834
  {
1813
1835
  label: item.label,
@@ -1815,7 +1837,7 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1815
1837
  component: item.href ? "a" : "button",
1816
1838
  href: item.href,
1817
1839
  childrenOffset: 28,
1818
- children: kids.map((kid) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1840
+ children: kids.map((kid) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1819
1841
  MobileNavNode,
1820
1842
  {
1821
1843
  item: kid,
@@ -1829,9 +1851,9 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1829
1851
  );
1830
1852
  }
1831
1853
  function MobileNav({ opened, close, topItems, childrenOf, loginFlag }) {
1832
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Stack, { gap: 0, children: [
1833
- topItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
1834
- loginFlag && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Stack, { gap: "xs", mt: "md", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1854
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 0, children: [
1855
+ topItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
1856
+ loginFlag && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Stack, { gap: "xs", mt: "md", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1835
1857
  ] }) });
1836
1858
  }
1837
1859
  function MegaHeader({ navItems, loginFlag }) {
@@ -1841,8 +1863,8 @@ function MegaHeader({ navItems, loginFlag }) {
1841
1863
  const { focused, ref: focusRef } = (0, import_hooks.useFocusWithin)();
1842
1864
  const rootRef = (0, import_hooks.useMergedRef)(hoverRef, focusRef);
1843
1865
  const expanded = hasAnyChildren && (hovered || focused);
1844
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
1845
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1866
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
1867
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1846
1868
  import_core29.Box,
1847
1869
  {
1848
1870
  ref: rootRef,
@@ -1853,12 +1875,12 @@ function MegaHeader({ navItems, loginFlag }) {
1853
1875
  borderBottom: expanded ? "1px solid var(--mantine-color-slate-2)" : void 0,
1854
1876
  transition: "box-shadow 0.15s"
1855
1877
  },
1856
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
1857
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Logo, {}) }),
1858
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1878
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
1879
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, {}) }),
1880
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1859
1881
  const kids = childrenOf(item.id);
1860
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Stack, { gap: 0, align: "center", children: [
1861
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }) }),
1882
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 0, align: "center", children: [
1883
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }) }),
1862
1884
  kids.length > 0 && /*
1863
1885
  Mantine Collapse를 쓰지 않는다 — 접힐 때 display:none이 되어
1864
1886
  하위 링크가 폭 계산에서 빠졌다가 펼칠 때 다시 들어오면서
@@ -1866,7 +1888,7 @@ function MegaHeader({ navItems, loginFlag }) {
1866
1888
  height 0 + overflow hidden은 폭 기여를 유지하므로 간격이 고정된다.
1867
1889
  visibility:hidden이 접힌 상태의 링크를 탭 순서에서도 빼준다.
1868
1890
  */
1869
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1891
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1870
1892
  import_core29.Box,
1871
1893
  {
1872
1894
  "aria-hidden": !expanded,
@@ -1877,28 +1899,28 @@ function MegaHeader({ navItems, loginFlag }) {
1877
1899
  visibility: expanded ? "visible" : "hidden",
1878
1900
  transition: "opacity 0.15s ease"
1879
1901
  },
1880
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Stack, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1902
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Stack, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1881
1903
  const grandkids = childrenOf(kid.id);
1882
1904
  if (grandkids.length === 0) {
1883
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1905
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1884
1906
  }
1885
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Stack, { gap: 2, align: "center", children: [
1886
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: kid.href, children: kid.label }),
1887
- grandkids.map((gk) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
1907
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 2, align: "center", children: [
1908
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }),
1909
+ grandkids.map((gk) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
1888
1910
  ] }, kid.id);
1889
1911
  }) })
1890
1912
  }
1891
1913
  )
1892
1914
  ] }, item.id);
1893
1915
  }) }),
1894
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { h: BAR_HEIGHT, align: "center", gap: "sm", wrap: "nowrap", children: [
1895
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1896
- loginFlag && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1916
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { h: BAR_HEIGHT, align: "center", gap: "sm", wrap: "nowrap", children: [
1917
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1918
+ loginFlag && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1897
1919
  ] })
1898
1920
  ] }) })
1899
1921
  }
1900
1922
  ),
1901
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1923
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1902
1924
  MobileNav,
1903
1925
  {
1904
1926
  opened,
@@ -1911,18 +1933,18 @@ function MegaHeader({ navItems, loginFlag }) {
1911
1933
  ] });
1912
1934
  }
1913
1935
  function renderMenuLeaf(item) {
1914
- return item.href ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Item, { component: "a", href: item.href, children: item.label }, item.id) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Label, { children: item.label }, item.id);
1936
+ return item.href ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Item, { component: "a", href: item.href, children: item.label }, item.id) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Label, { children: item.label }, item.id);
1915
1937
  }
1916
1938
  function SimpleHeader({ navItems, loginFlag }) {
1917
1939
  const [opened, { toggle, close }] = (0, import_hooks.useDisclosure)();
1918
1940
  const { topItems, childrenOf } = useNavTree(navItems);
1919
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
1920
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Box, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1921
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Logo, {}),
1922
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1941
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
1942
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Box, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1943
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, {}),
1944
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1923
1945
  const kids = childrenOf(item.id);
1924
1946
  if (kids.length === 0) {
1925
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
1947
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
1926
1948
  }
1927
1949
  return (
1928
1950
  /*
@@ -1930,7 +1952,7 @@ function SimpleHeader({ navItems, loginFlag }) {
1930
1952
  Menu.Target은 ref를 받을 수 있는 단일 엘리먼트여야 하므로
1931
1953
  SdLink/SdText가 아니라 Box를 타깃으로 두고 라벨을 그 안에 넣는다.
1932
1954
  */
1933
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
1955
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1934
1956
  import_core29.Menu,
1935
1957
  {
1936
1958
  trigger: "click-hover",
@@ -1942,16 +1964,16 @@ function SimpleHeader({ navItems, loginFlag }) {
1942
1964
  radius: "md",
1943
1965
  withinPortal: true,
1944
1966
  children: [
1945
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Target, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Box, { style: { cursor: "pointer" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { gap: 4, align: "center", wrap: "nowrap", children: [
1946
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }),
1947
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_icons_react7.IconChevronDown, { size: 14, stroke: 2 })
1967
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Target, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Box, { style: { cursor: "pointer" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { gap: 4, align: "center", wrap: "nowrap", children: [
1968
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }),
1969
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons_react7.IconChevronDown, { size: 14, stroke: 2 })
1948
1970
  ] }) }) }),
1949
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Dropdown, { children: kids.map((kid) => {
1971
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Dropdown, { children: kids.map((kid) => {
1950
1972
  const grandkids = childrenOf(kid.id);
1951
1973
  if (grandkids.length > 0) {
1952
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Menu.Sub, { children: [
1953
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Sub.Target, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Sub.Item, { children: kid.label }) }),
1954
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
1974
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Menu.Sub, { children: [
1975
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Sub.Target, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Sub.Item, { children: kid.label }) }),
1976
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
1955
1977
  ] }, kid.id);
1956
1978
  }
1957
1979
  return renderMenuLeaf(kid);
@@ -1962,12 +1984,12 @@ function SimpleHeader({ navItems, loginFlag }) {
1962
1984
  )
1963
1985
  );
1964
1986
  }) }),
1965
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { align: "center", gap: "sm", wrap: "nowrap", children: [
1966
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1967
- loginFlag && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1987
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { align: "center", gap: "sm", wrap: "nowrap", children: [
1988
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1989
+ loginFlag && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
1968
1990
  ] })
1969
1991
  ] }) }) }),
1970
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1992
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1971
1993
  MobileNav,
1972
1994
  {
1973
1995
  opened,
@@ -1982,15 +2004,15 @@ function SimpleHeader({ navItems, loginFlag }) {
1982
2004
  function PanelHeader({ navItems, loginFlag }) {
1983
2005
  const [opened, { toggle, close }] = (0, import_hooks.useDisclosure)();
1984
2006
  const { topItems, childrenOf } = useNavTree(navItems);
1985
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
1986
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Box, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
1987
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Logo, {}),
1988
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
2007
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
2008
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Box, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
2009
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, {}),
2010
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1989
2011
  const kids = childrenOf(item.id);
1990
2012
  if (kids.length === 0) {
1991
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
2013
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
1992
2014
  }
1993
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2015
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1994
2016
  import_core29.Menu,
1995
2017
  {
1996
2018
  trigger: "click-hover",
@@ -2002,18 +2024,18 @@ function PanelHeader({ navItems, loginFlag }) {
2002
2024
  radius: "md",
2003
2025
  withinPortal: true,
2004
2026
  children: [
2005
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Target, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Box, { style: { cursor: "pointer" }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { gap: 4, align: "center", wrap: "nowrap", children: [
2006
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }),
2007
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_icons_react7.IconChevronDown, { size: 14, stroke: 2 })
2027
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Target, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Box, { style: { cursor: "pointer" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { gap: 4, align: "center", wrap: "nowrap", children: [
2028
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }),
2029
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons_react7.IconChevronDown, { size: 14, stroke: 2 })
2008
2030
  ] }) }) }),
2009
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Dropdown, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Stack, { gap: "xs", p: "xs", children: kids.map((kid) => {
2031
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Dropdown, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Stack, { gap: "xs", p: "xs", children: kids.map((kid) => {
2010
2032
  const grandkids = childrenOf(kid.id);
2011
2033
  if (grandkids.length === 0) {
2012
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
2034
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
2013
2035
  }
2014
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Stack, { gap: 2, children: [
2015
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: kid.href, children: kid.label }),
2016
- grandkids.map((gk) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
2036
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 2, children: [
2037
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }),
2038
+ grandkids.map((gk) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
2017
2039
  ] }, kid.id);
2018
2040
  }) }) })
2019
2041
  ]
@@ -2021,12 +2043,12 @@ function PanelHeader({ navItems, loginFlag }) {
2021
2043
  item.id
2022
2044
  );
2023
2045
  }) }),
2024
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { align: "center", gap: "sm", wrap: "nowrap", children: [
2025
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
2026
- loginFlag && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
2046
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { align: "center", gap: "sm", wrap: "nowrap", children: [
2047
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
2048
+ loginFlag && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
2027
2049
  ] })
2028
2050
  ] }) }) }),
2029
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2051
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2030
2052
  MobileNav,
2031
2053
  {
2032
2054
  opened,
@@ -2050,16 +2072,16 @@ var SdHeaderPanel = PanelHeader;
2050
2072
  // ui/organism/Footer.tsx
2051
2073
  var import_core30 = require("@mantine/core");
2052
2074
  var import_icons_react8 = require("@tabler/icons-react");
2053
- var import_jsx_runtime32 = require("react/jsx-runtime");
2075
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2054
2076
  function FooterNavColumns({ items }) {
2055
2077
  const topLevel = items.filter((item) => !item.parentId);
2056
2078
  const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
2057
2079
  const CHILD_THRESH = 4;
2058
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment, { children: topLevel.map((group) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Grid.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { gap: "xs", children: [
2059
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: group.href, children: group.label }, group.id),
2080
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_jsx_runtime33.Fragment, { children: topLevel.map((group) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Grid.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Stack, { gap: "xs", children: [
2081
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdLink.Sub, { href: group.href, children: group.label }, group.id),
2060
2082
  getChildren(group.id).map((link, id) => {
2061
2083
  if (id >= CHILD_THRESH) return;
2062
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Hint, { href: link.href, children: link.label }, link.id);
2084
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdLink.Hint, { href: link.href, children: link.label }, link.id);
2063
2085
  })
2064
2086
  ] }) }, group.id)) });
2065
2087
  }
@@ -2073,10 +2095,10 @@ var SOCIAL_ICONS = {
2073
2095
  blog: import_icons_react8.IconWorld
2074
2096
  };
2075
2097
  function FooterSocials({ items }) {
2076
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Group, { gap: 0, wrap: "nowrap", children: items.map((item) => {
2098
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Group, { gap: 0, wrap: "nowrap", children: items.map((item) => {
2077
2099
  var _a4, _b;
2078
2100
  const Icon = (_a4 = SOCIAL_ICONS[item.platform]) != null ? _a4 : import_icons_react8.IconWorld;
2079
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2101
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2080
2102
  import_core30.ActionIcon,
2081
2103
  {
2082
2104
  component: "a",
@@ -2087,54 +2109,54 @@ function FooterSocials({ items }) {
2087
2109
  color: "gray",
2088
2110
  variant: "subtle",
2089
2111
  "aria-label": (_b = item.label) != null ? _b : item.platform,
2090
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Icon, { size: 18, stroke: 1.5 })
2112
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { size: 18, stroke: 1.5 })
2091
2113
  },
2092
2114
  item.url
2093
2115
  );
2094
2116
  }) });
2095
2117
  }
2096
2118
  function InfoCell({ label, children }) {
2097
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Group, { gap: 6, wrap: "nowrap", align: "baseline", children: [
2098
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
2099
- typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdText.Sub, { children }) : children
2119
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { gap: 6, wrap: "nowrap", align: "baseline", children: [
2120
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
2121
+ typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Sub, { children }) : children
2100
2122
  ] });
2101
2123
  }
2102
2124
  function FooterCompanyInfo({ company }) {
2103
2125
  const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
2104
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.SimpleGrid, { cols: { base: 2, sm: 2, md: 1 }, spacing: "md", verticalSpacing: 0, children: [
2105
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
2106
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
2107
- sortedAddresses.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
2108
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InfoCell, { label: "Tel", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
2109
- company.fax && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InfoCell, { label: "Fax", children: company.fax }),
2110
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InfoCell, { label: "Email", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
2126
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.SimpleGrid, { cols: { base: 2, sm: 2, md: 1 }, spacing: "md", verticalSpacing: 0, children: [
2127
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
2128
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
2129
+ sortedAddresses.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
2130
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "Tel", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
2131
+ company.fax && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "Fax", children: company.fax }),
2132
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "Email", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
2111
2133
  ] });
2112
2134
  }
2113
2135
  function SdFooter({ company, navItems, policyLinks, description }) {
2114
2136
  const visibleNav = filterAndSort(navItems);
2115
2137
  const visiblePolicy = filterAndSort(policyLinks);
2116
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Box, { component: "footer", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdContainer, { py: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { children: [
2117
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, { size: "sm" }),
2118
- description && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdText.Sub, { children: description }),
2119
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Flex, { direction: { base: "column", md: "row" }, gap: 48, align: "flex-start", children: [
2120
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Box, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FooterCompanyInfo, { company }) }),
2121
- visibleNav.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Box, { flex: { base: "0 0 auto", md: "2 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Grid, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FooterNavColumns, { items: visibleNav }) }) })
2138
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Box, { component: "footer", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdContainer, { py: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Stack, { children: [
2139
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Logo, { size: "sm" }),
2140
+ description && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Sub, { children: description }),
2141
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Flex, { direction: { base: "column", md: "row" }, gap: 48, align: "flex-start", children: [
2142
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Box, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FooterCompanyInfo, { company }) }),
2143
+ visibleNav.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Box, { flex: { base: "0 0 auto", md: "2 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Grid, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FooterNavColumns, { items: visibleNav }) }) })
2122
2144
  ] }),
2123
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Divider, {}),
2124
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Group, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
2125
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(SdText.Sub, { children: [
2145
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Divider, {}),
2146
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
2147
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(SdText.Sub, { children: [
2126
2148
  "\xA9 ",
2127
2149
  company.copyrightYear,
2128
2150
  " ",
2129
2151
  t(company.name),
2130
2152
  ". All rights reserved."
2131
2153
  ] }),
2132
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Group, { gap: "lg", wrap: "wrap", children: [
2133
- visiblePolicy.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Group, { gap: "lg", children: visiblePolicy.map((item) => {
2154
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { gap: "lg", wrap: "wrap", children: [
2155
+ visiblePolicy.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Group, { gap: "lg", children: visiblePolicy.map((item) => {
2134
2156
  const Link4 = item.highlight ? SdLink.Body : SdLink.Sub;
2135
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Link4, { href: item.href, children: item.label }, item.id);
2157
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Link4, { href: item.href, children: item.label }, item.id);
2136
2158
  }) }),
2137
- company.socials && company.socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FooterSocials, { items: company.socials })
2159
+ company.socials && company.socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FooterSocials, { items: company.socials })
2138
2160
  ] })
2139
2161
  ] })
2140
2162
  ] }) }) });
@@ -2142,7 +2164,7 @@ function SdFooter({ company, navItems, policyLinks, description }) {
2142
2164
 
2143
2165
  // ui/organism/FeatureSection.tsx
2144
2166
  var import_core31 = require("@mantine/core");
2145
- var import_jsx_runtime33 = require("react/jsx-runtime");
2167
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2146
2168
  function SdFeatureSection(_a4) {
2147
2169
  var _b = _a4, {
2148
2170
  label,
@@ -2159,8 +2181,8 @@ function SdFeatureSection(_a4) {
2159
2181
  "cols",
2160
2182
  "py"
2161
2183
  ]);
2162
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, { gap: "xl", children: [
2163
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2184
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core31.Stack, { gap: "xl", children: [
2185
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2164
2186
  SdTextBox.Section,
2165
2187
  {
2166
2188
  label,
@@ -2171,13 +2193,13 @@ function SdFeatureSection(_a4) {
2171
2193
  align: "center"
2172
2194
  }
2173
2195
  ),
2174
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdFeatures, { items, cols })
2196
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdFeatures, { items, cols })
2175
2197
  ] }) }));
2176
2198
  }
2177
2199
 
2178
2200
  // ui/organism/TimelineSection.tsx
2179
2201
  var import_core32 = require("@mantine/core");
2180
- var import_jsx_runtime34 = require("react/jsx-runtime");
2202
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2181
2203
  function SdTimelineSection(_a4) {
2182
2204
  var _b = _a4, {
2183
2205
  label,
@@ -2192,15 +2214,15 @@ function SdTimelineSection(_a4) {
2192
2214
  "items",
2193
2215
  "py"
2194
2216
  ]);
2195
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
2196
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdTextBox.Section, { label, title, description }),
2197
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core32.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdTimeline, { items }) })
2217
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core32.Stack, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
2218
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTextBox.Section, { label, title, description }),
2219
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTimeline, { items }) })
2198
2220
  ] })) });
2199
2221
  }
2200
2222
 
2201
2223
  // ui/organism/StepsSection.tsx
2202
2224
  var import_core33 = require("@mantine/core");
2203
- var import_jsx_runtime35 = require("react/jsx-runtime");
2225
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2204
2226
  function SdStepsSection(_a4) {
2205
2227
  var _b = _a4, {
2206
2228
  label,
@@ -2215,17 +2237,17 @@ function SdStepsSection(_a4) {
2215
2237
  "items",
2216
2238
  "py"
2217
2239
  ]);
2218
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { gap: "xl", children: [
2219
- (label || title || description) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTextBox.Section, { label, title, description }),
2220
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdSteps.Bubble, { items })
2240
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core33.Stack, { gap: "xl", children: [
2241
+ (label || title || description) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdTextBox.Section, { label, title, description }),
2242
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdSteps.Bubble, { items })
2221
2243
  ] }) }));
2222
2244
  }
2223
2245
 
2224
2246
  // ui/organism/ErrorView.tsx
2225
2247
  var import_core34 = require("@mantine/core");
2226
- var import_jsx_runtime36 = require("react/jsx-runtime");
2248
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2227
2249
  function StatusCode({ code }) {
2228
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2250
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2229
2251
  import_core34.Text,
2230
2252
  {
2231
2253
  fz: 160,
@@ -2239,15 +2261,15 @@ function StatusCode({ code }) {
2239
2261
  );
2240
2262
  }
2241
2263
  function Page({ error, onReset, onHome }) {
2242
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { align: "center", gap: "lg", ta: "center", children: [
2243
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(StatusCode, { code: "500" }),
2244
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "sm", align: "center", children: [
2245
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
2246
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(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." })
2264
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core34.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Stack, { align: "center", gap: "lg", ta: "center", children: [
2265
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(StatusCode, { code: "500" }),
2266
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Stack, { gap: "sm", align: "center", children: [
2267
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
2268
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(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." })
2247
2269
  ] }),
2248
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Group, { gap: "sm", justify: "center", children: [
2249
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
2250
- onHome && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
2270
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { gap: "sm", justify: "center", children: [
2271
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
2272
+ onHome && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
2251
2273
  ] })
2252
2274
  ] }) }) });
2253
2275
  }
@@ -2259,15 +2281,15 @@ function NotFound({
2259
2281
  },
2260
2282
  onBack = () => window.history.back()
2261
2283
  }) {
2262
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { align: "center", gap: "lg", ta: "center", children: [
2263
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(StatusCode, { code: "404" }),
2264
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Stack, { gap: "sm", align: "center", children: [
2265
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdTitle.Section, { children: title }),
2266
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdText.Body, { maw: 480, children: description })
2284
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core34.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Stack, { align: "center", gap: "lg", ta: "center", children: [
2285
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(StatusCode, { code: "404" }),
2286
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Stack, { gap: "sm", align: "center", children: [
2287
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdTitle.Section, { children: title }),
2288
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdText.Body, { maw: 480, children: description })
2267
2289
  ] }),
2268
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.Group, { gap: "sm", justify: "center", children: [
2269
- onHome && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
2270
- onBack && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
2290
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { gap: "sm", justify: "center", children: [
2291
+ onHome && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
2292
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
2271
2293
  ] })
2272
2294
  ] }) }) });
2273
2295
  }
@@ -2300,7 +2322,7 @@ var brandDotTexture = {
2300
2322
  };
2301
2323
 
2302
2324
  // ui/organism/LoginView.tsx
2303
- var import_jsx_runtime37 = require("react/jsx-runtime");
2325
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2304
2326
  var SOCIAL_META = {
2305
2327
  google: { Icon: import_icons_react9.IconBrandGoogle, label: "\uAD6C\uAE00\uB85C \uB85C\uADF8\uC778" },
2306
2328
  kakao: { Icon: import_icons_react9.IconBrandKakaoTalk, label: "\uCE74\uCE74\uC624\uB85C \uB85C\uADF8\uC778" },
@@ -2329,9 +2351,9 @@ function LoginForm({
2329
2351
  remember: data.get("remember") === "on"
2330
2352
  });
2331
2353
  }
2332
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "md", children: [
2333
- error && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdText.Error, { children: error }),
2334
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2354
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: "md", children: [
2355
+ error && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdText.Error, { children: error }),
2356
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2335
2357
  SdInput.Email,
2336
2358
  {
2337
2359
  name: "email",
@@ -2341,7 +2363,7 @@ function LoginForm({
2341
2363
  required: true
2342
2364
  }
2343
2365
  ),
2344
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2366
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2345
2367
  SdInput.Password,
2346
2368
  {
2347
2369
  name: "password",
@@ -2351,50 +2373,50 @@ function LoginForm({
2351
2373
  required: true
2352
2374
  }
2353
2375
  ),
2354
- (withRemember || findPasswordHref) && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { justify: "space-between", align: "center", wrap: "nowrap", children: [
2355
- withRemember ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Checkbox, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", {}),
2356
- findPasswordHref && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
2376
+ (withRemember || findPasswordHref) && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Group, { justify: "space-between", align: "center", wrap: "nowrap", children: [
2377
+ withRemember ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Checkbox, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", {}),
2378
+ findPasswordHref && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
2357
2379
  ] }),
2358
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2380
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2359
2381
  SdButton.Primary,
2360
2382
  {
2361
2383
  type: "submit",
2362
2384
  fullWidth: true,
2363
2385
  loading,
2364
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons_react9.IconLogin2, { size: 16 }),
2386
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_icons_react9.IconLogin2, { size: 16 }),
2365
2387
  children: submitLabel
2366
2388
  }
2367
2389
  ),
2368
- socials && socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
2369
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Divider, { label: "\uB610\uB294", labelPosition: "center" }),
2370
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Stack, { gap: "xs", children: socials.map((social) => {
2390
+ socials && socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
2391
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Divider, { label: "\uB610\uB294", labelPosition: "center" }),
2392
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Stack, { gap: "xs", children: socials.map((social) => {
2371
2393
  var _a4;
2372
2394
  const { Icon, label } = SOCIAL_META[social.provider];
2373
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2395
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2374
2396
  SdButton.Outline,
2375
2397
  {
2376
2398
  color: "slate",
2377
2399
  fullWidth: true,
2378
2400
  type: "button",
2379
2401
  onClick: social.onClick,
2380
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Icon, { size: 16 }),
2402
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon, { size: 16 }),
2381
2403
  children: (_a4 = social.label) != null ? _a4 : label
2382
2404
  },
2383
2405
  social.provider
2384
2406
  );
2385
2407
  }) })
2386
2408
  ] }),
2387
- signUpHref && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Group, { gap: 6, justify: "center", children: [
2388
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
2389
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
2409
+ signUpHref && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Group, { gap: 6, justify: "center", children: [
2410
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
2411
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
2390
2412
  ] }),
2391
2413
  children
2392
2414
  ] }) });
2393
2415
  }
2394
2416
  function FormHeader({ title, description }) {
2395
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "lg", children: [
2396
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Logo, { size: "sm" }),
2397
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdTextBox.Card, { title, description: description != null ? description : "" })
2417
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: "lg", children: [
2418
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Logo, { size: "sm" }),
2419
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdTextBox.Card, { title, description: description != null ? description : "" })
2398
2420
  ] });
2399
2421
  }
2400
2422
  function Card7(_a4) {
@@ -2407,9 +2429,9 @@ function Card7(_a4) {
2407
2429
  "description",
2408
2430
  "mih"
2409
2431
  ]);
2410
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Center, { mih, bg: "slate.0", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Paper, { w: "100%", maw: 420, p: { base: "lg", sm: "xl" }, radius: "lg", withBorder: true, shadow: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "xl", children: [
2411
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(FormHeader, { title, description }),
2412
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(LoginForm, __spreadValues({}, formProps))
2432
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Center, { mih, bg: "slate.0", p: "md", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Paper, { w: "100%", maw: 420, p: { base: "lg", sm: "xl" }, radius: "lg", withBorder: true, shadow: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: "xl", children: [
2433
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FormHeader, { title, description }),
2434
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(LoginForm, __spreadValues({}, formProps))
2413
2435
  ] }) }) });
2414
2436
  }
2415
2437
  function Split(_a4) {
@@ -2426,16 +2448,16 @@ function Split(_a4) {
2426
2448
  "brandDescription",
2427
2449
  "mih"
2428
2450
  ]);
2429
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.SimpleGrid, { cols: { base: 1, md: 2 }, spacing: 0, mih, children: [
2430
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
2451
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.SimpleGrid, { cols: { base: 1, md: 2 }, spacing: 0, mih, children: [
2452
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
2431
2453
  import_core35.Box,
2432
2454
  {
2433
2455
  visibleFrom: "md",
2434
2456
  pos: "relative",
2435
2457
  style: __spreadValues({ overflow: "hidden", display: "flex", alignItems: "flex-end" }, brandSurface),
2436
2458
  children: [
2437
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2438
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2459
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Box, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2460
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Box, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2439
2461
  SdTextBox.Hero,
2440
2462
  {
2441
2463
  title: brandTitle,
@@ -2449,9 +2471,9 @@ function Split(_a4) {
2449
2471
  ]
2450
2472
  }
2451
2473
  ),
2452
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Center, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Stack, { gap: "xl", w: "100%", maw: 400, children: [
2453
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(FormHeader, { title, description }),
2454
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(LoginForm, __spreadValues({}, formProps))
2474
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Center, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: "xl", w: "100%", maw: 400, children: [
2475
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FormHeader, { title, description }),
2476
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(LoginForm, __spreadValues({}, formProps))
2455
2477
  ] }) })
2456
2478
  ] });
2457
2479
  }
@@ -2467,9 +2489,9 @@ var SdLoginViewSplit = SdLoginView.Split;
2467
2489
  // ui/organism/Result.tsx
2468
2490
  var import_core36 = require("@mantine/core");
2469
2491
  var import_icons_react10 = require("@tabler/icons-react");
2470
- var import_jsx_runtime38 = require("react/jsx-runtime");
2492
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2471
2493
  function ResultIcon({ color, Icon }) {
2472
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Center, { w: 88, h: 88, bg: `${color}.0`, style: { borderRadius: "50%" }, "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon, { size: 48, stroke: 1.5, color: `var(--mantine-color-${color}-6)` }) });
2494
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Center, { w: 88, h: 88, bg: `${color}.0`, style: { borderRadius: "50%" }, "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Icon, { size: 48, stroke: 1.5, color: `var(--mantine-color-${color}-6)` }) });
2473
2495
  }
2474
2496
  function createResult(defaults) {
2475
2497
  return function SdResult2({
@@ -2480,16 +2502,16 @@ function createResult(defaults) {
2480
2502
  children,
2481
2503
  mih = "60vh"
2482
2504
  }) {
2483
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Center, { mih, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { align: "center", gap: "lg", ta: "center", children: [
2484
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
2485
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Stack, { gap: "sm", align: "center", children: [
2486
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdTitle.Section, { children: title }),
2487
- description && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdText.Body, { maw: 480, children: description })
2505
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Center, { mih, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Stack, { align: "center", gap: "lg", ta: "center", children: [
2506
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
2507
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Stack, { gap: "sm", align: "center", children: [
2508
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdTitle.Section, { children: title }),
2509
+ description && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdText.Body, { maw: 480, children: description })
2488
2510
  ] }),
2489
- children && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core36.Box, { children }),
2490
- (primaryAction || secondaryAction) && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core36.Group, { gap: "sm", justify: "center", children: [
2491
- primaryAction && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
2492
- secondaryAction && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
2511
+ children && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Box, { children }),
2512
+ (primaryAction || secondaryAction) && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Group, { gap: "sm", justify: "center", children: [
2513
+ primaryAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
2514
+ secondaryAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
2493
2515
  ] })
2494
2516
  ] }) }) });
2495
2517
  };
@@ -2513,7 +2535,7 @@ var SdResultError = SdResult.Error;
2513
2535
 
2514
2536
  // ui/template/MainLayout.tsx
2515
2537
  var import_core37 = require("@mantine/core");
2516
- var import_jsx_runtime39 = require("react/jsx-runtime");
2538
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2517
2539
  var headers = {
2518
2540
  mega: SdHeader.Mega,
2519
2541
  simple: SdHeader.Simple,
@@ -2527,16 +2549,16 @@ function MainLayout({
2527
2549
  headerVariant = "mega"
2528
2550
  }) {
2529
2551
  const Header = headers[headerVariant];
2530
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core37.AppShell, { header: { height: 60 }, children: [
2531
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.AppShell.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Header, { navItems, loginFlag }) }),
2532
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core37.AppShell.Main, { children }),
2533
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdFooter, { company: companyInfo, navItems })
2552
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.AppShell, { header: { height: 60 }, children: [
2553
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.AppShell.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Header, { navItems, loginFlag }) }),
2554
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.AppShell.Main, { children }),
2555
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdFooter, { company: companyInfo, navItems })
2534
2556
  ] });
2535
2557
  }
2536
2558
 
2537
2559
  // ui/template/PageLayout.tsx
2538
2560
  var import_core38 = require("@mantine/core");
2539
- var import_jsx_runtime40 = require("react/jsx-runtime");
2561
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2540
2562
  var HERO_MIN_H = "38svh";
2541
2563
  var HERO_PY = { base: 56, sm: 88 };
2542
2564
  var HERO_MAW = 680;
@@ -2546,14 +2568,13 @@ function Content({
2546
2568
  breadcrumb = true,
2547
2569
  currentHref
2548
2570
  }) {
2549
- const showBreadcrumb = breadcrumb && !!navItems && navItems.length > 0;
2550
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(SdContainer, { py: "xl", children: [
2551
- showBreadcrumb && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdBreadcrumb, { navItems, currentHref, mb: "lg" }),
2552
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Stack, { gap: "xl", children })
2571
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(SdContainer, { py: "xl", children: [
2572
+ breadcrumb && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SdBreadcrumb, { navItems, currentHref, mb: "lg" }),
2573
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Stack, { gap: "xl", children })
2553
2574
  ] });
2554
2575
  }
2555
2576
  function LayoutGap() {
2556
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Space, {});
2577
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Space, {});
2557
2578
  }
2558
2579
  function Minimal({
2559
2580
  label,
@@ -2564,10 +2585,10 @@ function Minimal({
2564
2585
  breadcrumb,
2565
2586
  currentHref
2566
2587
  }) {
2567
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Plain2, { navItems, breadcrumb, currentHref, children: [
2568
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(LayoutGap, {}),
2569
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdTextBox.Section, { label, title, description: description != null ? description : "" }),
2570
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Divider, {}),
2588
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Plain2, { navItems, breadcrumb, currentHref, children: [
2589
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(LayoutGap, {}),
2590
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SdTextBox.Section, { label, title, description: description != null ? description : "" }),
2591
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Divider, {}),
2571
2592
  children
2572
2593
  ] });
2573
2594
  }
@@ -2577,15 +2598,15 @@ function Plain2({
2577
2598
  breadcrumb,
2578
2599
  currentHref
2579
2600
  }) {
2580
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Content, { navItems, breadcrumb, currentHref, children }) });
2601
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Content, { navItems, breadcrumb, currentHref, children }) });
2581
2602
  }
2582
2603
  function HeroCopy({ label, title, description }) {
2583
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Stack, { gap: "md", maw: HERO_MAW, children: [
2584
- label && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core38.Group, { gap: "sm", align: "center", wrap: "nowrap", children: [
2585
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Box, { w: 28, h: 2, bg: "primary.3", style: { borderRadius: 2 } }),
2586
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdText.Eyebrow, { c: "primary.1", children: label })
2604
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core38.Stack, { gap: "md", maw: HERO_MAW, children: [
2605
+ label && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_core38.Group, { gap: "sm", align: "center", wrap: "nowrap", children: [
2606
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Box, { w: 28, h: 2, bg: "primary.3", style: { borderRadius: 2 } }),
2607
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SdText.Eyebrow, { c: "primary.1", children: label })
2587
2608
  ] }),
2588
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2609
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2589
2610
  SdTextBox.Hero,
2590
2611
  {
2591
2612
  title,
@@ -2608,8 +2629,8 @@ function Image2({
2608
2629
  breadcrumb,
2609
2630
  currentHref
2610
2631
  }) {
2611
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
2612
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2632
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
2633
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2613
2634
  import_core38.Box,
2614
2635
  {
2615
2636
  pos: "relative",
@@ -2623,7 +2644,7 @@ function Image2({
2623
2644
  backgroundColor: "var(--mantine-color-slate-9)"
2624
2645
  },
2625
2646
  children: [
2626
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2647
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2627
2648
  import_core38.Box,
2628
2649
  {
2629
2650
  "aria-hidden": true,
@@ -2634,11 +2655,11 @@ function Image2({
2634
2655
  }
2635
2656
  }
2636
2657
  ),
2637
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(HeroCopy, { label, title, description }) })
2658
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(HeroCopy, { label, title, description }) })
2638
2659
  ]
2639
2660
  }
2640
2661
  ),
2641
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Content, { navItems, breadcrumb, currentHref, children })
2662
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Content, { navItems, breadcrumb, currentHref, children })
2642
2663
  ] });
2643
2664
  }
2644
2665
  function Brand({
@@ -2650,8 +2671,8 @@ function Brand({
2650
2671
  breadcrumb,
2651
2672
  currentHref
2652
2673
  }) {
2653
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
2654
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2674
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
2675
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2655
2676
  import_core38.Box,
2656
2677
  {
2657
2678
  pos: "relative",
@@ -2663,12 +2684,12 @@ function Brand({
2663
2684
  borderBottom: "1px solid var(--mantine-color-slate-8)"
2664
2685
  }, brandSurface),
2665
2686
  children: [
2666
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core38.Box, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2667
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(HeroCopy, { label, title, description }) })
2687
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_core38.Box, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2688
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(HeroCopy, { label, title, description }) })
2668
2689
  ]
2669
2690
  }
2670
2691
  ),
2671
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Content, { navItems, breadcrumb, currentHref, children })
2692
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Content, { navItems, breadcrumb, currentHref, children })
2672
2693
  ] });
2673
2694
  }
2674
2695
  var PageLayout = {
@@ -2686,6 +2707,9 @@ var PageLayoutMinimal = PageLayout.Minimal;
2686
2707
  var PageLayoutBrand = PageLayout.Brand;
2687
2708
  var PageLayoutPlain = PageLayout.Plain;
2688
2709
 
2710
+ // ui/template/SdProvider.tsx
2711
+ var import_core40 = require("@mantine/core");
2712
+
2689
2713
  // ui/theme.ts
2690
2714
  var import_core39 = require("@mantine/core");
2691
2715
  var primary = [
@@ -2943,11 +2967,26 @@ var theme = (0, import_core39.createTheme)({
2943
2967
  }
2944
2968
  }
2945
2969
  });
2970
+
2971
+ // ui/template/SdProvider.tsx
2972
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2973
+ function SdProvider({
2974
+ children,
2975
+ theme: theme2 = theme,
2976
+ navItems,
2977
+ defaultColorScheme = "light"
2978
+ }) {
2979
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_core40.MantineProvider, { theme: theme2, defaultColorScheme, children: [
2980
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SdToastProvider, {}),
2981
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(NavProvider, { navItems, children })
2982
+ ] });
2983
+ }
2946
2984
  // Annotate the CommonJS export names for ESM import in node:
2947
2985
  0 && (module.exports = {
2948
2986
  HeroCarousel,
2949
2987
  Logo,
2950
2988
  MainLayout,
2989
+ NavProvider,
2951
2990
  PageLayout,
2952
2991
  PageLayoutBrand,
2953
2992
  PageLayoutImage,
@@ -3033,6 +3072,7 @@ var theme = (0, import_core39.createTheme)({
3033
3072
  SdPricingCardDefault,
3034
3073
  SdPricingCardFeatured,
3035
3074
  SdPricingCardGrid,
3075
+ SdProvider,
3036
3076
  SdQuote,
3037
3077
  SdQuoteCard,
3038
3078
  SdQuotePlain,
@@ -3096,5 +3136,6 @@ var theme = (0, import_core39.createTheme)({
3096
3136
  SdToastSuccess,
3097
3137
  SdToastUpdate,
3098
3138
  SdToastWarning,
3099
- theme
3139
+ theme,
3140
+ useNav
3100
3141
  });