@yeongseoksong/framework 1.5.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -13
- package/dist/store/index.cjs +11 -2
- package/dist/store/index.d.mts +31 -1
- package/dist/store/index.d.ts +31 -1
- package/dist/store/index.mjs +10 -2
- package/dist/ui/index.cjs +249 -208
- package/dist/ui/index.d.mts +44 -4
- package/dist/ui/index.d.ts +44 -4
- package/dist/ui/index.mjs +206 -168
- package/package.json +1 -1
package/dist/ui/index.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,29 @@ 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
|
-
|
|
1587
|
+
if (navItems.length === 0) return;
|
|
1588
|
+
return /* @__PURE__ */ jsx29(Box11, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs15(
|
|
1570
1589
|
Breadcrumbs,
|
|
1571
1590
|
{
|
|
1572
|
-
separator: /* @__PURE__ */
|
|
1591
|
+
separator: /* @__PURE__ */ jsx29(IconChevronRight, { size: 14, stroke: 2, color: "var(--mantine-color-slate-4)" }),
|
|
1573
1592
|
separatorMargin: "xs",
|
|
1574
1593
|
children: [
|
|
1575
|
-
/* @__PURE__ */
|
|
1594
|
+
/* @__PURE__ */ jsx29(
|
|
1576
1595
|
SdLink.Sub,
|
|
1577
1596
|
{
|
|
1578
1597
|
href: homeHref,
|
|
1579
1598
|
"aria-label": homeLabel,
|
|
1580
1599
|
style: { display: "inline-flex", alignItems: "center" },
|
|
1581
|
-
children: /* @__PURE__ */
|
|
1600
|
+
children: /* @__PURE__ */ jsx29(IconHome, { size: 16, stroke: 2 })
|
|
1582
1601
|
}
|
|
1583
1602
|
),
|
|
1584
1603
|
trail.map((item, i) => {
|
|
1585
1604
|
const isLast = i === trail.length - 1;
|
|
1586
|
-
return isLast ? /* @__PURE__ */
|
|
1605
|
+
return isLast ? /* @__PURE__ */ jsx29(SdLink.Body, { children: item.label }, item.id) : /* @__PURE__ */ jsx29(SdLink.Sub, { href: item.href, children: item.label }, item.id);
|
|
1587
1606
|
})
|
|
1588
1607
|
]
|
|
1589
1608
|
}
|
|
@@ -1594,7 +1613,7 @@ function SdBreadcrumb(_a4) {
|
|
|
1594
1613
|
import { Carousel } from "@mantine/carousel";
|
|
1595
1614
|
import { Anchor as Anchor2, Box as Box12, Group as Group9, Stack as Stack15 } from "@mantine/core";
|
|
1596
1615
|
import { IconArrowNarrowRight } from "@tabler/icons-react";
|
|
1597
|
-
import { Fragment as Fragment3, jsx as
|
|
1616
|
+
import { Fragment as Fragment3, jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1598
1617
|
var variantMap = {
|
|
1599
1618
|
primary: SdButton.Primary,
|
|
1600
1619
|
secondary: SdButton.Secondary,
|
|
@@ -1604,12 +1623,12 @@ var variantMap = {
|
|
|
1604
1623
|
function CtaButton({ cta }) {
|
|
1605
1624
|
var _a4;
|
|
1606
1625
|
const Button3 = variantMap[(_a4 = cta.variant) != null ? _a4 : "primary"];
|
|
1607
|
-
return /* @__PURE__ */
|
|
1626
|
+
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
1627
|
}
|
|
1609
1628
|
function HeroCarousel({ slides, children }) {
|
|
1610
|
-
if (children) return /* @__PURE__ */
|
|
1629
|
+
if (children) return /* @__PURE__ */ jsx30(Fragment3, { children });
|
|
1611
1630
|
const filterdSlides = filterAndSort(slides);
|
|
1612
|
-
return /* @__PURE__ */
|
|
1631
|
+
return /* @__PURE__ */ jsx30(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx30(Carousel.Slide, { children: /* @__PURE__ */ jsx30(
|
|
1613
1632
|
Box12,
|
|
1614
1633
|
{
|
|
1615
1634
|
style: {
|
|
@@ -1622,7 +1641,7 @@ function HeroCarousel({ slides, children }) {
|
|
|
1622
1641
|
justifyContent: "center"
|
|
1623
1642
|
},
|
|
1624
1643
|
children: /* @__PURE__ */ jsxs16(Stack15, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
|
|
1625
|
-
/* @__PURE__ */
|
|
1644
|
+
/* @__PURE__ */ jsx30(
|
|
1626
1645
|
SdTextBox.Hero,
|
|
1627
1646
|
{
|
|
1628
1647
|
title: slide.title,
|
|
@@ -1631,7 +1650,7 @@ function HeroCarousel({ slides, children }) {
|
|
|
1631
1650
|
align: "center"
|
|
1632
1651
|
}
|
|
1633
1652
|
),
|
|
1634
|
-
slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */
|
|
1653
|
+
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
1654
|
] })
|
|
1636
1655
|
}
|
|
1637
1656
|
) }, i)) });
|
|
@@ -1641,7 +1660,7 @@ function HeroCarousel({ slides, children }) {
|
|
|
1641
1660
|
import { Box as Box13, Burger, Drawer, Group as Group10, Menu, NavLink, Stack as Stack16 } from "@mantine/core";
|
|
1642
1661
|
import { IconChevronDown } from "@tabler/icons-react";
|
|
1643
1662
|
import { useDisclosure, useFocusWithin, useHover, useMergedRef } from "@mantine/hooks";
|
|
1644
|
-
import { Fragment as Fragment4, jsx as
|
|
1663
|
+
import { Fragment as Fragment4, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1645
1664
|
var BAR_HEIGHT = 60;
|
|
1646
1665
|
var MAX_DEPTH = 3;
|
|
1647
1666
|
var NAV_LINK_STYLES = {
|
|
@@ -1663,9 +1682,9 @@ function useNavTree(navItems) {
|
|
|
1663
1682
|
function MobileNavNode({ item, depth, childrenOf, close }) {
|
|
1664
1683
|
const kids = depth < MAX_DEPTH ? childrenOf(item.id) : [];
|
|
1665
1684
|
if (kids.length === 0) {
|
|
1666
|
-
return /* @__PURE__ */
|
|
1685
|
+
return /* @__PURE__ */ jsx31(Box13, { px: "sm", py: 8, children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, onClick: close, children: item.label }) });
|
|
1667
1686
|
}
|
|
1668
|
-
return /* @__PURE__ */
|
|
1687
|
+
return /* @__PURE__ */ jsx31(
|
|
1669
1688
|
NavLink,
|
|
1670
1689
|
{
|
|
1671
1690
|
label: item.label,
|
|
@@ -1673,7 +1692,7 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
|
|
|
1673
1692
|
component: item.href ? "a" : "button",
|
|
1674
1693
|
href: item.href,
|
|
1675
1694
|
childrenOffset: 28,
|
|
1676
|
-
children: kids.map((kid) => /* @__PURE__ */
|
|
1695
|
+
children: kids.map((kid) => /* @__PURE__ */ jsx31(
|
|
1677
1696
|
MobileNavNode,
|
|
1678
1697
|
{
|
|
1679
1698
|
item: kid,
|
|
@@ -1687,9 +1706,9 @@ function MobileNavNode({ item, depth, childrenOf, close }) {
|
|
|
1687
1706
|
);
|
|
1688
1707
|
}
|
|
1689
1708
|
function MobileNav({ opened, close, topItems, childrenOf, loginFlag }) {
|
|
1690
|
-
return /* @__PURE__ */
|
|
1691
|
-
topItems.map((item) => /* @__PURE__ */
|
|
1692
|
-
loginFlag && /* @__PURE__ */
|
|
1709
|
+
return /* @__PURE__ */ jsx31(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs17(Stack16, { gap: 0, children: [
|
|
1710
|
+
topItems.map((item) => /* @__PURE__ */ jsx31(MobileNavNode, { item, depth: 1, childrenOf, close }, item.id)),
|
|
1711
|
+
loginFlag && /* @__PURE__ */ jsx31(Stack16, { gap: "xs", mt: "md", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1693
1712
|
] }) });
|
|
1694
1713
|
}
|
|
1695
1714
|
function MegaHeader({ navItems, loginFlag }) {
|
|
@@ -1700,7 +1719,7 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1700
1719
|
const rootRef = useMergedRef(hoverRef, focusRef);
|
|
1701
1720
|
const expanded = hasAnyChildren && (hovered || focused);
|
|
1702
1721
|
return /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
1703
|
-
/* @__PURE__ */
|
|
1722
|
+
/* @__PURE__ */ jsx31(
|
|
1704
1723
|
Box13,
|
|
1705
1724
|
{
|
|
1706
1725
|
ref: rootRef,
|
|
@@ -1711,12 +1730,12 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1711
1730
|
borderBottom: expanded ? "1px solid var(--mantine-color-slate-2)" : void 0,
|
|
1712
1731
|
transition: "box-shadow 0.15s"
|
|
1713
1732
|
},
|
|
1714
|
-
children: /* @__PURE__ */
|
|
1715
|
-
/* @__PURE__ */
|
|
1716
|
-
/* @__PURE__ */
|
|
1733
|
+
children: /* @__PURE__ */ jsx31(SdContainer, { children: /* @__PURE__ */ jsxs17(Group10, { justify: "space-between", align: "flex-start", wrap: "nowrap", children: [
|
|
1734
|
+
/* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(Logo, {}) }),
|
|
1735
|
+
/* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "flex-start", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
|
|
1717
1736
|
const kids = childrenOf(item.id);
|
|
1718
1737
|
return /* @__PURE__ */ jsxs17(Stack16, { gap: 0, align: "center", children: [
|
|
1719
|
-
/* @__PURE__ */
|
|
1738
|
+
/* @__PURE__ */ jsx31(Group10, { h: BAR_HEIGHT, align: "center", children: /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }) }),
|
|
1720
1739
|
kids.length > 0 && /*
|
|
1721
1740
|
Mantine Collapse를 쓰지 않는다 — 접힐 때 display:none이 되어
|
|
1722
1741
|
하위 링크가 폭 계산에서 빠졌다가 펼칠 때 다시 들어오면서
|
|
@@ -1724,7 +1743,7 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1724
1743
|
height 0 + overflow hidden은 폭 기여를 유지하므로 간격이 고정된다.
|
|
1725
1744
|
visibility:hidden이 접힌 상태의 링크를 탭 순서에서도 빼준다.
|
|
1726
1745
|
*/
|
|
1727
|
-
/* @__PURE__ */
|
|
1746
|
+
/* @__PURE__ */ jsx31(
|
|
1728
1747
|
Box13,
|
|
1729
1748
|
{
|
|
1730
1749
|
"aria-hidden": !expanded,
|
|
@@ -1735,14 +1754,14 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1735
1754
|
visibility: expanded ? "visible" : "hidden",
|
|
1736
1755
|
transition: "opacity 0.15s ease"
|
|
1737
1756
|
},
|
|
1738
|
-
children: /* @__PURE__ */
|
|
1757
|
+
children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", pt: 4, pb: "lg", align: "center", children: kids.map((kid) => {
|
|
1739
1758
|
const grandkids = childrenOf(kid.id);
|
|
1740
1759
|
if (grandkids.length === 0) {
|
|
1741
|
-
return /* @__PURE__ */
|
|
1760
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
|
|
1742
1761
|
}
|
|
1743
1762
|
return /* @__PURE__ */ jsxs17(Stack16, { gap: 2, align: "center", children: [
|
|
1744
|
-
/* @__PURE__ */
|
|
1745
|
-
grandkids.map((gk) => /* @__PURE__ */
|
|
1763
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
|
|
1764
|
+
grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, children: gk.label }, gk.id))
|
|
1746
1765
|
] }, kid.id);
|
|
1747
1766
|
}) })
|
|
1748
1767
|
}
|
|
@@ -1750,13 +1769,13 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1750
1769
|
] }, item.id);
|
|
1751
1770
|
}) }),
|
|
1752
1771
|
/* @__PURE__ */ jsxs17(Group10, { h: BAR_HEIGHT, align: "center", gap: "sm", wrap: "nowrap", children: [
|
|
1753
|
-
/* @__PURE__ */
|
|
1754
|
-
loginFlag && /* @__PURE__ */
|
|
1772
|
+
/* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1773
|
+
loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1755
1774
|
] })
|
|
1756
1775
|
] }) })
|
|
1757
1776
|
}
|
|
1758
1777
|
),
|
|
1759
|
-
/* @__PURE__ */
|
|
1778
|
+
/* @__PURE__ */ jsx31(
|
|
1760
1779
|
MobileNav,
|
|
1761
1780
|
{
|
|
1762
1781
|
opened,
|
|
@@ -1769,18 +1788,18 @@ function MegaHeader({ navItems, loginFlag }) {
|
|
|
1769
1788
|
] });
|
|
1770
1789
|
}
|
|
1771
1790
|
function renderMenuLeaf(item) {
|
|
1772
|
-
return item.href ? /* @__PURE__ */
|
|
1791
|
+
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
1792
|
}
|
|
1774
1793
|
function SimpleHeader({ navItems, loginFlag }) {
|
|
1775
1794
|
const [opened, { toggle, close }] = useDisclosure();
|
|
1776
1795
|
const { topItems, childrenOf } = useNavTree(navItems);
|
|
1777
1796
|
return /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
1778
|
-
/* @__PURE__ */
|
|
1779
|
-
/* @__PURE__ */
|
|
1780
|
-
/* @__PURE__ */
|
|
1797
|
+
/* @__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: [
|
|
1798
|
+
/* @__PURE__ */ jsx31(Logo, {}),
|
|
1799
|
+
/* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
|
|
1781
1800
|
const kids = childrenOf(item.id);
|
|
1782
1801
|
if (kids.length === 0) {
|
|
1783
|
-
return /* @__PURE__ */
|
|
1802
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
|
|
1784
1803
|
}
|
|
1785
1804
|
return (
|
|
1786
1805
|
/*
|
|
@@ -1800,16 +1819,16 @@ function SimpleHeader({ navItems, loginFlag }) {
|
|
|
1800
1819
|
radius: "md",
|
|
1801
1820
|
withinPortal: true,
|
|
1802
1821
|
children: [
|
|
1803
|
-
/* @__PURE__ */
|
|
1804
|
-
/* @__PURE__ */
|
|
1805
|
-
/* @__PURE__ */
|
|
1822
|
+
/* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
|
|
1823
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
|
|
1824
|
+
/* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
|
|
1806
1825
|
] }) }) }),
|
|
1807
|
-
/* @__PURE__ */
|
|
1826
|
+
/* @__PURE__ */ jsx31(Menu.Dropdown, { children: kids.map((kid) => {
|
|
1808
1827
|
const grandkids = childrenOf(kid.id);
|
|
1809
1828
|
if (grandkids.length > 0) {
|
|
1810
1829
|
return /* @__PURE__ */ jsxs17(Menu.Sub, { children: [
|
|
1811
|
-
/* @__PURE__ */
|
|
1812
|
-
/* @__PURE__ */
|
|
1830
|
+
/* @__PURE__ */ jsx31(Menu.Sub.Target, { children: /* @__PURE__ */ jsx31(Menu.Sub.Item, { children: kid.label }) }),
|
|
1831
|
+
/* @__PURE__ */ jsx31(Menu.Sub.Dropdown, { children: grandkids.map(renderMenuLeaf) })
|
|
1813
1832
|
] }, kid.id);
|
|
1814
1833
|
}
|
|
1815
1834
|
return renderMenuLeaf(kid);
|
|
@@ -1821,11 +1840,11 @@ function SimpleHeader({ navItems, loginFlag }) {
|
|
|
1821
1840
|
);
|
|
1822
1841
|
}) }),
|
|
1823
1842
|
/* @__PURE__ */ jsxs17(Group10, { align: "center", gap: "sm", wrap: "nowrap", children: [
|
|
1824
|
-
/* @__PURE__ */
|
|
1825
|
-
loginFlag && /* @__PURE__ */
|
|
1843
|
+
/* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1844
|
+
loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1826
1845
|
] })
|
|
1827
1846
|
] }) }) }),
|
|
1828
|
-
/* @__PURE__ */
|
|
1847
|
+
/* @__PURE__ */ jsx31(
|
|
1829
1848
|
MobileNav,
|
|
1830
1849
|
{
|
|
1831
1850
|
opened,
|
|
@@ -1841,12 +1860,12 @@ function PanelHeader({ navItems, loginFlag }) {
|
|
|
1841
1860
|
const [opened, { toggle, close }] = useDisclosure();
|
|
1842
1861
|
const { topItems, childrenOf } = useNavTree(navItems);
|
|
1843
1862
|
return /* @__PURE__ */ jsxs17(Fragment4, { children: [
|
|
1844
|
-
/* @__PURE__ */
|
|
1845
|
-
/* @__PURE__ */
|
|
1846
|
-
/* @__PURE__ */
|
|
1863
|
+
/* @__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: [
|
|
1864
|
+
/* @__PURE__ */ jsx31(Logo, {}),
|
|
1865
|
+
/* @__PURE__ */ jsx31(Group10, { gap: "xl", align: "center", wrap: "nowrap", visibleFrom: "sm", children: topItems.map((item) => {
|
|
1847
1866
|
const kids = childrenOf(item.id);
|
|
1848
1867
|
if (kids.length === 0) {
|
|
1849
|
-
return /* @__PURE__ */
|
|
1868
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }, item.id);
|
|
1850
1869
|
}
|
|
1851
1870
|
return /* @__PURE__ */ jsxs17(
|
|
1852
1871
|
Menu,
|
|
@@ -1860,18 +1879,18 @@ function PanelHeader({ navItems, loginFlag }) {
|
|
|
1860
1879
|
radius: "md",
|
|
1861
1880
|
withinPortal: true,
|
|
1862
1881
|
children: [
|
|
1863
|
-
/* @__PURE__ */
|
|
1864
|
-
/* @__PURE__ */
|
|
1865
|
-
/* @__PURE__ */
|
|
1882
|
+
/* @__PURE__ */ jsx31(Menu.Target, { children: /* @__PURE__ */ jsx31(Box13, { style: { cursor: "pointer" }, children: /* @__PURE__ */ jsxs17(Group10, { gap: 4, align: "center", wrap: "nowrap", children: [
|
|
1883
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: item.href, children: item.label }),
|
|
1884
|
+
/* @__PURE__ */ jsx31(IconChevronDown, { size: 14, stroke: 2 })
|
|
1866
1885
|
] }) }) }),
|
|
1867
|
-
/* @__PURE__ */
|
|
1886
|
+
/* @__PURE__ */ jsx31(Menu.Dropdown, { children: /* @__PURE__ */ jsx31(Stack16, { gap: "xs", p: "xs", children: kids.map((kid) => {
|
|
1868
1887
|
const grandkids = childrenOf(kid.id);
|
|
1869
1888
|
if (grandkids.length === 0) {
|
|
1870
|
-
return /* @__PURE__ */
|
|
1889
|
+
return /* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }, kid.id);
|
|
1871
1890
|
}
|
|
1872
1891
|
return /* @__PURE__ */ jsxs17(Stack16, { gap: 2, children: [
|
|
1873
|
-
/* @__PURE__ */
|
|
1874
|
-
grandkids.map((gk) => /* @__PURE__ */
|
|
1892
|
+
/* @__PURE__ */ jsx31(SdLink.Body, { href: kid.href, children: kid.label }),
|
|
1893
|
+
grandkids.map((gk) => /* @__PURE__ */ jsx31(SdLink.Sub, { href: gk.href, pl: "sm", children: gk.label }, gk.id))
|
|
1875
1894
|
] }, kid.id);
|
|
1876
1895
|
}) }) })
|
|
1877
1896
|
]
|
|
@@ -1880,11 +1899,11 @@ function PanelHeader({ navItems, loginFlag }) {
|
|
|
1880
1899
|
);
|
|
1881
1900
|
}) }),
|
|
1882
1901
|
/* @__PURE__ */ jsxs17(Group10, { align: "center", gap: "sm", wrap: "nowrap", children: [
|
|
1883
|
-
/* @__PURE__ */
|
|
1884
|
-
loginFlag && /* @__PURE__ */
|
|
1902
|
+
/* @__PURE__ */ jsx31(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1903
|
+
loginFlag && /* @__PURE__ */ jsx31(Group10, { gap: "sm", visibleFrom: "sm", children: /* @__PURE__ */ jsx31(SdButton.Primary, { size: "xs", children: "\uB85C\uADF8\uC778" }) })
|
|
1885
1904
|
] })
|
|
1886
1905
|
] }) }) }),
|
|
1887
|
-
/* @__PURE__ */
|
|
1906
|
+
/* @__PURE__ */ jsx31(
|
|
1888
1907
|
MobileNav,
|
|
1889
1908
|
{
|
|
1890
1909
|
opened,
|
|
@@ -1916,16 +1935,16 @@ import {
|
|
|
1916
1935
|
IconBrandYoutube,
|
|
1917
1936
|
IconWorld
|
|
1918
1937
|
} from "@tabler/icons-react";
|
|
1919
|
-
import { Fragment as Fragment5, jsx as
|
|
1938
|
+
import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1920
1939
|
function FooterNavColumns({ items }) {
|
|
1921
1940
|
const topLevel = items.filter((item) => !item.parentId);
|
|
1922
1941
|
const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
|
|
1923
1942
|
const CHILD_THRESH = 4;
|
|
1924
|
-
return /* @__PURE__ */
|
|
1925
|
-
/* @__PURE__ */
|
|
1943
|
+
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: [
|
|
1944
|
+
/* @__PURE__ */ jsx32(SdLink.Sub, { href: group.href, children: group.label }, group.id),
|
|
1926
1945
|
getChildren(group.id).map((link, id) => {
|
|
1927
1946
|
if (id >= CHILD_THRESH) return;
|
|
1928
|
-
return /* @__PURE__ */
|
|
1947
|
+
return /* @__PURE__ */ jsx32(SdLink.Hint, { href: link.href, children: link.label }, link.id);
|
|
1929
1948
|
})
|
|
1930
1949
|
] }) }, group.id)) });
|
|
1931
1950
|
}
|
|
@@ -1939,10 +1958,10 @@ var SOCIAL_ICONS = {
|
|
|
1939
1958
|
blog: IconWorld
|
|
1940
1959
|
};
|
|
1941
1960
|
function FooterSocials({ items }) {
|
|
1942
|
-
return /* @__PURE__ */
|
|
1961
|
+
return /* @__PURE__ */ jsx32(Group11, { gap: 0, wrap: "nowrap", children: items.map((item) => {
|
|
1943
1962
|
var _a4, _b;
|
|
1944
1963
|
const Icon = (_a4 = SOCIAL_ICONS[item.platform]) != null ? _a4 : IconWorld;
|
|
1945
|
-
return /* @__PURE__ */
|
|
1964
|
+
return /* @__PURE__ */ jsx32(
|
|
1946
1965
|
ActionIcon,
|
|
1947
1966
|
{
|
|
1948
1967
|
component: "a",
|
|
@@ -1953,7 +1972,7 @@ function FooterSocials({ items }) {
|
|
|
1953
1972
|
color: "gray",
|
|
1954
1973
|
variant: "subtle",
|
|
1955
1974
|
"aria-label": (_b = item.label) != null ? _b : item.platform,
|
|
1956
|
-
children: /* @__PURE__ */
|
|
1975
|
+
children: /* @__PURE__ */ jsx32(Icon, { size: 18, stroke: 1.5 })
|
|
1957
1976
|
},
|
|
1958
1977
|
item.url
|
|
1959
1978
|
);
|
|
@@ -1961,32 +1980,32 @@ function FooterSocials({ items }) {
|
|
|
1961
1980
|
}
|
|
1962
1981
|
function InfoCell({ label, children }) {
|
|
1963
1982
|
return /* @__PURE__ */ jsxs18(Group11, { gap: 6, wrap: "nowrap", align: "baseline", children: [
|
|
1964
|
-
/* @__PURE__ */
|
|
1965
|
-
typeof children === "string" ? /* @__PURE__ */
|
|
1983
|
+
/* @__PURE__ */ jsx32(SdText.Sub, { c: "slate.4", style: { whiteSpace: "nowrap" }, children: label }),
|
|
1984
|
+
typeof children === "string" ? /* @__PURE__ */ jsx32(SdText.Sub, { children }) : children
|
|
1966
1985
|
] });
|
|
1967
1986
|
}
|
|
1968
1987
|
function FooterCompanyInfo({ company }) {
|
|
1969
1988
|
const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
|
|
1970
1989
|
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__ */
|
|
1990
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "\uC0C1\uD638", children: company.name }),
|
|
1991
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638", children: company.registrationNumber }),
|
|
1992
|
+
sortedAddresses.map((addr) => /* @__PURE__ */ jsx32(InfoCell, { label: addr.label, children: addr.address }, addr.label)),
|
|
1993
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "Tel", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `tel:${company.tel}`, children: company.tel }) }),
|
|
1994
|
+
company.fax && /* @__PURE__ */ jsx32(InfoCell, { label: "Fax", children: company.fax }),
|
|
1995
|
+
/* @__PURE__ */ jsx32(InfoCell, { label: "Email", children: /* @__PURE__ */ jsx32(SdLink.Sub, { href: `mailto:${company.email}`, children: company.email }) })
|
|
1977
1996
|
] });
|
|
1978
1997
|
}
|
|
1979
1998
|
function SdFooter({ company, navItems, policyLinks, description }) {
|
|
1980
1999
|
const visibleNav = filterAndSort(navItems);
|
|
1981
2000
|
const visiblePolicy = filterAndSort(policyLinks);
|
|
1982
|
-
return /* @__PURE__ */
|
|
1983
|
-
/* @__PURE__ */
|
|
1984
|
-
description && /* @__PURE__ */
|
|
2001
|
+
return /* @__PURE__ */ jsx32(Box14, { component: "footer", children: /* @__PURE__ */ jsx32(SdContainer, { py: "lg", children: /* @__PURE__ */ jsxs18(Stack17, { children: [
|
|
2002
|
+
/* @__PURE__ */ jsx32(Logo, { size: "sm" }),
|
|
2003
|
+
description && /* @__PURE__ */ jsx32(SdText.Sub, { children: description }),
|
|
1985
2004
|
/* @__PURE__ */ jsxs18(Flex, { direction: { base: "column", md: "row" }, gap: 48, align: "flex-start", children: [
|
|
1986
|
-
/* @__PURE__ */
|
|
1987
|
-
visibleNav.length > 0 && /* @__PURE__ */
|
|
2005
|
+
/* @__PURE__ */ jsx32(Box14, { flex: { base: "0 0 auto", md: "1 1 0" }, w: { base: "100%", md: "auto" }, children: /* @__PURE__ */ jsx32(FooterCompanyInfo, { company }) }),
|
|
2006
|
+
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
2007
|
] }),
|
|
1989
|
-
/* @__PURE__ */
|
|
2008
|
+
/* @__PURE__ */ jsx32(Divider3, {}),
|
|
1990
2009
|
/* @__PURE__ */ jsxs18(Group11, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
|
|
1991
2010
|
/* @__PURE__ */ jsxs18(SdText.Sub, { children: [
|
|
1992
2011
|
"\xA9 ",
|
|
@@ -1996,11 +2015,11 @@ function SdFooter({ company, navItems, policyLinks, description }) {
|
|
|
1996
2015
|
". All rights reserved."
|
|
1997
2016
|
] }),
|
|
1998
2017
|
/* @__PURE__ */ jsxs18(Group11, { gap: "lg", wrap: "wrap", children: [
|
|
1999
|
-
visiblePolicy.length > 0 && /* @__PURE__ */
|
|
2018
|
+
visiblePolicy.length > 0 && /* @__PURE__ */ jsx32(Group11, { gap: "lg", children: visiblePolicy.map((item) => {
|
|
2000
2019
|
const Link4 = item.highlight ? SdLink.Body : SdLink.Sub;
|
|
2001
|
-
return /* @__PURE__ */
|
|
2020
|
+
return /* @__PURE__ */ jsx32(Link4, { href: item.href, children: item.label }, item.id);
|
|
2002
2021
|
}) }),
|
|
2003
|
-
company.socials && company.socials.length > 0 && /* @__PURE__ */
|
|
2022
|
+
company.socials && company.socials.length > 0 && /* @__PURE__ */ jsx32(FooterSocials, { items: company.socials })
|
|
2004
2023
|
] })
|
|
2005
2024
|
] })
|
|
2006
2025
|
] }) }) });
|
|
@@ -2008,7 +2027,7 @@ function SdFooter({ company, navItems, policyLinks, description }) {
|
|
|
2008
2027
|
|
|
2009
2028
|
// ui/organism/FeatureSection.tsx
|
|
2010
2029
|
import { Stack as Stack18 } from "@mantine/core";
|
|
2011
|
-
import { jsx as
|
|
2030
|
+
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2012
2031
|
function SdFeatureSection(_a4) {
|
|
2013
2032
|
var _b = _a4, {
|
|
2014
2033
|
label,
|
|
@@ -2025,8 +2044,8 @@ function SdFeatureSection(_a4) {
|
|
|
2025
2044
|
"cols",
|
|
2026
2045
|
"py"
|
|
2027
2046
|
]);
|
|
2028
|
-
return /* @__PURE__ */
|
|
2029
|
-
/* @__PURE__ */
|
|
2047
|
+
return /* @__PURE__ */ jsx33(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs19(Stack18, { gap: "xl", children: [
|
|
2048
|
+
/* @__PURE__ */ jsx33(
|
|
2030
2049
|
SdTextBox.Section,
|
|
2031
2050
|
{
|
|
2032
2051
|
label,
|
|
@@ -2037,13 +2056,13 @@ function SdFeatureSection(_a4) {
|
|
|
2037
2056
|
align: "center"
|
|
2038
2057
|
}
|
|
2039
2058
|
),
|
|
2040
|
-
/* @__PURE__ */
|
|
2059
|
+
/* @__PURE__ */ jsx33(SdFeatures, { items, cols })
|
|
2041
2060
|
] }) }));
|
|
2042
2061
|
}
|
|
2043
2062
|
|
|
2044
2063
|
// ui/organism/TimelineSection.tsx
|
|
2045
2064
|
import { Center as Center3, Stack as Stack19 } from "@mantine/core";
|
|
2046
|
-
import { jsx as
|
|
2065
|
+
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2047
2066
|
function SdTimelineSection(_a4) {
|
|
2048
2067
|
var _b = _a4, {
|
|
2049
2068
|
label,
|
|
@@ -2058,15 +2077,15 @@ function SdTimelineSection(_a4) {
|
|
|
2058
2077
|
"items",
|
|
2059
2078
|
"py"
|
|
2060
2079
|
]);
|
|
2061
|
-
return /* @__PURE__ */
|
|
2062
|
-
/* @__PURE__ */
|
|
2063
|
-
/* @__PURE__ */
|
|
2080
|
+
return /* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsxs20(Stack19, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
|
|
2081
|
+
/* @__PURE__ */ jsx34(SdTextBox.Section, { label, title, description }),
|
|
2082
|
+
/* @__PURE__ */ jsx34(Center3, { children: /* @__PURE__ */ jsx34(SdTimeline, { items }) })
|
|
2064
2083
|
] })) });
|
|
2065
2084
|
}
|
|
2066
2085
|
|
|
2067
2086
|
// ui/organism/StepsSection.tsx
|
|
2068
2087
|
import { Stack as Stack20 } from "@mantine/core";
|
|
2069
|
-
import { jsx as
|
|
2088
|
+
import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2070
2089
|
function SdStepsSection(_a4) {
|
|
2071
2090
|
var _b = _a4, {
|
|
2072
2091
|
label,
|
|
@@ -2081,17 +2100,17 @@ function SdStepsSection(_a4) {
|
|
|
2081
2100
|
"items",
|
|
2082
2101
|
"py"
|
|
2083
2102
|
]);
|
|
2084
|
-
return /* @__PURE__ */
|
|
2085
|
-
(label || title || description) && /* @__PURE__ */
|
|
2086
|
-
/* @__PURE__ */
|
|
2103
|
+
return /* @__PURE__ */ jsx35(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs21(Stack20, { gap: "xl", children: [
|
|
2104
|
+
(label || title || description) && /* @__PURE__ */ jsx35(SdTextBox.Section, { label, title, description }),
|
|
2105
|
+
/* @__PURE__ */ jsx35(SdSteps.Bubble, { items })
|
|
2087
2106
|
] }) }));
|
|
2088
2107
|
}
|
|
2089
2108
|
|
|
2090
2109
|
// ui/organism/ErrorView.tsx
|
|
2091
2110
|
import { Center as Center4, Group as Group12, Stack as Stack21, Text as Text2 } from "@mantine/core";
|
|
2092
|
-
import { jsx as
|
|
2111
|
+
import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2093
2112
|
function StatusCode({ code }) {
|
|
2094
|
-
return /* @__PURE__ */
|
|
2113
|
+
return /* @__PURE__ */ jsx36(
|
|
2095
2114
|
Text2,
|
|
2096
2115
|
{
|
|
2097
2116
|
fz: 160,
|
|
@@ -2105,15 +2124,15 @@ function StatusCode({ code }) {
|
|
|
2105
2124
|
);
|
|
2106
2125
|
}
|
|
2107
2126
|
function Page({ error, onReset, onHome }) {
|
|
2108
|
-
return /* @__PURE__ */
|
|
2109
|
-
/* @__PURE__ */
|
|
2127
|
+
return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
|
|
2128
|
+
/* @__PURE__ */ jsx36(StatusCode, { code: "500" }),
|
|
2110
2129
|
/* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
|
|
2111
|
-
/* @__PURE__ */
|
|
2112
|
-
/* @__PURE__ */
|
|
2130
|
+
/* @__PURE__ */ jsx36(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
|
|
2131
|
+
/* @__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
2132
|
] }),
|
|
2114
2133
|
/* @__PURE__ */ jsxs22(Group12, { gap: "sm", justify: "center", children: [
|
|
2115
|
-
/* @__PURE__ */
|
|
2116
|
-
onHome && /* @__PURE__ */
|
|
2134
|
+
/* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
|
|
2135
|
+
onHome && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
|
|
2117
2136
|
] })
|
|
2118
2137
|
] }) }) });
|
|
2119
2138
|
}
|
|
@@ -2125,15 +2144,15 @@ function NotFound({
|
|
|
2125
2144
|
},
|
|
2126
2145
|
onBack = () => window.history.back()
|
|
2127
2146
|
}) {
|
|
2128
|
-
return /* @__PURE__ */
|
|
2129
|
-
/* @__PURE__ */
|
|
2147
|
+
return /* @__PURE__ */ jsx36(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx36(SdContainer, { children: /* @__PURE__ */ jsxs22(Stack21, { align: "center", gap: "lg", ta: "center", children: [
|
|
2148
|
+
/* @__PURE__ */ jsx36(StatusCode, { code: "404" }),
|
|
2130
2149
|
/* @__PURE__ */ jsxs22(Stack21, { gap: "sm", align: "center", children: [
|
|
2131
|
-
/* @__PURE__ */
|
|
2132
|
-
/* @__PURE__ */
|
|
2150
|
+
/* @__PURE__ */ jsx36(SdTitle.Section, { children: title }),
|
|
2151
|
+
/* @__PURE__ */ jsx36(SdText.Body, { maw: 480, children: description })
|
|
2133
2152
|
] }),
|
|
2134
2153
|
/* @__PURE__ */ jsxs22(Group12, { gap: "sm", justify: "center", children: [
|
|
2135
|
-
onHome && /* @__PURE__ */
|
|
2136
|
-
onBack && /* @__PURE__ */
|
|
2154
|
+
onHome && /* @__PURE__ */ jsx36(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
|
|
2155
|
+
onBack && /* @__PURE__ */ jsx36(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
|
|
2137
2156
|
] })
|
|
2138
2157
|
] }) }) });
|
|
2139
2158
|
}
|
|
@@ -2173,7 +2192,7 @@ var brandDotTexture = {
|
|
|
2173
2192
|
};
|
|
2174
2193
|
|
|
2175
2194
|
// ui/organism/LoginView.tsx
|
|
2176
|
-
import { Fragment as Fragment6, jsx as
|
|
2195
|
+
import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2177
2196
|
var SOCIAL_META = {
|
|
2178
2197
|
google: { Icon: IconBrandGoogle, label: "\uAD6C\uAE00\uB85C \uB85C\uADF8\uC778" },
|
|
2179
2198
|
kakao: { Icon: IconBrandKakaoTalk, label: "\uCE74\uCE74\uC624\uB85C \uB85C\uADF8\uC778" },
|
|
@@ -2202,9 +2221,9 @@ function LoginForm({
|
|
|
2202
2221
|
remember: data.get("remember") === "on"
|
|
2203
2222
|
});
|
|
2204
2223
|
}
|
|
2205
|
-
return /* @__PURE__ */
|
|
2206
|
-
error && /* @__PURE__ */
|
|
2207
|
-
/* @__PURE__ */
|
|
2224
|
+
return /* @__PURE__ */ jsx37("form", { onSubmit: handleSubmit, noValidate: true, children: /* @__PURE__ */ jsxs23(Stack22, { gap: "md", children: [
|
|
2225
|
+
error && /* @__PURE__ */ jsx37(SdText.Error, { children: error }),
|
|
2226
|
+
/* @__PURE__ */ jsx37(
|
|
2208
2227
|
SdInput.Email,
|
|
2209
2228
|
{
|
|
2210
2229
|
name: "email",
|
|
@@ -2214,7 +2233,7 @@ function LoginForm({
|
|
|
2214
2233
|
required: true
|
|
2215
2234
|
}
|
|
2216
2235
|
),
|
|
2217
|
-
/* @__PURE__ */
|
|
2236
|
+
/* @__PURE__ */ jsx37(
|
|
2218
2237
|
SdInput.Password,
|
|
2219
2238
|
{
|
|
2220
2239
|
name: "password",
|
|
@@ -2225,32 +2244,32 @@ function LoginForm({
|
|
|
2225
2244
|
}
|
|
2226
2245
|
),
|
|
2227
2246
|
(withRemember || findPasswordHref) && /* @__PURE__ */ jsxs23(Group13, { justify: "space-between", align: "center", wrap: "nowrap", children: [
|
|
2228
|
-
withRemember ? /* @__PURE__ */
|
|
2229
|
-
findPasswordHref && /* @__PURE__ */
|
|
2247
|
+
withRemember ? /* @__PURE__ */ jsx37(Checkbox2, { name: "remember", size: "xs", label: "\uC790\uB3D9 \uB85C\uADF8\uC778" }) : /* @__PURE__ */ jsx37("span", {}),
|
|
2248
|
+
findPasswordHref && /* @__PURE__ */ jsx37(SdLink.Sub, { href: findPasswordHref, children: "\uBE44\uBC00\uBC88\uD638\uB97C \uC78A\uC73C\uC168\uB098\uC694?" })
|
|
2230
2249
|
] }),
|
|
2231
|
-
/* @__PURE__ */
|
|
2250
|
+
/* @__PURE__ */ jsx37(
|
|
2232
2251
|
SdButton.Primary,
|
|
2233
2252
|
{
|
|
2234
2253
|
type: "submit",
|
|
2235
2254
|
fullWidth: true,
|
|
2236
2255
|
loading,
|
|
2237
|
-
leftSection: /* @__PURE__ */
|
|
2256
|
+
leftSection: /* @__PURE__ */ jsx37(IconLogin2, { size: 16 }),
|
|
2238
2257
|
children: submitLabel
|
|
2239
2258
|
}
|
|
2240
2259
|
),
|
|
2241
2260
|
socials && socials.length > 0 && /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
2242
|
-
/* @__PURE__ */
|
|
2243
|
-
/* @__PURE__ */
|
|
2261
|
+
/* @__PURE__ */ jsx37(Divider4, { label: "\uB610\uB294", labelPosition: "center" }),
|
|
2262
|
+
/* @__PURE__ */ jsx37(Stack22, { gap: "xs", children: socials.map((social) => {
|
|
2244
2263
|
var _a4;
|
|
2245
2264
|
const { Icon, label } = SOCIAL_META[social.provider];
|
|
2246
|
-
return /* @__PURE__ */
|
|
2265
|
+
return /* @__PURE__ */ jsx37(
|
|
2247
2266
|
SdButton.Outline,
|
|
2248
2267
|
{
|
|
2249
2268
|
color: "slate",
|
|
2250
2269
|
fullWidth: true,
|
|
2251
2270
|
type: "button",
|
|
2252
2271
|
onClick: social.onClick,
|
|
2253
|
-
leftSection: /* @__PURE__ */
|
|
2272
|
+
leftSection: /* @__PURE__ */ jsx37(Icon, { size: 16 }),
|
|
2254
2273
|
children: (_a4 = social.label) != null ? _a4 : label
|
|
2255
2274
|
},
|
|
2256
2275
|
social.provider
|
|
@@ -2258,16 +2277,16 @@ function LoginForm({
|
|
|
2258
2277
|
}) })
|
|
2259
2278
|
] }),
|
|
2260
2279
|
signUpHref && /* @__PURE__ */ jsxs23(Group13, { gap: 6, justify: "center", children: [
|
|
2261
|
-
/* @__PURE__ */
|
|
2262
|
-
/* @__PURE__ */
|
|
2280
|
+
/* @__PURE__ */ jsx37(SdText.Sub, { children: "\uC544\uC9C1 \uACC4\uC815\uC774 \uC5C6\uC73C\uC2E0\uAC00\uC694?" }),
|
|
2281
|
+
/* @__PURE__ */ jsx37(SdLink.Sub, { href: signUpHref, c: "primary.6", children: "\uD68C\uC6D0\uAC00\uC785" })
|
|
2263
2282
|
] }),
|
|
2264
2283
|
children
|
|
2265
2284
|
] }) });
|
|
2266
2285
|
}
|
|
2267
2286
|
function FormHeader({ title, description }) {
|
|
2268
2287
|
return /* @__PURE__ */ jsxs23(Stack22, { gap: "lg", children: [
|
|
2269
|
-
/* @__PURE__ */
|
|
2270
|
-
/* @__PURE__ */
|
|
2288
|
+
/* @__PURE__ */ jsx37(Logo, { size: "sm" }),
|
|
2289
|
+
/* @__PURE__ */ jsx37(SdTextBox.Card, { title, description: description != null ? description : "" })
|
|
2271
2290
|
] });
|
|
2272
2291
|
}
|
|
2273
2292
|
function Card7(_a4) {
|
|
@@ -2280,9 +2299,9 @@ function Card7(_a4) {
|
|
|
2280
2299
|
"description",
|
|
2281
2300
|
"mih"
|
|
2282
2301
|
]);
|
|
2283
|
-
return /* @__PURE__ */
|
|
2284
|
-
/* @__PURE__ */
|
|
2285
|
-
/* @__PURE__ */
|
|
2302
|
+
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: [
|
|
2303
|
+
/* @__PURE__ */ jsx37(FormHeader, { title, description }),
|
|
2304
|
+
/* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
|
|
2286
2305
|
] }) }) });
|
|
2287
2306
|
}
|
|
2288
2307
|
function Split(_a4) {
|
|
@@ -2307,8 +2326,8 @@ function Split(_a4) {
|
|
|
2307
2326
|
pos: "relative",
|
|
2308
2327
|
style: __spreadValues({ overflow: "hidden", display: "flex", alignItems: "flex-end" }, brandSurface),
|
|
2309
2328
|
children: [
|
|
2310
|
-
/* @__PURE__ */
|
|
2311
|
-
/* @__PURE__ */
|
|
2329
|
+
/* @__PURE__ */ jsx37(Box16, { "aria-hidden": true, pos: "absolute", inset: 0, style: brandDotTexture }),
|
|
2330
|
+
/* @__PURE__ */ jsx37(Box16, { pos: "relative", p: 48, style: { zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx37(
|
|
2312
2331
|
SdTextBox.Hero,
|
|
2313
2332
|
{
|
|
2314
2333
|
title: brandTitle,
|
|
@@ -2322,9 +2341,9 @@ function Split(_a4) {
|
|
|
2322
2341
|
]
|
|
2323
2342
|
}
|
|
2324
2343
|
),
|
|
2325
|
-
/* @__PURE__ */
|
|
2326
|
-
/* @__PURE__ */
|
|
2327
|
-
/* @__PURE__ */
|
|
2344
|
+
/* @__PURE__ */ jsx37(Center5, { p: { base: "md", sm: "xl" }, bg: "white", children: /* @__PURE__ */ jsxs23(Stack22, { gap: "xl", w: "100%", maw: 400, children: [
|
|
2345
|
+
/* @__PURE__ */ jsx37(FormHeader, { title, description }),
|
|
2346
|
+
/* @__PURE__ */ jsx37(LoginForm, __spreadValues({}, formProps))
|
|
2328
2347
|
] }) })
|
|
2329
2348
|
] });
|
|
2330
2349
|
}
|
|
@@ -2340,9 +2359,9 @@ var SdLoginViewSplit = SdLoginView.Split;
|
|
|
2340
2359
|
// ui/organism/Result.tsx
|
|
2341
2360
|
import { Box as Box17, Center as Center6, Group as Group14, Stack as Stack23 } from "@mantine/core";
|
|
2342
2361
|
import { IconCircleCheck, IconCircleX } from "@tabler/icons-react";
|
|
2343
|
-
import { jsx as
|
|
2362
|
+
import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2344
2363
|
function ResultIcon({ color, Icon }) {
|
|
2345
|
-
return /* @__PURE__ */
|
|
2364
|
+
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
2365
|
}
|
|
2347
2366
|
function createResult(defaults) {
|
|
2348
2367
|
return function SdResult2({
|
|
@@ -2353,16 +2372,16 @@ function createResult(defaults) {
|
|
|
2353
2372
|
children,
|
|
2354
2373
|
mih = "60vh"
|
|
2355
2374
|
}) {
|
|
2356
|
-
return /* @__PURE__ */
|
|
2357
|
-
/* @__PURE__ */
|
|
2375
|
+
return /* @__PURE__ */ jsx38(Center6, { mih, children: /* @__PURE__ */ jsx38(SdContainer, { children: /* @__PURE__ */ jsxs24(Stack23, { align: "center", gap: "lg", ta: "center", children: [
|
|
2376
|
+
/* @__PURE__ */ jsx38(ResultIcon, { color: defaults.color, Icon: defaults.Icon }),
|
|
2358
2377
|
/* @__PURE__ */ jsxs24(Stack23, { gap: "sm", align: "center", children: [
|
|
2359
|
-
/* @__PURE__ */
|
|
2360
|
-
description && /* @__PURE__ */
|
|
2378
|
+
/* @__PURE__ */ jsx38(SdTitle.Section, { children: title }),
|
|
2379
|
+
description && /* @__PURE__ */ jsx38(SdText.Body, { maw: 480, children: description })
|
|
2361
2380
|
] }),
|
|
2362
|
-
children && /* @__PURE__ */
|
|
2381
|
+
children && /* @__PURE__ */ jsx38(Box17, { children }),
|
|
2363
2382
|
(primaryAction || secondaryAction) && /* @__PURE__ */ jsxs24(Group14, { gap: "sm", justify: "center", children: [
|
|
2364
|
-
primaryAction && /* @__PURE__ */
|
|
2365
|
-
secondaryAction && /* @__PURE__ */
|
|
2383
|
+
primaryAction && /* @__PURE__ */ jsx38(SdButton.Primary, { onClick: primaryAction.onClick, children: primaryAction.label }),
|
|
2384
|
+
secondaryAction && /* @__PURE__ */ jsx38(SdButton.Ghost, { onClick: secondaryAction.onClick, children: secondaryAction.label })
|
|
2366
2385
|
] })
|
|
2367
2386
|
] }) }) });
|
|
2368
2387
|
};
|
|
@@ -2386,7 +2405,7 @@ var SdResultError = SdResult.Error;
|
|
|
2386
2405
|
|
|
2387
2406
|
// ui/template/MainLayout.tsx
|
|
2388
2407
|
import { AppShell } from "@mantine/core";
|
|
2389
|
-
import { jsx as
|
|
2408
|
+
import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2390
2409
|
var headers = {
|
|
2391
2410
|
mega: SdHeader.Mega,
|
|
2392
2411
|
simple: SdHeader.Simple,
|
|
@@ -2401,15 +2420,15 @@ function MainLayout({
|
|
|
2401
2420
|
}) {
|
|
2402
2421
|
const Header = headers[headerVariant];
|
|
2403
2422
|
return /* @__PURE__ */ jsxs25(AppShell, { header: { height: 60 }, children: [
|
|
2404
|
-
/* @__PURE__ */
|
|
2405
|
-
/* @__PURE__ */
|
|
2406
|
-
/* @__PURE__ */
|
|
2423
|
+
/* @__PURE__ */ jsx39(AppShell.Header, { children: /* @__PURE__ */ jsx39(Header, { navItems, loginFlag }) }),
|
|
2424
|
+
/* @__PURE__ */ jsx39(AppShell.Main, { children }),
|
|
2425
|
+
/* @__PURE__ */ jsx39(SdFooter, { company: companyInfo, navItems })
|
|
2407
2426
|
] });
|
|
2408
2427
|
}
|
|
2409
2428
|
|
|
2410
2429
|
// ui/template/PageLayout.tsx
|
|
2411
2430
|
import { Box as Box18, Divider as Divider5, Group as Group15, Space, Stack as Stack24 } from "@mantine/core";
|
|
2412
|
-
import { Fragment as Fragment7, jsx as
|
|
2431
|
+
import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2413
2432
|
var HERO_MIN_H = "38svh";
|
|
2414
2433
|
var HERO_PY = { base: 56, sm: 88 };
|
|
2415
2434
|
var HERO_MAW = 680;
|
|
@@ -2419,14 +2438,13 @@ function Content({
|
|
|
2419
2438
|
breadcrumb = true,
|
|
2420
2439
|
currentHref
|
|
2421
2440
|
}) {
|
|
2422
|
-
const showBreadcrumb = breadcrumb && !!navItems && navItems.length > 0;
|
|
2423
2441
|
return /* @__PURE__ */ jsxs26(SdContainer, { py: "xl", children: [
|
|
2424
|
-
|
|
2425
|
-
/* @__PURE__ */
|
|
2442
|
+
breadcrumb && /* @__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
|
};
|