@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/README.md +48 -13
- package/dist/store/index.cjs +11 -2
- package/dist/store/index.d.mts +31 -1
- package/dist/store/index.d.ts +31 -1
- package/dist/store/index.mjs +10 -2
- package/dist/ui/index.cjs +249 -208
- package/dist/ui/index.d.mts +44 -4
- package/dist/ui/index.d.ts +44 -4
- package/dist/ui/index.mjs +206 -168
- package/package.json +1 -1
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1767
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1833
|
-
topItems.map((item) => /* @__PURE__ */ (0,
|
|
1834
|
-
loginFlag && /* @__PURE__ */ (0,
|
|
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,
|
|
1845
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1857
|
-
/* @__PURE__ */ (0,
|
|
1858
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1861
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
1905
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
|
|
1884
1906
|
}
|
|
1885
|
-
return /* @__PURE__ */ (0,
|
|
1886
|
-
/* @__PURE__ */ (0,
|
|
1887
|
-
grandkids.map((gk) => /* @__PURE__ */ (0,
|
|
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,
|
|
1895
|
-
/* @__PURE__ */ (0,
|
|
1896
|
-
loginFlag && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
1920
|
-
/* @__PURE__ */ (0,
|
|
1921
|
-
/* @__PURE__ */ (0,
|
|
1922
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
1946
|
-
/* @__PURE__ */ (0,
|
|
1947
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
1953
|
-
/* @__PURE__ */ (0,
|
|
1954
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1966
|
-
/* @__PURE__ */ (0,
|
|
1967
|
-
loginFlag && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
1986
|
-
/* @__PURE__ */ (0,
|
|
1987
|
-
/* @__PURE__ */ (0,
|
|
1988
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2013
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: item.href, children: item.label }, item.id);
|
|
1992
2014
|
}
|
|
1993
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
2006
|
-
/* @__PURE__ */ (0,
|
|
2007
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
|
|
2013
2035
|
}
|
|
2014
|
-
return /* @__PURE__ */ (0,
|
|
2015
|
-
/* @__PURE__ */ (0,
|
|
2016
|
-
grandkids.map((gk) => /* @__PURE__ */ (0,
|
|
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,
|
|
2025
|
-
/* @__PURE__ */ (0,
|
|
2026
|
-
loginFlag && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
2059
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2098
|
-
/* @__PURE__ */ (0,
|
|
2099
|
-
typeof children === "string" ? /* @__PURE__ */ (0,
|
|
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,
|
|
2105
|
-
/* @__PURE__ */ (0,
|
|
2106
|
-
/* @__PURE__ */ (0,
|
|
2107
|
-
sortedAddresses.map((addr) => /* @__PURE__ */ (0,
|
|
2108
|
-
/* @__PURE__ */ (0,
|
|
2109
|
-
company.fax && /* @__PURE__ */ (0,
|
|
2110
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2117
|
-
/* @__PURE__ */ (0,
|
|
2118
|
-
description && /* @__PURE__ */ (0,
|
|
2119
|
-
/* @__PURE__ */ (0,
|
|
2120
|
-
/* @__PURE__ */ (0,
|
|
2121
|
-
visibleNav.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
2124
|
-
/* @__PURE__ */ (0,
|
|
2125
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2133
|
-
visiblePolicy.length > 0 && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
2163
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
2196
|
-
/* @__PURE__ */ (0,
|
|
2197
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
2219
|
-
(label || title || description) && /* @__PURE__ */ (0,
|
|
2220
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
2248
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2227
2249
|
function StatusCode({ code }) {
|
|
2228
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
2243
|
-
/* @__PURE__ */ (0,
|
|
2244
|
-
/* @__PURE__ */ (0,
|
|
2245
|
-
/* @__PURE__ */ (0,
|
|
2246
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2249
|
-
/* @__PURE__ */ (0,
|
|
2250
|
-
onHome && /* @__PURE__ */ (0,
|
|
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,
|
|
2263
|
-
/* @__PURE__ */ (0,
|
|
2264
|
-
/* @__PURE__ */ (0,
|
|
2265
|
-
/* @__PURE__ */ (0,
|
|
2266
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2269
|
-
onHome && /* @__PURE__ */ (0,
|
|
2270
|
-
onBack && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
2333
|
-
error && /* @__PURE__ */ (0,
|
|
2334
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2355
|
-
withRemember ? /* @__PURE__ */ (0,
|
|
2356
|
-
findPasswordHref && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
2369
|
-
/* @__PURE__ */ (0,
|
|
2370
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
2388
|
-
/* @__PURE__ */ (0,
|
|
2389
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2396
|
-
/* @__PURE__ */ (0,
|
|
2397
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2411
|
-
/* @__PURE__ */ (0,
|
|
2412
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2430
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2438
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2453
|
-
/* @__PURE__ */ (0,
|
|
2454
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
2492
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2471
2493
|
function ResultIcon({ color, Icon }) {
|
|
2472
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
2484
|
-
/* @__PURE__ */ (0,
|
|
2485
|
-
/* @__PURE__ */ (0,
|
|
2486
|
-
/* @__PURE__ */ (0,
|
|
2487
|
-
description && /* @__PURE__ */ (0,
|
|
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,
|
|
2490
|
-
(primaryAction || secondaryAction) && /* @__PURE__ */ (0,
|
|
2491
|
-
primaryAction && /* @__PURE__ */ (0,
|
|
2492
|
-
secondaryAction && /* @__PURE__ */ (0,
|
|
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
|
|
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,
|
|
2531
|
-
/* @__PURE__ */ (0,
|
|
2532
|
-
/* @__PURE__ */ (0,
|
|
2533
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
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
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
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,
|
|
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,
|
|
2568
|
-
/* @__PURE__ */ (0,
|
|
2569
|
-
/* @__PURE__ */ (0,
|
|
2570
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2584
|
-
label && /* @__PURE__ */ (0,
|
|
2585
|
-
/* @__PURE__ */ (0,
|
|
2586
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
2612
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
2654
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
2667
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
});
|