@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.mjs
CHANGED
|
@@ -1527,7 +1527,23 @@ var SdMapTabs = Tabs2;
|
|
|
1527
1527
|
import { Box as Box11, Breadcrumbs } from "@mantine/core";
|
|
1528
1528
|
import { usePathname } from "next/navigation";
|
|
1529
1529
|
import { IconChevronRight, IconHome } from "@tabler/icons-react";
|
|
1530
|
-
|
|
1530
|
+
|
|
1531
|
+
// ui/template/NavProvider.tsx
|
|
1532
|
+
import { createContext, useContext } from "react";
|
|
1533
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1534
|
+
var NavContext = createContext([]);
|
|
1535
|
+
function NavProvider({
|
|
1536
|
+
children,
|
|
1537
|
+
navItems
|
|
1538
|
+
}) {
|
|
1539
|
+
return /* @__PURE__ */ jsx28(NavContext.Provider, { value: navItems, children });
|
|
1540
|
+
}
|
|
1541
|
+
function useNav() {
|
|
1542
|
+
return useContext(NavContext);
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
// ui/molecule/Breadcrumb.tsx
|
|
1546
|
+
import { jsx as jsx29, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1531
1547
|
function normalizePath(href) {
|
|
1532
1548
|
if (!href) return "";
|
|
1533
1549
|
const trimmed = href.replace(/\/+$/, "");
|
|
@@ -1553,7 +1569,7 @@ function buildTrail(navItems, currentHref) {
|
|
|
1553
1569
|
}
|
|
1554
1570
|
function SdBreadcrumb(_a4) {
|
|
1555
1571
|
var _b = _a4, {
|
|
1556
|
-
navItems,
|
|
1572
|
+
navItems: navItemsProp,
|
|
1557
1573
|
currentHref,
|
|
1558
1574
|
homeHref = "/",
|
|
1559
1575
|
homeLabel = "\uD648"
|
|
@@ -1564,26 +1580,28 @@ function SdBreadcrumb(_a4) {
|
|
|
1564
1580
|
"homeLabel"
|
|
1565
1581
|
]);
|
|
1566
1582
|
var _a5;
|
|
1583
|
+
const navFromContext = useNav();
|
|
1584
|
+
const navItems = navItemsProp != null ? navItemsProp : navFromContext;
|
|
1567
1585
|
const pathname = usePathname();
|
|
1568
1586
|
const trail = buildTrail(navItems, (_a5 = currentHref != null ? currentHref : pathname) != null ? _a5 : "");
|
|
1569
|
-
return /* @__PURE__ */
|
|
1587
|
+
return /* @__PURE__ */ jsx29(Box11, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs15(
|
|
1570
1588
|
Breadcrumbs,
|
|
1571
1589
|
{
|
|
1572
|
-
separator: /* @__PURE__ */
|
|
1590
|
+
separator: /* @__PURE__ */ jsx29(IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
|
|
1573
1591
|
separatorMargin: "xs",
|
|
1574
1592
|
children: [
|
|
1575
|
-
/* @__PURE__ */
|
|
1593
|
+
/* @__PURE__ */ jsx29(
|
|
1576
1594
|
SdLink.Sub,
|
|
1577
1595
|
{
|
|
1578
1596
|
href: homeHref,
|
|
1579
1597
|
"aria-label": homeLabel,
|
|
1580
1598
|
style: { display: "inline-flex", alignItems: "center" },
|
|
1581
|
-
children: /* @__PURE__ */
|
|
1599
|
+
children: /* @__PURE__ */ jsx29(IconHome, { size: 16, stroke: 2 })
|
|
1582
1600
|
}
|
|
1583
1601
|
),
|
|
1584
1602
|
trail.map((item, i) => {
|
|
1585
1603
|
const isLast = i === trail.length - 1;
|
|
1586
|
-
return isLast ? /* @__PURE__ */
|
|
1604
|
+
return isLast ? /* @__PURE__ */ jsx29(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ jsx29(SdLink.Sub, { href: item.href, children: item.label }, item.id);
|
|
1587
1605
|
})
|
|
1588
1606
|
]
|
|
1589
1607
|
}
|
|
@@ -1594,7 +1612,7 @@ function SdBreadcrumb(_a4) {
|
|
|
1594
1612
|
import { Carousel } from "@mantine/carousel";
|
|
1595
1613
|
import { Anchor as Anchor2, Box as Box12, Group as Group9, Stack as Stack15 } from "@mantine/core";
|
|
1596
1614
|
import { IconArrowNarrowRight } from "@tabler/icons-react";
|
|
1597
|
-
import { Fragment as Fragment3, jsx as
|
|
1615
|
+
import { Fragment as Fragment3, jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1598
1616
|
var variantMap = {
|
|
1599
1617
|
primary: SdButton.Primary,
|
|
1600
1618
|
secondary: SdButton.Secondary,
|
|
@@ -1604,12 +1622,12 @@ var variantMap = {
|
|
|
1604
1622
|
function CtaButton({ cta }) {
|
|
1605
1623
|
var _a4;
|
|
1606
1624
|
const Button3 = variantMap[(_a4 = cta.variant) != null ? _a4 : "primary"];
|
|
1607
|
-
return /* @__PURE__ */
|
|
1625
|
+
return /* @__PURE__ */ jsx30(Anchor2, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ jsx30(Button3, { size: "md", rightSection: /* @__PURE__ */ jsx30(IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ jsx30(Button3, { size: "md", children: cta.label }) });
|
|
1608
1626
|
}
|
|
1609
1627
|
function HeroCarousel({ slides, children }) {
|
|
1610
|
-
if (children) return /* @__PURE__ */
|
|
1628
|
+
if (children) return /* @__PURE__ */ jsx30(Fragment3, { children });
|
|
1611
1629
|
const filterdSlides = filterAndSort(slides);
|
|
1612
|
-
return /* @__PURE__ */
|
|
1630
|
+
return /* @__PURE__ */ jsx30(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx30(Carousel.Slide, { children: /* @__PURE__ */ jsx30(
|
|
1613
1631
|
Box12,
|
|
1614
1632
|
{
|
|
1615
1633
|
style: {
|
|
@@ -1622,7 +1640,7 @@ function HeroCarousel({ slides, children }) {
|
|
|
1622
1640
|
justifyContent: "center"
|
|
1623
1641
|
},
|
|
1624
1642
|
children: /* @__PURE__ */ jsxs16(Stack15, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
|
|
1625
|
-
/* @__PURE__ */
|
|
1643
|
+
/* @__PURE__ */ jsx30(
|
|
1626
1644
|
SdTextBox.Hero,
|
|
1627
1645
|
{
|
|
1628
1646
|
title: slide.title,
|
|
@@ -1631,7 +1649,7 @@ function HeroCarousel({ slides, children }) {
|
|
|
1631
1649
|
align: "center"
|
|
1632
1650
|
}
|
|
1633
1651
|
),
|
|
1634
|
-
slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */
|
|
1652
|
+
slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ jsx30(Group9, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ jsx30(CtaButton, { cta }, cta.href)) })
|
|
1635
1653
|
] })
|
|
1636
1654
|
}
|
|
1637
1655
|
) }, i)) });
|
|
@@ -1641,7 +1659,7 @@ function HeroCarousel({ slides, children }) {
|
|
|
1641
1659
|
import { Box as Box13, Burger, Drawer, Group as Group10, Menu, NavLink, Stack as Stack16 } from "@mantine/core";
|
|
1642
1660
|
import { IconChevronDown } from "@tabler/icons-react";
|
|
1643
1661
|
import { useDisclosure, useFocusWithin, useHover, useMergedRef } from "@mantine/hooks";
|
|
1644
|
-
import { Fragment as Fragment4, jsx as
|
|
1662
|
+
import { Fragment as Fragment4, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1645
1663
|
var BAR_HEIGHT = 60;
|
|
1646
1664
|
var MAX_DEPTH = 3;
|
|
1647
1665
|
var NAV_LINK_STYLES = {
|
|
@@ -1663,9 +1681,9 @@ function useNavTree(navItems) {
|
|
|
1663
1681
|
function MobileNavNode({ item, depth, childrenOf, close }) {
|
|
1664
1682
|
const kids = depth < MAX_DEPTH ? childrenOf(item.id) : [];
|
|
1665
1683
|
if (kids.length === 0) {
|
|
1666
|
-
return /* @__PURE__ */
|
|
1684
|
+
return /* @__PURE__ */ jsx31(Box13, { px: "sm", py: 8, children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
|
|
1667
1685
|
}
|
|
1668
|
-
return /* @__PURE__ */
|
|
1686
|
+
return /* @__PURE__ */ jsx31(
|
|
1669
1687
|
NavLink,
|
|
1670
1688
|
{
|
|
1671
1689
|
label: item.label,
|
|
@@ -1673,7 +1691,7 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
|
|
|
1673
1691
|
component: item.href ? "a" : "button",
|
|
1674
1692
|
href: item.href,
|
|
1675
1693
|
childrenOffset: 28,
|
|
1676
|
-
children: kids.map((kid) => /* @__PURE__ */
|
|
1694
|
+
children: kids.map((kid) => /* @__PURE__ */ jsx31(
|
|
1677
1695
|
MobileNavNode,
|
|
1678
1696
|
{
|
|
1679
1697
|
item: kid,
|
|
@@ -1687,9 +1705,9 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
|
|
|
1687
1705
|
);
|
|
1688
1706
|
}
|
|
1689
1707
|
function MobileNav({ opened, close, topItems, childrenOf, loginFlag }) {
|
|
1690
|
-
return /* @__PURE__ */
|
|
1691
|
-
topItems.map((item) => /* @__PURE__ */
|
|
1692
|
-
loginFlag && /* @__PURE__ */
|
|
1708
|
+
return /* @__PURE__ */ jsx31(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs17(Stack16, { gap: 0, children: [
|
|
1709
|
+
topItems.map((item) => /* @__PURE__ */ jsx31(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
|
|
1710
|
+
loginFlag && /* @__PURE__ */ jsx31(Stack16, { gap: "xs", mt: "md", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1693
1711
|
] }) });
|
|
1694
1712
|
}
|
|
1695
1713
|
function MegaHeader({ navItems, loginFlag }) {
|
|
@@ -1700,7 +1718,7 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1700
1718
|
const rootRef = useMergedRef(hoverRef, focusRef);
|
|
1701
1719
|
const expanded = hasAnyChildren && (hovered || focused);
|
|
1702
1720
|
return /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
1703
|
-
/* @__PURE__ */
|
|
1721
|
+
/* @__PURE__ */ jsx31(
|
|
1704
1722
|
Box13,
|
|
1705
1723
|
{
|
|
1706
1724
|
ref: rootRef,
|
|
@@ -1711,12 +1729,12 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1711
1729
|
borderBottom: expanded ? "1px solid var(--mantine-color-slate-2)" : void 0,
|
|
1712
1730
|
transition: "box-shadow 0.15s"
|
|
1713
1731
|
},
|
|
1714
|
-
children: /* @__PURE__ */
|
|
1715
|
-
/* @__PURE__ */
|
|
1716
|
-
/* @__PURE__ */
|
|
1732
|
+
children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
|
|
1733
|
+
/* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(Logo, {}) }),
|
|
1734
|
+
/* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
|
|
1717
1735
|
const kids = childrenOf(item.id);
|
|
1718
1736
|
return /* @__PURE__ */ jsxs17(Stack16, { gap: 0, align: "center", children: [
|
|
1719
|
-
/* @__PURE__ */
|
|
1737
|
+
/* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }) }),
|
|
1720
1738
|
kids.length > 0 && /*
|
|
1721
1739
|
Mantine Collapse를 쓰지 않는다 — 접힐 때 display:none이 되어
|
|
1722
1740
|
하위 링크가 폭 계산에서 빠졌다가 펼칠 때 다시 들어오면서
|
|
@@ -1724,7 +1742,7 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1724
1742
|
height 0 + overflow hidden은 폭 기여를 유지하므로 간격이 고정된다.
|
|
1725
1743
|
visibility:hidden이 접힌 상태의 링크를 탭 순서에서도 빼준다.
|
|
1726
1744
|
*/
|
|
1727
|
-
/* @__PURE__ */
|
|
1745
|
+
/* @__PURE__ */ jsx31(
|
|
1728
1746
|
Box13,
|
|
1729
1747
|
{
|
|
1730
1748
|
"aria-hidden": !expanded,
|
|
@@ -1735,14 +1753,14 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1735
1753
|
visibility: expanded ? "visible" : "hidden",
|
|
1736
1754
|
transition: "opacity 0.15s ease"
|
|
1737
1755
|
},
|
|
1738
|
-
children: /* @__PURE__ */
|
|
1756
|
+
children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
|
|
1739
1757
|
const grandkids = childrenOf(kid.id);
|
|
1740
1758
|
if (grandkids.length === 0) {
|
|
1741
|
-
return /* @__PURE__ */
|
|
1759
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
|
|
1742
1760
|
}
|
|
1743
1761
|
return /* @__PURE__ */ jsxs17(Stack16, { gap: 2, align: "center", children: [
|
|
1744
|
-
/* @__PURE__ */
|
|
1745
|
-
grandkids.map((gk) => /* @__PURE__ */
|
|
1762
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
|
|
1763
|
+
grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
|
|
1746
1764
|
] }, kid.id);
|
|
1747
1765
|
}) })
|
|
1748
1766
|
}
|
|
@@ -1750,13 +1768,13 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1750
1768
|
] }, item.id);
|
|
1751
1769
|
}) }),
|
|
1752
1770
|
/* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, align: "center", gap: "sm", wrap: "nowrap", children: [
|
|
1753
|
-
/* @__PURE__ */
|
|
1754
|
-
loginFlag && /* @__PURE__ */
|
|
1771
|
+
/* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1772
|
+
loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1755
1773
|
] })
|
|
1756
1774
|
] }) })
|
|
1757
1775
|
}
|
|
1758
1776
|
),
|
|
1759
|
-
/* @__PURE__ */
|
|
1777
|
+
/* @__PURE__ */ jsx31(
|
|
1760
1778
|
MobileNav,
|
|
1761
1779
|
{
|
|
1762
1780
|
opened,
|
|
@@ -1769,18 +1787,18 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1769
1787
|
] });
|
|
1770
1788
|
}
|
|
1771
1789
|
function renderMenuLeaf(item) {
|
|
1772
|
-
return item.href ? /* @__PURE__ */
|
|
1790
|
+
return item.href ? /* @__PURE__ */ jsx31(Menu.Item, { component: "a", href: item.href, children: item.label }, item.id) : /* @__PURE__ */ jsx31(Menu.Label, { children: item.label }, item.id);
|
|
1773
1791
|
}
|
|
1774
1792
|
function SimpleHeader({ navItems, loginFlag }) {
|
|
1775
1793
|
const [opened, { toggle, close }] = useDisclosure();
|
|
1776
1794
|
const { topItems, childrenOf } = useNavTree(navItems);
|
|
1777
1795
|
return /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
1778
|
-
/* @__PURE__ */
|
|
1779
|
-
/* @__PURE__ */
|
|
1780
|
-
/* @__PURE__ */
|
|
1796
|
+
/* @__PURE__ */ jsx31(Box13, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
|
|
1797
|
+
/* @__PURE__ */ jsx31(Logo, {}),
|
|
1798
|
+
/* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
|
|
1781
1799
|
const kids = childrenOf(item.id);
|
|
1782
1800
|
if (kids.length === 0) {
|
|
1783
|
-
return /* @__PURE__ */
|
|
1801
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
|
|
1784
1802
|
}
|
|
1785
1803
|
return (
|
|
1786
1804
|
/*
|
|
@@ -1800,16 +1818,16 @@ function SimpleHeader({ navItems, loginFlag }) {
|
|
|
1800
1818
|
radius: "md",
|
|
1801
1819
|
withinPortal: true,
|
|
1802
1820
|
children: [
|
|
1803
|
-
/* @__PURE__ */
|
|
1804
|
-
/* @__PURE__ */
|
|
1805
|
-
/* @__PURE__ */
|
|
1821
|
+
/* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
|
|
1822
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
|
|
1823
|
+
/* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
|
|
1806
1824
|
] }) }) }),
|
|
1807
|
-
/* @__PURE__ */
|
|
1825
|
+
/* @__PURE__ */ jsx31(Menu.Dropdown, { children: kids.map((kid) => {
|
|
1808
1826
|
const grandkids = childrenOf(kid.id);
|
|
1809
1827
|
if (grandkids.length > 0) {
|
|
1810
1828
|
return /* @__PURE__ */ jsxs17(Menu.Sub, { children: [
|
|
1811
|
-
/* @__PURE__ */
|
|
1812
|
-
/* @__PURE__ */
|
|
1829
|
+
/* @__PURE__ */ jsx31(Menu.Sub.Target, { children: /* @__PURE__ */ jsx31(Menu.Sub.Item, { children: kid.label }) }),
|
|
1830
|
+
/* @__PURE__ */ jsx31(Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
|
|
1813
1831
|
] }, kid.id);
|
|
1814
1832
|
}
|
|
1815
1833
|
return renderMenuLeaf(kid);
|
|
@@ -1821,11 +1839,11 @@ function SimpleHeader({ navItems, loginFlag }) {
|
|
|
1821
1839
|
);
|
|
1822
1840
|
}) }),
|
|
1823
1841
|
/* @__PURE__ */ jsxs17(Group10, { align: "center", gap: "sm", wrap: "nowrap", children: [
|
|
1824
|
-
/* @__PURE__ */
|
|
1825
|
-
loginFlag && /* @__PURE__ */
|
|
1842
|
+
/* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1843
|
+
loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1826
1844
|
] })
|
|
1827
1845
|
] }) }) }),
|
|
1828
|
-
/* @__PURE__ */
|
|
1846
|
+
/* @__PURE__ */ jsx31(
|
|
1829
1847
|
MobileNav,
|
|
1830
1848
|
{
|
|
1831
1849
|
opened,
|
|
@@ -1841,12 +1859,12 @@ function PanelHeader({ navItems, loginFlag }) {
|
|
|
1841
1859
|
const [opened, { toggle, close }] = useDisclosure();
|
|
1842
1860
|
const { topItems, childrenOf } = useNavTree(navItems);
|
|
1843
1861
|
return /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
1844
|
-
/* @__PURE__ */
|
|
1845
|
-
/* @__PURE__ */
|
|
1846
|
-
/* @__PURE__ */
|
|
1862
|
+
/* @__PURE__ */ jsx31(Box13, { bg: "var(--mantine-color-body)", children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, justify: "space-between", align: "center", wrap: "nowrap", children: [
|
|
1863
|
+
/* @__PURE__ */ jsx31(Logo, {}),
|
|
1864
|
+
/* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
|
|
1847
1865
|
const kids = childrenOf(item.id);
|
|
1848
1866
|
if (kids.length === 0) {
|
|
1849
|
-
return /* @__PURE__ */
|
|
1867
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
|
|
1850
1868
|
}
|
|
1851
1869
|
return /* @__PURE__ */ jsxs17(
|
|
1852
1870
|
Menu,
|
|
@@ -1860,18 +1878,18 @@ function PanelHeader({ navItems, loginFlag }) {
|
|
|
1860
1878
|
radius: "md",
|
|
1861
1879
|
withinPortal: true,
|
|
1862
1880
|
children: [
|
|
1863
|
-
/* @__PURE__ */
|
|
1864
|
-
/* @__PURE__ */
|
|
1865
|
-
/* @__PURE__ */
|
|
1881
|
+
/* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
|
|
1882
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
|
|
1883
|
+
/* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
|
|
1866
1884
|
] }) }) }),
|
|
1867
|
-
/* @__PURE__ */
|
|
1885
|
+
/* @__PURE__ */ jsx31(Menu.Dropdown, { children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", p: "xs", children: kids.map((kid) => {
|
|
1868
1886
|
const grandkids = childrenOf(kid.id);
|
|
1869
1887
|
if (grandkids.length === 0) {
|
|
1870
|
-
return /* @__PURE__ */
|
|
1888
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
|
|
1871
1889
|
}
|
|
1872
1890
|
return /* @__PURE__ */ jsxs17(Stack16, { gap: 2, children: [
|
|
1873
|
-
/* @__PURE__ */
|
|
1874
|
-
grandkids.map((gk) => /* @__PURE__ */
|
|
1891
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
|
|
1892
|
+
grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
|
|
1875
1893
|
] }, kid.id);
|
|
1876
1894
|
}) }) })
|
|
1877
1895
|
]
|
|
@@ -1880,11 +1898,11 @@ function PanelHeader({ navItems, loginFlag }) {
|
|
|
1880
1898
|
);
|
|
1881
1899
|
}) }),
|
|
1882
1900
|
/* @__PURE__ */ jsxs17(Group10, { align: "center", gap: "sm", wrap: "nowrap", children: [
|
|
1883
|
-
/* @__PURE__ */
|
|
1884
|
-
loginFlag && /* @__PURE__ */
|
|
1901
|
+
/* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1902
|
+
loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1885
1903
|
] })
|
|
1886
1904
|
] }) }) }),
|
|
1887
|
-
/* @__PURE__ */
|
|
1905
|
+
/* @__PURE__ */ jsx31(
|
|
1888
1906
|
MobileNav,
|
|
1889
1907
|
{
|
|
1890
1908
|
opened,
|
|
@@ -1916,16 +1934,16 @@ import {
|
|
|
1916
1934
|
IconBrandYoutube,
|
|
1917
1935
|
IconWorld
|
|
1918
1936
|
} from "@tabler/icons-react";
|
|
1919
|
-
import { Fragment as Fragment5, jsx as
|
|
1937
|
+
import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1920
1938
|
function FooterNavColumns({ items }) {
|
|
1921
1939
|
const topLevel = items.filter((item) => !item.parentId);
|
|
1922
1940
|
const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
|
|
1923
1941
|
const CHILD_THRESH = 4;
|
|
1924
|
-
return /* @__PURE__ */
|
|
1925
|
-
/* @__PURE__ */
|
|
1942
|
+
return /* @__PURE__ */ jsx32(Fragment5, { children: topLevel.map((group) => /* @__PURE__ */ jsx32(Grid5.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ jsxs18(Stack17, { gap: "xs", children: [
|
|
1943
|
+
/* @__PURE__ */ jsx32(SdLink.Sub, { href: group.href, children: group.label }, group.id),
|
|
1926
1944
|
getChildren(group.id).map((link, id) => {
|
|
1927
1945
|
if (id >= CHILD_THRESH) return;
|
|
1928
|
-
return /* @__PURE__ */
|
|
1946
|
+
return /* @__PURE__ */ jsx32(SdLink.Hint, { href: link.href, children: link.label }, link.id);
|
|
1929
1947
|
})
|
|
1930
1948
|
] }) }, group.id)) });
|
|
1931
1949
|
}
|
|
@@ -1939,10 +1957,10 @@ var SOCIAL_ICONS = {
|
|
|
1939
1957
|
blog: IconWorld
|
|
1940
1958
|
};
|
|
1941
1959
|
function FooterSocials({ items }) {
|
|
1942
|
-
return /* @__PURE__ */
|
|
1960
|
+
return /* @__PURE__ */ jsx32(Group11, { gap: 0, wrap: "nowrap", children: items.map((item) => {
|
|
1943
1961
|
var _a4, _b;
|
|
1944
1962
|
const Icon = (_a4 = SOCIAL_ICONS[item.platform]) != null ? _a4 : IconWorld;
|
|
1945
|
-
return /* @__PURE__ */
|
|
1963
|
+
return /* @__PURE__ */ jsx32(
|
|
1946
1964
|
ActionIcon,
|
|
1947
1965
|
{
|
|
1948
1966
|
component: "a",
|
|
@@ -1953,7 +1971,7 @@ function FooterSocials({ items }) {
|
|
|
1953
1971
|
color: "gray",
|
|
1954
1972
|
variant: "subtle",
|
|
1955
1973
|
"aria-label": (_b = item.label) != null ? _b : item.platform,
|
|
1956
|
-
children: /* @__PURE__ */
|
|
1974
|
+
children: /* @__PURE__ */ jsx32(Icon, { size: 18, stroke: 1.5 })
|
|
1957
1975
|
},
|
|
1958
1976
|
item.url
|
|
1959
1977
|
);
|
|
@@ -1961,32 +1979,32 @@ function FooterSocials({ items }) {
|
|
|
1961
1979
|
}
|
|
1962
1980
|
function InfoCell({ label, children }) {
|
|
1963
1981
|
return /* @__PURE__ */ jsxs18(Group11, { gap: 6, wrap: "nowrap", align: "baseline", children: [
|
|
1964
|
-
/* @__PURE__ */
|
|
1965
|
-
typeof children === "string" ? /* @__PURE__ */
|
|
1982
|
+
/* @__PURE__ */ jsx32(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
|
|
1983
|
+
typeof children === "string" ? /* @__PURE__ */ jsx32(SdText.Sub, { children }) : children
|
|
1966
1984
|
] });
|
|
1967
1985
|
}
|
|
1968
1986
|
function FooterCompanyInfo({ company }) {
|
|
1969
1987
|
const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
|
|
1970
1988
|
return /* @__PURE__ */ jsxs18(SimpleGrid6, { cols: { base: 2, sm: 2, md: 1 }, spacing: "md", verticalSpacing: 0, children: [
|
|
1971
|
-
/* @__PURE__ */
|
|
1972
|
-
/* @__PURE__ */
|
|
1973
|
-
sortedAddresses.map((addr) => /* @__PURE__ */
|
|
1974
|
-
/* @__PURE__ */
|
|
1975
|
-
company.fax && /* @__PURE__ */
|
|
1976
|
-
/* @__PURE__ */
|
|
1989
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
|
|
1990
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
|
|
1991
|
+
sortedAddresses.map((addr) => /* @__PURE__ */ jsx32(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
|
|
1992
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "Tel", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
|
|
1993
|
+
company.fax && /* @__PURE__ */ jsx32(InfoCell, { label: "Fax", children: company.fax }),
|
|
1994
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "Email", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
|
|
1977
1995
|
] });
|
|
1978
1996
|
}
|
|
1979
1997
|
function SdFooter({ company, navItems, policyLinks, description }) {
|
|
1980
1998
|
const visibleNav = filterAndSort(navItems);
|
|
1981
1999
|
const visiblePolicy = filterAndSort(policyLinks);
|
|
1982
|
-
return /* @__PURE__ */
|
|
1983
|
-
/* @__PURE__ */
|
|
1984
|
-
description && /* @__PURE__ */
|
|
2000
|
+
return /* @__PURE__ */ jsx32(Box14, { component: "footer", children: /* @__PURE__ */ jsx32(SdContainer, { py: "lg", children: /* @__PURE__ */ jsxs18(Stack17, { children: [
|
|
2001
|
+
/* @__PURE__ */ jsx32(Logo, { size: "sm" }),
|
|
2002
|
+
description && /* @__PURE__ */ jsx32(SdText.Sub, { children: description }),
|
|
1985
2003
|
/* @__PURE__ */ jsxs18(Flex, { direction: { base: "column", md: "row" }, gap: 48, align: "flex-start", children: [
|
|
1986
|
-
/* @__PURE__ */
|
|
1987
|
-
visibleNav.length > 0 && /* @__PURE__ */
|
|
2004
|
+
/* @__PURE__ */ jsx32(Box14, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx32(FooterCompanyInfo, { company }) }),
|
|
2005
|
+
visibleNav.length > 0 && /* @__PURE__ */ jsx32(Box14, { flex: { base: "0 0 auto", md: "2 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx32(Grid5, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ jsx32(FooterNavColumns, { items: visibleNav }) }) })
|
|
1988
2006
|
] }),
|
|
1989
|
-
/* @__PURE__ */
|
|
2007
|
+
/* @__PURE__ */ jsx32(Divider3, {}),
|
|
1990
2008
|
/* @__PURE__ */ jsxs18(Group11, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
|
|
1991
2009
|
/* @__PURE__ */ jsxs18(SdText.Sub, { children: [
|
|
1992
2010
|
"\xA9 ",
|
|
@@ -1996,11 +2014,11 @@ function SdFooter({ company, navItems, policyLinks, description }) {
|
|
|
1996
2014
|
". All rights reserved."
|
|
1997
2015
|
] }),
|
|
1998
2016
|
/* @__PURE__ */ jsxs18(Group11, { gap: "lg", wrap: "wrap", children: [
|
|
1999
|
-
visiblePolicy.length > 0 && /* @__PURE__ */
|
|
2017
|
+
visiblePolicy.length > 0 && /* @__PURE__ */ jsx32(Group11, { gap: "lg", children: visiblePolicy.map((item) => {
|
|
2000
2018
|
const Link4 = item.highlight ? SdLink.Body : SdLink.Sub;
|
|
2001
|
-
return /* @__PURE__ */
|
|
2019
|
+
return /* @__PURE__ */ jsx32(Link4, { href: item.href, children: item.label }, item.id);
|
|
2002
2020
|
}) }),
|
|
2003
|
-
company.socials && company.socials.length > 0 && /* @__PURE__ */
|
|
2021
|
+
company.socials && company.socials.length > 0 && /* @__PURE__ */ jsx32(FooterSocials, { items: company.socials })
|
|
2004
2022
|
] })
|
|
2005
2023
|
] })
|
|
2006
2024
|
] }) }) });
|
|
@@ -2008,7 +2026,7 @@ function SdFooter({ company, navItems, policyLinks, description }) {
|
|
|
2008
2026
|
|
|
2009
2027
|
// ui/organism/FeatureSection.tsx
|
|
2010
2028
|
import { Stack as Stack18 } from "@mantine/core";
|
|
2011
|
-
import { jsx as
|
|
2029
|
+
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2012
2030
|
function SdFeatureSection(_a4) {
|
|
2013
2031
|
var _b = _a4, {
|
|
2014
2032
|
label,
|
|
@@ -2025,8 +2043,8 @@ function SdFeatureSection(_a4) {
|
|
|
2025
2043
|
"cols",
|
|
2026
2044
|
"py"
|
|
2027
2045
|
]);
|
|
2028
|
-
return /* @__PURE__ */
|
|
2029
|
-
/* @__PURE__ */
|
|
2046
|
+
return /* @__PURE__ */ jsx33(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs19(Stack18, { gap: "xl", children: [
|
|
2047
|
+
/* @__PURE__ */ jsx33(
|
|
2030
2048
|
SdTextBox.Section,
|
|
2031
2049
|
{
|
|
2032
2050
|
label,
|
|
@@ -2037,13 +2055,13 @@ function SdFeatureSection(_a4) {
|
|
|
2037
2055
|
align: "center"
|
|
2038
2056
|
}
|
|
2039
2057
|
),
|
|
2040
|
-
/* @__PURE__ */
|
|
2058
|
+
/* @__PURE__ */ jsx33(SdFeatures, { items, cols })
|
|
2041
2059
|
] }) }));
|
|
2042
2060
|
}
|
|
2043
2061
|
|
|
2044
2062
|
// ui/organism/TimelineSection.tsx
|
|
2045
2063
|
import { Center as Center3, Stack as Stack19 } from "@mantine/core";
|
|
2046
|
-
import { jsx as
|
|
2064
|
+
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2047
2065
|
function SdTimelineSection(_a4) {
|
|
2048
2066
|
var _b = _a4, {
|
|
2049
2067
|
label,
|
|
@@ -2058,15 +2076,15 @@ function SdTimelineSection(_a4) {
|
|
|
2058
2076
|
"items",
|
|
2059
2077
|
"py"
|
|
2060
2078
|
]);
|
|
2061
|
-
return /* @__PURE__ */
|
|
2062
|
-
/* @__PURE__ */
|
|
2063
|
-
/* @__PURE__ */
|
|
2079
|
+
return /* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsxs20(Stack19, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
|
|
2080
|
+
/* @__PURE__ */ jsx34(SdTextBox.Section, { label, title, description }),
|
|
2081
|
+
/* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsx34(SdTimeline, { items }) })
|
|
2064
2082
|
] })) });
|
|
2065
2083
|
}
|
|
2066
2084
|
|
|
2067
2085
|
// ui/organism/StepsSection.tsx
|
|
2068
2086
|
import { Stack as Stack20 } from "@mantine/core";
|
|
2069
|
-
import { jsx as
|
|
2087
|
+
import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2070
2088
|
function SdStepsSection(_a4) {
|
|
2071
2089
|
var _b = _a4, {
|
|
2072
2090
|
label,
|
|
@@ -2081,17 +2099,17 @@ function SdStepsSection(_a4) {
|
|
|
2081
2099
|
"items",
|
|
2082
2100
|
"py"
|
|
2083
2101
|
]);
|
|
2084
|
-
return /* @__PURE__ */
|
|
2085
|
-
(label || title || description) && /* @__PURE__ */
|
|
2086
|
-
/* @__PURE__ */
|
|
2102
|
+
return /* @__PURE__ */ jsx35(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs21(Stack20, { gap: "xl", children: [
|
|
2103
|
+
(label || title || description) && /* @__PURE__ */ jsx35(SdTextBox.Section, { label, title, description }),
|
|
2104
|
+
/* @__PURE__ */ jsx35(SdSteps.Bubble, { items })
|
|
2087
2105
|
] }) }));
|
|
2088
2106
|
}
|
|
2089
2107
|
|
|
2090
2108
|
// ui/organism/ErrorView.tsx
|
|
2091
2109
|
import { Center as Center4, Group as Group12, Stack as Stack21, Text as Text2 } from "@mantine/core";
|
|
2092
|
-
import { jsx as
|
|
2110
|
+
import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2093
2111
|
function StatusCode({ code }) {
|
|
2094
|
-
return /* @__PURE__ */
|
|
2112
|
+
return /* @__PURE__ */ jsx36(
|
|
2095
2113
|
Text2,
|
|
2096
2114
|
{
|
|
2097
2115
|
fz: 160,
|
|
@@ -2105,15 +2123,15 @@ function StatusCode({ code }) {
|
|
|
2105
2123
|
);
|
|
2106
2124
|
}
|
|
2107
2125
|
function Page({ error, onReset, onHome }) {
|
|
2108
|
-
return /* @__PURE__ */
|
|
2109
|
-
/* @__PURE__ */
|
|
2126
|
+
return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
|
|
2127
|
+
/* @__PURE__ */ jsx36(StatusCode, { code: "500" }),
|
|
2110
2128
|
/* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
|
|
2111
|
-
/* @__PURE__ */
|
|
2112
|
-
/* @__PURE__ */
|
|
2129
|
+
/* @__PURE__ */ jsx36(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
|
|
2130
|
+
/* @__PURE__ */ jsx36(SdText.Body, { maw: 480, children: "\uC608\uAE30\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694." })
|
|
2113
2131
|
] }),
|
|
2114
2132
|
/* @__PURE__ */ jsxs22(Group12, { gap: "sm", justify: "center", children: [
|
|
2115
|
-
/* @__PURE__ */
|
|
2116
|
-
onHome && /* @__PURE__ */
|
|
2133
|
+
/* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
|
|
2134
|
+
onHome && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
|
|
2117
2135
|
] })
|
|
2118
2136
|
] }) }) });
|
|
2119
2137
|
}
|
|
@@ -2125,15 +2143,15 @@ function NotFound({
|
|
|
2125
2143
|
},
|
|
2126
2144
|
onBack = () => window.history.back()
|
|
2127
2145
|
}) {
|
|
2128
|
-
return /* @__PURE__ */
|
|
2129
|
-
/* @__PURE__ */
|
|
2146
|
+
return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
|
|
2147
|
+
/* @__PURE__ */ jsx36(StatusCode, { code: "404" }),
|
|
2130
2148
|
/* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
|
|
2131
|
-
/* @__PURE__ */
|
|
2132
|
-
/* @__PURE__ */
|
|
2149
|
+
/* @__PURE__ */ jsx36(SdTitle.Section, { children: title }),
|
|
2150
|
+
/* @__PURE__ */ jsx36(SdText.Body, { maw: 480, children: description })
|
|
2133
2151
|
] }),
|
|
2134
2152
|
/* @__PURE__ */ jsxs22(Group12, { gap: "sm", justify: "center", children: [
|
|
2135
|
-
onHome && /* @__PURE__ */
|
|
2136
|
-
onBack && /* @__PURE__ */
|
|
2153
|
+
onHome && /* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
|
|
2154
|
+
onBack && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
|
|
2137
2155
|
] })
|
|
2138
2156
|
] }) }) });
|
|
2139
2157
|
}
|
|
@@ -2173,7 +2191,7 @@ var brandDotTexture = {
|
|
|
2173
2191
|
};
|
|
2174
2192
|
|
|
2175
2193
|
// ui/organism/LoginView.tsx
|
|
2176
|
-
import { Fragment as Fragment6, jsx as
|
|
2194
|
+
import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2177
2195
|
var SOCIAL_META = {
|
|
2178
2196
|
google: { Icon: IconBrandGoogle, label: "\uAD6C\uAE00\uB85C \uB85C\uADF8\uC778" },
|
|
2179
2197
|
kakao: { Icon: IconBrandKakaoTalk, label: "\uCE74\uCE74\uC624\uB85C \uB85C\uADF8\uC778" },
|
|
@@ -2202,9 +2220,9 @@ function LoginForm({
|
|
|
2202
2220
|
remember: data.get("remember") === "on"
|
|
2203
2221
|
});
|
|
2204
2222
|
}
|
|
2205
|
-
return /* @__PURE__ */
|
|
2206
|
-
error && /* @__PURE__ */
|
|
2207
|
-
/* @__PURE__ */
|
|
2223
|
+
return /* @__PURE__ */ jsx37("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ jsxs23(Stack22, { gap: "md", children: [
|
|
2224
|
+
error && /* @__PURE__ */ jsx37(SdText.Error, { children: error }),
|
|
2225
|
+
/* @__PURE__ */ jsx37(
|
|
2208
2226
|
SdInput.Email,
|
|
2209
2227
|
{
|
|
2210
2228
|
name: "email",
|
|
@@ -2214,7 +2232,7 @@ function LoginForm({
|
|
|
2214
2232
|
required: true
|
|
2215
2233
|
}
|
|
2216
2234
|
),
|
|
2217
|
-
/* @__PURE__ */
|
|
2235
|
+
/* @__PURE__ */ jsx37(
|
|
2218
2236
|
SdInput.Password,
|
|
2219
2237
|
{
|
|
2220
2238
|
name: "password",
|
|
@@ -2225,32 +2243,32 @@ function LoginForm({
|
|
|
2225
2243
|
}
|
|
2226
2244
|
),
|
|
2227
2245
|
(withRemember || findPasswordHref) && /* @__PURE__ */ jsxs23(Group13, { justify: "space-between", align: "center", wrap: "nowrap", children: [
|
|
2228
|
-
withRemember ? /* @__PURE__ */
|
|
2229
|
-
findPasswordHref && /* @__PURE__ */
|
|
2246
|
+
withRemember ? /* @__PURE__ */ jsx37(Checkbox2, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ jsx37("span", {}),
|
|
2247
|
+
findPasswordHref && /* @__PURE__ */ jsx37(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
|
|
2230
2248
|
] }),
|
|
2231
|
-
/* @__PURE__ */
|
|
2249
|
+
/* @__PURE__ */ jsx37(
|
|
2232
2250
|
SdButton.Primary,
|
|
2233
2251
|
{
|
|
2234
2252
|
type: "submit",
|
|
2235
2253
|
fullWidth: true,
|
|
2236
2254
|
loading,
|
|
2237
|
-
leftSection: /* @__PURE__ */
|
|
2255
|
+
leftSection: /* @__PURE__ */ jsx37(IconLogin2, { size: 16 }),
|
|
2238
2256
|
children: submitLabel
|
|
2239
2257
|
}
|
|
2240
2258
|
),
|
|
2241
2259
|
socials && socials.length > 0 && /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
2242
|
-
/* @__PURE__ */
|
|
2243
|
-
/* @__PURE__ */
|
|
2260
|
+
/* @__PURE__ */ jsx37(Divider4, { label: "\uB610\uB294", labelPosition: "center" }),
|
|
2261
|
+
/* @__PURE__ */ jsx37(Stack22, { gap: "xs", children: socials.map((social) => {
|
|
2244
2262
|
var _a4;
|
|
2245
2263
|
const { Icon, label } = SOCIAL_META[social.provider];
|
|
2246
|
-
return /* @__PURE__ */
|
|
2264
|
+
return /* @__PURE__ */ jsx37(
|
|
2247
2265
|
SdButton.Outline,
|
|
2248
2266
|
{
|
|
2249
2267
|
color: "slate",
|
|
2250
2268
|
fullWidth: true,
|
|
2251
2269
|
type: "button",
|
|
2252
2270
|
onClick: social.onClick,
|
|
2253
|
-
leftSection: /* @__PURE__ */
|
|
2271
|
+
leftSection: /* @__PURE__ */ jsx37(Icon, { size: 16 }),
|
|
2254
2272
|
children: (_a4 = social.label) != null ? _a4 : label
|
|
2255
2273
|
},
|
|
2256
2274
|
social.provider
|
|
@@ -2258,16 +2276,16 @@ function LoginForm({
|
|
|
2258
2276
|
}) })
|
|
2259
2277
|
] }),
|
|
2260
2278
|
signUpHref && /* @__PURE__ */ jsxs23(Group13, { gap: 6, justify: "center", children: [
|
|
2261
|
-
/* @__PURE__ */
|
|
2262
|
-
/* @__PURE__ */
|
|
2279
|
+
/* @__PURE__ */ jsx37(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
|
|
2280
|
+
/* @__PURE__ */ jsx37(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
|
|
2263
2281
|
] }),
|
|
2264
2282
|
children
|
|
2265
2283
|
] }) });
|
|
2266
2284
|
}
|
|
2267
2285
|
function FormHeader({ title, description }) {
|
|
2268
2286
|
return /* @__PURE__ */ jsxs23(Stack22, { gap: "lg", children: [
|
|
2269
|
-
/* @__PURE__ */
|
|
2270
|
-
/* @__PURE__ */
|
|
2287
|
+
/* @__PURE__ */ jsx37(Logo, { size: "sm" }),
|
|
2288
|
+
/* @__PURE__ */ jsx37(SdTextBox.Card, { title, description: description != null ? description : "" })
|
|
2271
2289
|
] });
|
|
2272
2290
|
}
|
|
2273
2291
|
function Card7(_a4) {
|
|
@@ -2280,9 +2298,9 @@ function Card7(_a4) {
|
|
|
2280
2298
|
"description",
|
|
2281
2299
|
"mih"
|
|
2282
2300
|
]);
|
|
2283
|
-
return /* @__PURE__ */
|
|
2284
|
-
/* @__PURE__ */
|
|
2285
|
-
/* @__PURE__ */
|
|
2301
|
+
return /* @__PURE__ */ jsx37(Center5, { mih, bg: "slate.0", p: "md", children: /* @__PURE__ */ jsx37(Paper, { w: "100%", maw: 420, p: { base: "lg", sm: "xl" }, radius: "lg", withBorder: true, shadow: "sm", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", children: [
|
|
2302
|
+
/* @__PURE__ */ jsx37(FormHeader, { title, description }),
|
|
2303
|
+
/* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
|
|
2286
2304
|
] }) }) });
|
|
2287
2305
|
}
|
|
2288
2306
|
function Split(_a4) {
|
|
@@ -2307,8 +2325,8 @@ function Split(_a4) {
|
|
|
2307
2325
|
pos: "relative",
|
|
2308
2326
|
style: __spreadValues({ overflow: "hidden", display: "flex", alignItems: "flex-end" }, brandSurface),
|
|
2309
2327
|
children: [
|
|
2310
|
-
/* @__PURE__ */
|
|
2311
|
-
/* @__PURE__ */
|
|
2328
|
+
/* @__PURE__ */ jsx37(Box16, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
|
|
2329
|
+
/* @__PURE__ */ jsx37(Box16, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx37(
|
|
2312
2330
|
SdTextBox.Hero,
|
|
2313
2331
|
{
|
|
2314
2332
|
title: brandTitle,
|
|
@@ -2322,9 +2340,9 @@ function Split(_a4) {
|
|
|
2322
2340
|
]
|
|
2323
2341
|
}
|
|
2324
2342
|
),
|
|
2325
|
-
/* @__PURE__ */
|
|
2326
|
-
/* @__PURE__ */
|
|
2327
|
-
/* @__PURE__ */
|
|
2343
|
+
/* @__PURE__ */ jsx37(Center5, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", w: "100%", maw: 400, children: [
|
|
2344
|
+
/* @__PURE__ */ jsx37(FormHeader, { title, description }),
|
|
2345
|
+
/* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
|
|
2328
2346
|
] }) })
|
|
2329
2347
|
] });
|
|
2330
2348
|
}
|
|
@@ -2340,9 +2358,9 @@ var SdLoginViewSplit = SdLoginView.Split;
|
|
|
2340
2358
|
// ui/organism/Result.tsx
|
|
2341
2359
|
import { Box as Box17, Center as Center6, Group as Group14, Stack as Stack23 } from "@mantine/core";
|
|
2342
2360
|
import { IconCircleCheck, IconCircleX } from "@tabler/icons-react";
|
|
2343
|
-
import { jsx as
|
|
2361
|
+
import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2344
2362
|
function ResultIcon({ color, Icon }) {
|
|
2345
|
-
return /* @__PURE__ */
|
|
2363
|
+
return /* @__PURE__ */ jsx38(Center6, { w: 88, h: 88, bg: `${color}.0`, style: { borderRadius: "50%" }, "aria-hidden": true, children: /* @__PURE__ */ jsx38(Icon, { size: 48, stroke: 1.5, color: `var(--mantine-color-${color}-6)` }) });
|
|
2346
2364
|
}
|
|
2347
2365
|
function createResult(defaults) {
|
|
2348
2366
|
return function SdResult2({
|
|
@@ -2353,16 +2371,16 @@ function createResult(defaults) {
|
|
|
2353
2371
|
children,
|
|
2354
2372
|
mih = "60vh"
|
|
2355
2373
|
}) {
|
|
2356
|
-
return /* @__PURE__ */
|
|
2357
|
-
/* @__PURE__ */
|
|
2374
|
+
return /* @__PURE__ */ jsx38(Center6, { mih, children: /* @__PURE__ */ jsx38(SdContainer, { children: /* @__PURE__ */ jsxs24(Stack23, { align: "center", gap: "lg", ta: "center", children: [
|
|
2375
|
+
/* @__PURE__ */ jsx38(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
|
|
2358
2376
|
/* @__PURE__ */ jsxs24(Stack23, { gap: "sm", align: "center", children: [
|
|
2359
|
-
/* @__PURE__ */
|
|
2360
|
-
description && /* @__PURE__ */
|
|
2377
|
+
/* @__PURE__ */ jsx38(SdTitle.Section, { children: title }),
|
|
2378
|
+
description && /* @__PURE__ */ jsx38(SdText.Body, { maw: 480, children: description })
|
|
2361
2379
|
] }),
|
|
2362
|
-
children && /* @__PURE__ */
|
|
2380
|
+
children && /* @__PURE__ */ jsx38(Box17, { children }),
|
|
2363
2381
|
(primaryAction || secondaryAction) && /* @__PURE__ */ jsxs24(Group14, { gap: "sm", justify: "center", children: [
|
|
2364
|
-
primaryAction && /* @__PURE__ */
|
|
2365
|
-
secondaryAction && /* @__PURE__ */
|
|
2382
|
+
primaryAction && /* @__PURE__ */ jsx38(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
|
|
2383
|
+
secondaryAction && /* @__PURE__ */ jsx38(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
|
|
2366
2384
|
] })
|
|
2367
2385
|
] }) }) });
|
|
2368
2386
|
};
|
|
@@ -2386,7 +2404,7 @@ var SdResultError = SdResult.Error;
|
|
|
2386
2404
|
|
|
2387
2405
|
// ui/template/MainLayout.tsx
|
|
2388
2406
|
import { AppShell } from "@mantine/core";
|
|
2389
|
-
import { jsx as
|
|
2407
|
+
import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2390
2408
|
var headers = {
|
|
2391
2409
|
mega: SdHeader.Mega,
|
|
2392
2410
|
simple: SdHeader.Simple,
|
|
@@ -2401,15 +2419,15 @@ function MainLayout({
|
|
|
2401
2419
|
}) {
|
|
2402
2420
|
const Header = headers[headerVariant];
|
|
2403
2421
|
return /* @__PURE__ */ jsxs25(AppShell, { header: { height: 60 }, children: [
|
|
2404
|
-
/* @__PURE__ */
|
|
2405
|
-
/* @__PURE__ */
|
|
2406
|
-
/* @__PURE__ */
|
|
2422
|
+
/* @__PURE__ */ jsx39(AppShell.Header, { children: /* @__PURE__ */ jsx39(Header, { navItems, loginFlag }) }),
|
|
2423
|
+
/* @__PURE__ */ jsx39(AppShell.Main, { children }),
|
|
2424
|
+
/* @__PURE__ */ jsx39(SdFooter, { company: companyInfo, navItems })
|
|
2407
2425
|
] });
|
|
2408
2426
|
}
|
|
2409
2427
|
|
|
2410
2428
|
// ui/template/PageLayout.tsx
|
|
2411
2429
|
import { Box as Box18, Divider as Divider5, Group as Group15, Space, Stack as Stack24 } from "@mantine/core";
|
|
2412
|
-
import { Fragment as Fragment7, jsx as
|
|
2430
|
+
import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2413
2431
|
var HERO_MIN_H = "38svh";
|
|
2414
2432
|
var HERO_PY = { base: 56, sm: 88 };
|
|
2415
2433
|
var HERO_MAW = 680;
|
|
@@ -2421,12 +2439,12 @@ function Content({
|
|
|
2421
2439
|
}) {
|
|
2422
2440
|
const showBreadcrumb = breadcrumb && !!navItems && navItems.length > 0;
|
|
2423
2441
|
return /* @__PURE__ */ jsxs26(SdContainer, { py: "xl", children: [
|
|
2424
|
-
showBreadcrumb && /* @__PURE__ */
|
|
2425
|
-
/* @__PURE__ */
|
|
2442
|
+
showBreadcrumb && /* @__PURE__ */ jsx40(SdBreadcrumb, { navItems, currentHref, mb: "lg" }),
|
|
2443
|
+
/* @__PURE__ */ jsx40(Stack24, { gap: "xl", children })
|
|
2426
2444
|
] });
|
|
2427
2445
|
}
|
|
2428
2446
|
function LayoutGap() {
|
|
2429
|
-
return /* @__PURE__ */
|
|
2447
|
+
return /* @__PURE__ */ jsx40(Space, {});
|
|
2430
2448
|
}
|
|
2431
2449
|
function Minimal({
|
|
2432
2450
|
label,
|
|
@@ -2438,9 +2456,9 @@ function Minimal({
|
|
|
2438
2456
|
currentHref
|
|
2439
2457
|
}) {
|
|
2440
2458
|
return /* @__PURE__ */ jsxs26(Plain2, { navItems, breadcrumb, currentHref, children: [
|
|
2441
|
-
/* @__PURE__ */
|
|
2442
|
-
/* @__PURE__ */
|
|
2443
|
-
/* @__PURE__ */
|
|
2459
|
+
/* @__PURE__ */ jsx40(LayoutGap, {}),
|
|
2460
|
+
/* @__PURE__ */ jsx40(SdTextBox.Section, { label, title, description: description != null ? description : "" }),
|
|
2461
|
+
/* @__PURE__ */ jsx40(Divider5, {}),
|
|
2444
2462
|
children
|
|
2445
2463
|
] });
|
|
2446
2464
|
}
|
|
@@ -2450,15 +2468,15 @@ function Plain2({
|
|
|
2450
2468
|
breadcrumb,
|
|
2451
2469
|
currentHref
|
|
2452
2470
|
}) {
|
|
2453
|
-
return /* @__PURE__ */
|
|
2471
|
+
return /* @__PURE__ */ jsx40(Fragment7, { children: /* @__PURE__ */ jsx40(Content, { navItems, breadcrumb, currentHref, children }) });
|
|
2454
2472
|
}
|
|
2455
2473
|
function HeroCopy({ label, title, description }) {
|
|
2456
2474
|
return /* @__PURE__ */ jsxs26(Stack24, { gap: "md", maw: HERO_MAW, children: [
|
|
2457
2475
|
label && /* @__PURE__ */ jsxs26(Group15, { gap: "sm", align: "center", wrap: "nowrap", children: [
|
|
2458
|
-
/* @__PURE__ */
|
|
2459
|
-
/* @__PURE__ */
|
|
2476
|
+
/* @__PURE__ */ jsx40(Box18, { w: 28, h: 2, bg: "primary.3", style: { borderRadius: 2 } }),
|
|
2477
|
+
/* @__PURE__ */ jsx40(SdText.Eyebrow, { c: "primary.1", children: label })
|
|
2460
2478
|
] }),
|
|
2461
|
-
/* @__PURE__ */
|
|
2479
|
+
/* @__PURE__ */ jsx40(
|
|
2462
2480
|
SdTextBox.Hero,
|
|
2463
2481
|
{
|
|
2464
2482
|
title,
|
|
@@ -2496,7 +2514,7 @@ function Image2({
|
|
|
2496
2514
|
backgroundColor: "var(--mantine-color-slate-9)"
|
|
2497
2515
|
},
|
|
2498
2516
|
children: [
|
|
2499
|
-
/* @__PURE__ */
|
|
2517
|
+
/* @__PURE__ */ jsx40(
|
|
2500
2518
|
Box18,
|
|
2501
2519
|
{
|
|
2502
2520
|
"aria-hidden": true,
|
|
@@ -2507,11 +2525,11 @@ function Image2({
|
|
|
2507
2525
|
}
|
|
2508
2526
|
}
|
|
2509
2527
|
),
|
|
2510
|
-
/* @__PURE__ */
|
|
2528
|
+
/* @__PURE__ */ jsx40(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx40(HeroCopy, { label, title, description }) })
|
|
2511
2529
|
]
|
|
2512
2530
|
}
|
|
2513
2531
|
),
|
|
2514
|
-
/* @__PURE__ */
|
|
2532
|
+
/* @__PURE__ */ jsx40(Content, { navItems, breadcrumb, currentHref, children })
|
|
2515
2533
|
] });
|
|
2516
2534
|
}
|
|
2517
2535
|
function Brand({
|
|
@@ -2536,12 +2554,12 @@ function Brand({
|
|
|
2536
2554
|
borderBottom: "1px solid var(--mantine-color-slate-8)"
|
|
2537
2555
|
}, brandSurface),
|
|
2538
2556
|
children: [
|
|
2539
|
-
/* @__PURE__ */
|
|
2540
|
-
/* @__PURE__ */
|
|
2557
|
+
/* @__PURE__ */ jsx40(Box18, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
|
|
2558
|
+
/* @__PURE__ */ jsx40(SdContainer, { pos: "relative", py: HERO_PY, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx40(HeroCopy, { label, title, description }) })
|
|
2541
2559
|
]
|
|
2542
2560
|
}
|
|
2543
2561
|
),
|
|
2544
|
-
/* @__PURE__ */
|
|
2562
|
+
/* @__PURE__ */ jsx40(Content, { navItems, breadcrumb, currentHref, children })
|
|
2545
2563
|
] });
|
|
2546
2564
|
}
|
|
2547
2565
|
var PageLayout = {
|
|
@@ -2559,6 +2577,9 @@ var PageLayoutMinimal = PageLayout.Minimal;
|
|
|
2559
2577
|
var PageLayoutBrand = PageLayout.Brand;
|
|
2560
2578
|
var PageLayoutPlain = PageLayout.Plain;
|
|
2561
2579
|
|
|
2580
|
+
// ui/template/SdProvider.tsx
|
|
2581
|
+
import { MantineProvider } from "@mantine/core";
|
|
2582
|
+
|
|
2562
2583
|
// ui/theme.ts
|
|
2563
2584
|
import { createTheme, rem as rem2 } from "@mantine/core";
|
|
2564
2585
|
var primary = [
|
|
@@ -2816,10 +2837,25 @@ var theme = createTheme({
|
|
|
2816
2837
|
}
|
|
2817
2838
|
}
|
|
2818
2839
|
});
|
|
2840
|
+
|
|
2841
|
+
// ui/template/SdProvider.tsx
|
|
2842
|
+
import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2843
|
+
function SdProvider({
|
|
2844
|
+
children,
|
|
2845
|
+
theme: theme2 = theme,
|
|
2846
|
+
navItems,
|
|
2847
|
+
defaultColorScheme = "light"
|
|
2848
|
+
}) {
|
|
2849
|
+
return /* @__PURE__ */ jsxs27(MantineProvider, { theme: theme2, defaultColorScheme, children: [
|
|
2850
|
+
/* @__PURE__ */ jsx41(SdToastProvider, {}),
|
|
2851
|
+
/* @__PURE__ */ jsx41(NavProvider, { navItems, children })
|
|
2852
|
+
] });
|
|
2853
|
+
}
|
|
2819
2854
|
export {
|
|
2820
2855
|
HeroCarousel,
|
|
2821
2856
|
Logo,
|
|
2822
2857
|
MainLayout,
|
|
2858
|
+
NavProvider,
|
|
2823
2859
|
PageLayout,
|
|
2824
2860
|
PageLayoutBrand,
|
|
2825
2861
|
PageLayoutImage,
|
|
@@ -2905,6 +2941,7 @@ export {
|
|
|
2905
2941
|
SdPricingCardDefault,
|
|
2906
2942
|
SdPricingCardFeatured,
|
|
2907
2943
|
SdPricingCardGrid,
|
|
2944
|
+
SdProvider,
|
|
2908
2945
|
SdQuote,
|
|
2909
2946
|
SdQuoteCard,
|
|
2910
2947
|
SdQuotePlain,
|
|
@@ -2968,5 +3005,6 @@ export {
|
|
|
2968
3005
|
SdToastSuccess,
|
|
2969
3006
|
SdToastUpdate,
|
|
2970
3007
|
SdToastWarning,
|
|
2971
|
-
theme
|
|
3008
|
+
theme,
|
|
3009
|
+
useNav
|
|
2972
3010
|
};
|