@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.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,28 @@ 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
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core27.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1712
1733
  import_core27.Breadcrumbs,
1713
1734
  {
1714
- separator: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons_react5.IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1735
+ separator: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons_react5.IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
1715
1736
  separatorMargin: "xs",
1716
1737
  children: [
1717
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1738
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1718
1739
  SdLink.Sub,
1719
1740
  {
1720
1741
  href: homeHref,
1721
1742
  "aria-label": homeLabel,
1722
1743
  style: { display: "inline-flex", alignItems: "center" },
1723
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons_react5.IconHome, { size: 16, stroke: 2 })
1744
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_icons_react5.IconHome, { size: 16, stroke: 2 })
1724
1745
  }
1725
1746
  ),
1726
1747
  trail.map((item, i) => {
1727
1748
  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);
1749
+ 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
1750
  })
1730
1751
  ]
1731
1752
  }
@@ -1736,7 +1757,7 @@ function SdBreadcrumb(_a4) {
1736
1757
  var import_carousel = require("@mantine/carousel");
1737
1758
  var import_core28 = require("@mantine/core");
1738
1759
  var import_icons_react6 = require("@tabler/icons-react");
1739
- var import_jsx_runtime30 = require("react/jsx-runtime");
1760
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1740
1761
  var variantMap = {
1741
1762
  primary: SdButton.Primary,
1742
1763
  secondary: SdButton.Secondary,
@@ -1746,12 +1767,12 @@ var variantMap = {
1746
1767
  function CtaButton({ cta }) {
1747
1768
  var _a4;
1748
1769
  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 }) });
1770
+ 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
1771
  }
1751
1772
  function HeroCarousel({ slides, children }) {
1752
- if (children) return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children });
1773
+ if (children) return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children });
1753
1774
  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)(
1775
+ 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
1776
  import_core28.Box,
1756
1777
  {
1757
1778
  style: {
@@ -1763,8 +1784,8 @@ function HeroCarousel({ slides, children }) {
1763
1784
  alignItems: "center",
1764
1785
  justifyContent: "center"
1765
1786
  },
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)(
1787
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core28.Stack, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
1788
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1768
1789
  SdTextBox.Hero,
1769
1790
  {
1770
1791
  title: slide.title,
@@ -1773,7 +1794,7 @@ function HeroCarousel({ slides, children }) {
1773
1794
  align: "center"
1774
1795
  }
1775
1796
  ),
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)) })
1797
+ 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
1798
  ] })
1778
1799
  }
1779
1800
  ) }, i)) });
@@ -1783,7 +1804,7 @@ function HeroCarousel({ slides, children }) {
1783
1804
  var import_core29 = require("@mantine/core");
1784
1805
  var import_icons_react7 = require("@tabler/icons-react");
1785
1806
  var import_hooks = require("@mantine/hooks");
1786
- var import_jsx_runtime31 = require("react/jsx-runtime");
1807
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1787
1808
  var BAR_HEIGHT = 60;
1788
1809
  var MAX_DEPTH = 3;
1789
1810
  var NAV_LINK_STYLES = {
@@ -1805,9 +1826,9 @@ function useNavTree(navItems) {
1805
1826
  function MobileNavNode({ item, depth, childrenOf, close }) {
1806
1827
  const kids = depth < MAX_DEPTH ? childrenOf(item.id) : [];
1807
1828
  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 }) });
1829
+ 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
1830
  }
1810
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1831
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1811
1832
  import_core29.NavLink,
1812
1833
  {
1813
1834
  label: item.label,
@@ -1815,7 +1836,7 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1815
1836
  component: item.href ? "a" : "button",
1816
1837
  href: item.href,
1817
1838
  childrenOffset: 28,
1818
- children: kids.map((kid) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1839
+ children: kids.map((kid) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1819
1840
  MobileNavNode,
1820
1841
  {
1821
1842
  item: kid,
@@ -1829,9 +1850,9 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
1829
1850
  );
1830
1851
  }
1831
1852
  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" }) })
1853
+ 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: [
1854
+ topItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
1855
+ 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
1856
  ] }) });
1836
1857
  }
1837
1858
  function MegaHeader({ navItems, loginFlag }) {
@@ -1841,8 +1862,8 @@ function MegaHeader({ navItems, loginFlag }) {
1841
1862
  const { focused, ref: focusRef } = (0, import_hooks.useFocusWithin)();
1842
1863
  const rootRef = (0, import_hooks.useMergedRef)(hoverRef, focusRef);
1843
1864
  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)(
1865
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
1866
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1846
1867
  import_core29.Box,
1847
1868
  {
1848
1869
  ref: rootRef,
@@ -1853,12 +1874,12 @@ function MegaHeader({ navItems, loginFlag }) {
1853
1874
  borderBottom: expanded ? "1px solid var(--mantine-color-slate-2)" : void 0,
1854
1875
  transition: "box-shadow 0.15s"
1855
1876
  },
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) => {
1877
+ 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: [
1878
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, {}) }),
1879
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1859
1880
  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 }) }),
1881
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 0, align: "center", children: [
1882
+ /* @__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
1883
  kids.length > 0 && /*
1863
1884
  Mantine Collapse를 쓰지 않는다 — 접힐 때 display:none이 되어
1864
1885
  하위 링크가 폭 계산에서 빠졌다가 펼칠 때 다시 들어오면서
@@ -1866,7 +1887,7 @@ function MegaHeader({ navItems, loginFlag }) {
1866
1887
  height 0 + overflow hidden은 폭 기여를 유지하므로 간격이 고정된다.
1867
1888
  visibility:hidden이 접힌 상태의 링크를 탭 순서에서도 빼준다.
1868
1889
  */
1869
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1890
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1870
1891
  import_core29.Box,
1871
1892
  {
1872
1893
  "aria-hidden": !expanded,
@@ -1877,28 +1898,28 @@ function MegaHeader({ navItems, loginFlag }) {
1877
1898
  visibility: expanded ? "visible" : "hidden",
1878
1899
  transition: "opacity 0.15s ease"
1879
1900
  },
1880
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Stack, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1901
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Stack, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
1881
1902
  const grandkids = childrenOf(kid.id);
1882
1903
  if (grandkids.length === 0) {
1883
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1904
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
1884
1905
  }
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))
1906
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 2, align: "center", children: [
1907
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }),
1908
+ grandkids.map((gk) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
1888
1909
  ] }, kid.id);
1889
1910
  }) })
1890
1911
  }
1891
1912
  )
1892
1913
  ] }, item.id);
1893
1914
  }) }),
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" }) })
1915
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { h: BAR_HEIGHT, align: "center", gap: "sm", wrap: "nowrap", children: [
1916
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1917
+ 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
1918
  ] })
1898
1919
  ] }) })
1899
1920
  }
1900
1921
  ),
1901
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1922
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1902
1923
  MobileNav,
1903
1924
  {
1904
1925
  opened,
@@ -1911,18 +1932,18 @@ function MegaHeader({ navItems, loginFlag }) {
1911
1932
  ] });
1912
1933
  }
1913
1934
  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);
1935
+ 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
1936
  }
1916
1937
  function SimpleHeader({ navItems, loginFlag }) {
1917
1938
  const [opened, { toggle, close }] = (0, import_hooks.useDisclosure)();
1918
1939
  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) => {
1940
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
1941
+ /* @__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: [
1942
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, {}),
1943
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1923
1944
  const kids = childrenOf(item.id);
1924
1945
  if (kids.length === 0) {
1925
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
1946
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
1926
1947
  }
1927
1948
  return (
1928
1949
  /*
@@ -1930,7 +1951,7 @@ function SimpleHeader({ navItems, loginFlag }) {
1930
1951
  Menu.Target은 ref를 받을 수 있는 단일 엘리먼트여야 하므로
1931
1952
  SdLink/SdText가 아니라 Box를 타깃으로 두고 라벨을 그 안에 넣는다.
1932
1953
  */
1933
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
1954
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1934
1955
  import_core29.Menu,
1935
1956
  {
1936
1957
  trigger: "click-hover",
@@ -1942,16 +1963,16 @@ function SimpleHeader({ navItems, loginFlag }) {
1942
1963
  radius: "md",
1943
1964
  withinPortal: true,
1944
1965
  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 })
1966
+ /* @__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: [
1967
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }),
1968
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons_react7.IconChevronDown, { size: 14, stroke: 2 })
1948
1969
  ] }) }) }),
1949
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Menu.Dropdown, { children: kids.map((kid) => {
1970
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Dropdown, { children: kids.map((kid) => {
1950
1971
  const grandkids = childrenOf(kid.id);
1951
1972
  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) })
1973
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Menu.Sub, { children: [
1974
+ /* @__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 }) }),
1975
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
1955
1976
  ] }, kid.id);
1956
1977
  }
1957
1978
  return renderMenuLeaf(kid);
@@ -1962,12 +1983,12 @@ function SimpleHeader({ navItems, loginFlag }) {
1962
1983
  )
1963
1984
  );
1964
1985
  }) }),
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" }) })
1986
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { align: "center", gap: "sm", wrap: "nowrap", children: [
1987
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1988
+ 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
1989
  ] })
1969
1990
  ] }) }) }),
1970
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1991
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1971
1992
  MobileNav,
1972
1993
  {
1973
1994
  opened,
@@ -1982,15 +2003,15 @@ function SimpleHeader({ navItems, loginFlag }) {
1982
2003
  function PanelHeader({ navItems, loginFlag }) {
1983
2004
  const [opened, { toggle, close }] = (0, import_hooks.useDisclosure)();
1984
2005
  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) => {
2006
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
2007
+ /* @__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: [
2008
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Logo, {}),
2009
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Group, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
1989
2010
  const kids = childrenOf(item.id);
1990
2011
  if (kids.length === 0) {
1991
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
2012
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
1992
2013
  }
1993
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2014
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1994
2015
  import_core29.Menu,
1995
2016
  {
1996
2017
  trigger: "click-hover",
@@ -2002,18 +2023,18 @@ function PanelHeader({ navItems, loginFlag }) {
2002
2023
  radius: "md",
2003
2024
  withinPortal: true,
2004
2025
  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 })
2026
+ /* @__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: [
2027
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }),
2028
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_icons_react7.IconChevronDown, { size: 14, stroke: 2 })
2008
2029
  ] }) }) }),
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) => {
2030
+ /* @__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
2031
  const grandkids = childrenOf(kid.id);
2011
2032
  if (grandkids.length === 0) {
2012
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
2033
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
2013
2034
  }
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))
2035
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Stack, { gap: 2, children: [
2036
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }),
2037
+ grandkids.map((gk) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
2017
2038
  ] }, kid.id);
2018
2039
  }) }) })
2019
2040
  ]
@@ -2021,12 +2042,12 @@ function PanelHeader({ navItems, loginFlag }) {
2021
2042
  item.id
2022
2043
  );
2023
2044
  }) }),
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" }) })
2045
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core29.Group, { align: "center", gap: "sm", wrap: "nowrap", children: [
2046
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core29.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
2047
+ 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
2048
  ] })
2028
2049
  ] }) }) }),
2029
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2050
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2030
2051
  MobileNav,
2031
2052
  {
2032
2053
  opened,
@@ -2050,16 +2071,16 @@ var SdHeaderPanel = PanelHeader;
2050
2071
  // ui/organism/Footer.tsx
2051
2072
  var import_core30 = require("@mantine/core");
2052
2073
  var import_icons_react8 = require("@tabler/icons-react");
2053
- var import_jsx_runtime32 = require("react/jsx-runtime");
2074
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2054
2075
  function FooterNavColumns({ items }) {
2055
2076
  const topLevel = items.filter((item) => !item.parentId);
2056
2077
  const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
2057
2078
  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),
2079
+ 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: [
2080
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdLink.Sub, { href: group.href, children: group.label }, group.id),
2060
2081
  getChildren(group.id).map((link, id) => {
2061
2082
  if (id >= CHILD_THRESH) return;
2062
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Hint, { href: link.href, children: link.label }, link.id);
2083
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdLink.Hint, { href: link.href, children: link.label }, link.id);
2063
2084
  })
2064
2085
  ] }) }, group.id)) });
2065
2086
  }
@@ -2073,10 +2094,10 @@ var SOCIAL_ICONS = {
2073
2094
  blog: import_icons_react8.IconWorld
2074
2095
  };
2075
2096
  function FooterSocials({ items }) {
2076
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_core30.Group, { gap: 0, wrap: "nowrap", children: items.map((item) => {
2097
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Group, { gap: 0, wrap: "nowrap", children: items.map((item) => {
2077
2098
  var _a4, _b;
2078
2099
  const Icon = (_a4 = SOCIAL_ICONS[item.platform]) != null ? _a4 : import_icons_react8.IconWorld;
2079
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2100
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2080
2101
  import_core30.ActionIcon,
2081
2102
  {
2082
2103
  component: "a",
@@ -2087,54 +2108,54 @@ function FooterSocials({ items }) {
2087
2108
  color: "gray",
2088
2109
  variant: "subtle",
2089
2110
  "aria-label": (_b = item.label) != null ? _b : item.platform,
2090
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Icon, { size: 18, stroke: 1.5 })
2111
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { size: 18, stroke: 1.5 })
2091
2112
  },
2092
2113
  item.url
2093
2114
  );
2094
2115
  }) });
2095
2116
  }
2096
2117
  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
2118
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { gap: 6, wrap: "nowrap", align: "baseline", children: [
2119
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
2120
+ typeof children === "string" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Sub, { children }) : children
2100
2121
  ] });
2101
2122
  }
2102
2123
  function FooterCompanyInfo({ company }) {
2103
2124
  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 }) })
2125
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.SimpleGrid, { cols: { base: 2, sm: 2, md: 1 }, spacing: "md", verticalSpacing: 0, children: [
2126
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
2127
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
2128
+ sortedAddresses.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
2129
+ /* @__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 }) }),
2130
+ company.fax && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(InfoCell, { label: "Fax", children: company.fax }),
2131
+ /* @__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
2132
  ] });
2112
2133
  }
2113
2134
  function SdFooter({ company, navItems, policyLinks, description }) {
2114
2135
  const visibleNav = filterAndSort(navItems);
2115
2136
  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 }) }) })
2137
+ 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: [
2138
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Logo, { size: "sm" }),
2139
+ description && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Sub, { children: description }),
2140
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Flex, { direction: { base: "column", md: "row" }, gap: 48, align: "flex-start", children: [
2141
+ /* @__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 }) }),
2142
+ 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
2143
  ] }),
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: [
2144
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Divider, {}),
2145
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
2146
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(SdText.Sub, { children: [
2126
2147
  "\xA9 ",
2127
2148
  company.copyrightYear,
2128
2149
  " ",
2129
2150
  t(company.name),
2130
2151
  ". All rights reserved."
2131
2152
  ] }),
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) => {
2153
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core30.Group, { gap: "lg", wrap: "wrap", children: [
2154
+ visiblePolicy.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core30.Group, { gap: "lg", children: visiblePolicy.map((item) => {
2134
2155
  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);
2156
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Link4, { href: item.href, children: item.label }, item.id);
2136
2157
  }) }),
2137
- company.socials && company.socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(FooterSocials, { items: company.socials })
2158
+ company.socials && company.socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FooterSocials, { items: company.socials })
2138
2159
  ] })
2139
2160
  ] })
2140
2161
  ] }) }) });
@@ -2142,7 +2163,7 @@ function SdFooter({ company, navItems, policyLinks, description }) {
2142
2163
 
2143
2164
  // ui/organism/FeatureSection.tsx
2144
2165
  var import_core31 = require("@mantine/core");
2145
- var import_jsx_runtime33 = require("react/jsx-runtime");
2166
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2146
2167
  function SdFeatureSection(_a4) {
2147
2168
  var _b = _a4, {
2148
2169
  label,
@@ -2159,8 +2180,8 @@ function SdFeatureSection(_a4) {
2159
2180
  "cols",
2160
2181
  "py"
2161
2182
  ]);
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)(
2183
+ 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: [
2184
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2164
2185
  SdTextBox.Section,
2165
2186
  {
2166
2187
  label,
@@ -2171,13 +2192,13 @@ function SdFeatureSection(_a4) {
2171
2192
  align: "center"
2172
2193
  }
2173
2194
  ),
2174
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdFeatures, { items, cols })
2195
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdFeatures, { items, cols })
2175
2196
  ] }) }));
2176
2197
  }
2177
2198
 
2178
2199
  // ui/organism/TimelineSection.tsx
2179
2200
  var import_core32 = require("@mantine/core");
2180
- var import_jsx_runtime34 = require("react/jsx-runtime");
2201
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2181
2202
  function SdTimelineSection(_a4) {
2182
2203
  var _b = _a4, {
2183
2204
  label,
@@ -2192,15 +2213,15 @@ function SdTimelineSection(_a4) {
2192
2213
  "items",
2193
2214
  "py"
2194
2215
  ]);
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 }) })
2216
+ 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: [
2217
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTextBox.Section, { label, title, description }),
2218
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core32.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTimeline, { items }) })
2198
2219
  ] })) });
2199
2220
  }
2200
2221
 
2201
2222
  // ui/organism/StepsSection.tsx
2202
2223
  var import_core33 = require("@mantine/core");
2203
- var import_jsx_runtime35 = require("react/jsx-runtime");
2224
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2204
2225
  function SdStepsSection(_a4) {
2205
2226
  var _b = _a4, {
2206
2227
  label,
@@ -2215,17 +2236,17 @@ function SdStepsSection(_a4) {
2215
2236
  "items",
2216
2237
  "py"
2217
2238
  ]);
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 })
2239
+ 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: [
2240
+ (label || title || description) && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdTextBox.Section, { label, title, description }),
2241
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdSteps.Bubble, { items })
2221
2242
  ] }) }));
2222
2243
  }
2223
2244
 
2224
2245
  // ui/organism/ErrorView.tsx
2225
2246
  var import_core34 = require("@mantine/core");
2226
- var import_jsx_runtime36 = require("react/jsx-runtime");
2247
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2227
2248
  function StatusCode({ code }) {
2228
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2249
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2229
2250
  import_core34.Text,
2230
2251
  {
2231
2252
  fz: 160,
@@ -2239,15 +2260,15 @@ function StatusCode({ code }) {
2239
2260
  );
2240
2261
  }
2241
2262
  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." })
2263
+ 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: [
2264
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(StatusCode, { code: "500" }),
2265
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Stack, { gap: "sm", align: "center", children: [
2266
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
2267
+ /* @__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
2268
  ] }),
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" })
2269
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { gap: "sm", justify: "center", children: [
2270
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
2271
+ onHome && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
2251
2272
  ] })
2252
2273
  ] }) }) });
2253
2274
  }
@@ -2259,15 +2280,15 @@ function NotFound({
2259
2280
  },
2260
2281
  onBack = () => window.history.back()
2261
2282
  }) {
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 })
2283
+ 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: [
2284
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(StatusCode, { code: "404" }),
2285
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Stack, { gap: "sm", align: "center", children: [
2286
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdTitle.Section, { children: title }),
2287
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdText.Body, { maw: 480, children: description })
2267
2288
  ] }),
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" })
2289
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core34.Group, { gap: "sm", justify: "center", children: [
2290
+ onHome && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
2291
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
2271
2292
  ] })
2272
2293
  ] }) }) });
2273
2294
  }
@@ -2300,7 +2321,7 @@ var brandDotTexture = {
2300
2321
  };
2301
2322
 
2302
2323
  // ui/organism/LoginView.tsx
2303
- var import_jsx_runtime37 = require("react/jsx-runtime");
2324
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2304
2325
  var SOCIAL_META = {
2305
2326
  google: { Icon: import_icons_react9.IconBrandGoogle, label: "\uAD6C\uAE00\uB85C \uB85C\uADF8\uC778" },
2306
2327
  kakao: { Icon: import_icons_react9.IconBrandKakaoTalk, label: "\uCE74\uCE74\uC624\uB85C \uB85C\uADF8\uC778" },
@@ -2329,9 +2350,9 @@ function LoginForm({
2329
2350
  remember: data.get("remember") === "on"
2330
2351
  });
2331
2352
  }
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)(
2353
+ 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: [
2354
+ error && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdText.Error, { children: error }),
2355
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2335
2356
  SdInput.Email,
2336
2357
  {
2337
2358
  name: "email",
@@ -2341,7 +2362,7 @@ function LoginForm({
2341
2362
  required: true
2342
2363
  }
2343
2364
  ),
2344
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2365
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2345
2366
  SdInput.Password,
2346
2367
  {
2347
2368
  name: "password",
@@ -2351,50 +2372,50 @@ function LoginForm({
2351
2372
  required: true
2352
2373
  }
2353
2374
  ),
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?" })
2375
+ (withRemember || findPasswordHref) && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Group, { justify: "space-between", align: "center", wrap: "nowrap", children: [
2376
+ 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", {}),
2377
+ findPasswordHref && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
2357
2378
  ] }),
2358
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2379
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2359
2380
  SdButton.Primary,
2360
2381
  {
2361
2382
  type: "submit",
2362
2383
  fullWidth: true,
2363
2384
  loading,
2364
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_icons_react9.IconLogin2, { size: 16 }),
2385
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_icons_react9.IconLogin2, { size: 16 }),
2365
2386
  children: submitLabel
2366
2387
  }
2367
2388
  ),
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) => {
2389
+ socials && socials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
2390
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Divider, { label: "\uB610\uB294", labelPosition: "center" }),
2391
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Stack, { gap: "xs", children: socials.map((social) => {
2371
2392
  var _a4;
2372
2393
  const { Icon, label } = SOCIAL_META[social.provider];
2373
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2394
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2374
2395
  SdButton.Outline,
2375
2396
  {
2376
2397
  color: "slate",
2377
2398
  fullWidth: true,
2378
2399
  type: "button",
2379
2400
  onClick: social.onClick,
2380
- leftSection: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Icon, { size: 16 }),
2401
+ leftSection: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon, { size: 16 }),
2381
2402
  children: (_a4 = social.label) != null ? _a4 : label
2382
2403
  },
2383
2404
  social.provider
2384
2405
  );
2385
2406
  }) })
2386
2407
  ] }),
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" })
2408
+ signUpHref && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Group, { gap: 6, justify: "center", children: [
2409
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
2410
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
2390
2411
  ] }),
2391
2412
  children
2392
2413
  ] }) });
2393
2414
  }
2394
2415
  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 : "" })
2416
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.Stack, { gap: "lg", children: [
2417
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Logo, { size: "sm" }),
2418
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SdTextBox.Card, { title, description: description != null ? description : "" })
2398
2419
  ] });
2399
2420
  }
2400
2421
  function Card7(_a4) {
@@ -2407,9 +2428,9 @@ function Card7(_a4) {
2407
2428
  "description",
2408
2429
  "mih"
2409
2430
  ]);
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))
2431
+ 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: [
2432
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FormHeader, { title, description }),
2433
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(LoginForm, __spreadValues({}, formProps))
2413
2434
  ] }) }) });
2414
2435
  }
2415
2436
  function Split(_a4) {
@@ -2426,16 +2447,16 @@ function Split(_a4) {
2426
2447
  "brandDescription",
2427
2448
  "mih"
2428
2449
  ]);
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)(
2450
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_core35.SimpleGrid, { cols: { base: 1, md: 2 }, spacing: 0, mih, children: [
2451
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
2431
2452
  import_core35.Box,
2432
2453
  {
2433
2454
  visibleFrom: "md",
2434
2455
  pos: "relative",
2435
2456
  style: __spreadValues({ overflow: "hidden", display: "flex", alignItems: "flex-end" }, brandSurface),
2436
2457
  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)(
2458
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_core35.Box, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
2459
+ /* @__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
2460
  SdTextBox.Hero,
2440
2461
  {
2441
2462
  title: brandTitle,
@@ -2449,9 +2470,9 @@ function Split(_a4) {
2449
2470
  ]
2450
2471
  }
2451
2472
  ),
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))
2473
+ /* @__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: [
2474
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FormHeader, { title, description }),
2475
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(LoginForm, __spreadValues({}, formProps))
2455
2476
  ] }) })
2456
2477
  ] });
2457
2478
  }
@@ -2467,9 +2488,9 @@ var SdLoginViewSplit = SdLoginView.Split;
2467
2488
  // ui/organism/Result.tsx
2468
2489
  var import_core36 = require("@mantine/core");
2469
2490
  var import_icons_react10 = require("@tabler/icons-react");
2470
- var import_jsx_runtime38 = require("react/jsx-runtime");
2491
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2471
2492
  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)` }) });
2493
+ 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
2494
  }
2474
2495
  function createResult(defaults) {
2475
2496
  return function SdResult2({
@@ -2480,16 +2501,16 @@ function createResult(defaults) {
2480
2501
  children,
2481
2502
  mih = "60vh"
2482
2503
  }) {
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 })
2504
+ 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: [
2505
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
2506
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Stack, { gap: "sm", align: "center", children: [
2507
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdTitle.Section, { children: title }),
2508
+ description && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdText.Body, { maw: 480, children: description })
2488
2509
  ] }),
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 })
2510
+ children && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_core36.Box, { children }),
2511
+ (primaryAction || secondaryAction) && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_core36.Group, { gap: "sm", justify: "center", children: [
2512
+ primaryAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
2513
+ secondaryAction && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
2493
2514
  ] })
2494
2515
  ] }) }) });
2495
2516
  };
@@ -2513,7 +2534,7 @@ var SdResultError = SdResult.Error;
2513
2534
 
2514
2535
  // ui/template/MainLayout.tsx
2515
2536
  var import_core37 = require("@mantine/core");
2516
- var import_jsx_runtime39 = require("react/jsx-runtime");
2537
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2517
2538
  var headers = {
2518
2539
  mega: SdHeader.Mega,
2519
2540
  simple: SdHeader.Simple,
@@ -2527,16 +2548,16 @@ function MainLayout({
2527
2548
  headerVariant = "mega"
2528
2549
  }) {
2529
2550
  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 })
2551
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_core37.AppShell, { header: { height: 60 }, children: [
2552
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.AppShell.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Header, { navItems, loginFlag }) }),
2553
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_core37.AppShell.Main, { children }),
2554
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SdFooter, { company: companyInfo, navItems })
2534
2555
  ] });
2535
2556
  }
2536
2557
 
2537
2558
  // ui/template/PageLayout.tsx
2538
2559
  var import_core38 = require("@mantine/core");
2539
- var import_jsx_runtime40 = require("react/jsx-runtime");
2560
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2540
2561
  var HERO_MIN_H = "38svh";
2541
2562
  var HERO_PY = { base: 56, sm: 88 };
2542
2563
  var HERO_MAW = 680;
@@ -2547,13 +2568,13 @@ function Content({
2547
2568
  currentHref
2548
2569
  }) {
2549
2570
  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
+ showBreadcrumb && /* @__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
  });