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