@yeongseoksong/framework 0.1.0 → 1.0.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 +383 -0
- package/dist/types/index.d.mts +8 -1
- package/dist/types/index.d.ts +8 -1
- package/dist/types/index.js +14 -17
- package/dist/types/index.mjs +14 -17
- package/dist/ui/index.d.mts +105 -6
- package/dist/ui/index.d.ts +105 -6
- package/dist/ui/index.js +526 -394
- package/dist/ui/index.mjs +472 -364
- package/package.json +3 -5
package/dist/ui/index.mjs
CHANGED
|
@@ -125,6 +125,9 @@ var SdTabs = {
|
|
|
125
125
|
}
|
|
126
126
|
})
|
|
127
127
|
};
|
|
128
|
+
var SdTabsPills = SdTabs.Pills;
|
|
129
|
+
var SdTabsUnderline = SdTabs.Underline;
|
|
130
|
+
var SdTabsOutline = SdTabs.Outline;
|
|
128
131
|
|
|
129
132
|
// ui/atom/Title.tsx
|
|
130
133
|
import { Title as MantineTitle } from "@mantine/core";
|
|
@@ -189,6 +192,8 @@ function createButton(defaults) {
|
|
|
189
192
|
var SdButton = {
|
|
190
193
|
/** 주요 액션 — filled primary */
|
|
191
194
|
Primary: createButton({ color: "primary" }),
|
|
195
|
+
/** 보조 액션 — white bg + slate text */
|
|
196
|
+
Secondary: createButton({ variant: "white", color: "slate" }),
|
|
192
197
|
/** 보조 액션 — outline */
|
|
193
198
|
Outline: createButton({ variant: "outline", color: "primary" }),
|
|
194
199
|
/** 텍스트 수준 — subtle */
|
|
@@ -200,6 +205,13 @@ var SdButton = {
|
|
|
200
205
|
/** 취소 — outline slate + X 아이콘 */
|
|
201
206
|
Cancel: createButton({ variant: "outline", color: "slate", leftSection: /* @__PURE__ */ jsx6(IconX, { size: 16 }) })
|
|
202
207
|
};
|
|
208
|
+
var SdButtonPrimary = SdButton.Primary;
|
|
209
|
+
var SdButtonSecondary = SdButton.Secondary;
|
|
210
|
+
var SdButtonOutline = SdButton.Outline;
|
|
211
|
+
var SdButtonGhost = SdButton.Ghost;
|
|
212
|
+
var SdButtonWhite = SdButton.White;
|
|
213
|
+
var SdButtonDelete = SdButton.Delete;
|
|
214
|
+
var SdButtonCancel = SdButton.Cancel;
|
|
203
215
|
|
|
204
216
|
// ui/atom/Quote.tsx
|
|
205
217
|
import { Box as Box2, Card, Center, Group, Stack } from "@mantine/core";
|
|
@@ -367,9 +379,62 @@ var SdInput = {
|
|
|
367
379
|
Select: createSelect({})
|
|
368
380
|
};
|
|
369
381
|
|
|
370
|
-
// ui/
|
|
371
|
-
import { Stack as Stack2 } from "@mantine/core";
|
|
382
|
+
// ui/atom/Skeleton.tsx
|
|
383
|
+
import { Box as Box3, Skeleton as MantineSkeleton, Stack as Stack2 } from "@mantine/core";
|
|
372
384
|
import { jsx as jsx13, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
385
|
+
function SkeletonText(_a) {
|
|
386
|
+
var _b = _a, { width = "100%" } = _b, props = __objRest(_b, ["width"]);
|
|
387
|
+
return /* @__PURE__ */ jsx13(MantineSkeleton, __spreadValues({ height: 14, width, radius: "sm" }, props));
|
|
388
|
+
}
|
|
389
|
+
function SkeletonTitle(_a) {
|
|
390
|
+
var _b = _a, { width = "60%" } = _b, props = __objRest(_b, ["width"]);
|
|
391
|
+
return /* @__PURE__ */ jsx13(MantineSkeleton, __spreadValues({ height: 20, width, radius: "sm" }, props));
|
|
392
|
+
}
|
|
393
|
+
function SkeletonImage(_a) {
|
|
394
|
+
var _b = _a, { height = 200 } = _b, props = __objRest(_b, ["height"]);
|
|
395
|
+
return /* @__PURE__ */ jsx13(MantineSkeleton, __spreadValues({ height, radius: "md" }, props));
|
|
396
|
+
}
|
|
397
|
+
function SkeletonAvatar(_a) {
|
|
398
|
+
var _b = _a, { size = 40 } = _b, props = __objRest(_b, ["size"]);
|
|
399
|
+
return /* @__PURE__ */ jsx13(MantineSkeleton, __spreadValues({ height: size, width: size, circle: true }, props));
|
|
400
|
+
}
|
|
401
|
+
function SkeletonCard({ height, lines = 3 }) {
|
|
402
|
+
return /* @__PURE__ */ jsx13(
|
|
403
|
+
Box3,
|
|
404
|
+
{
|
|
405
|
+
p: "md",
|
|
406
|
+
style: { borderRadius: "var(--mantine-radius-md)", border: "1px solid var(--mantine-color-gray-3)", height },
|
|
407
|
+
children: /* @__PURE__ */ jsxs2(Stack2, { gap: "sm", children: [
|
|
408
|
+
/* @__PURE__ */ jsx13(MantineSkeleton, { height: 20, width: "50%", radius: "sm" }),
|
|
409
|
+
Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx13(
|
|
410
|
+
MantineSkeleton,
|
|
411
|
+
{
|
|
412
|
+
height: 14,
|
|
413
|
+
width: i === lines - 1 ? "70%" : "100%",
|
|
414
|
+
radius: "sm"
|
|
415
|
+
},
|
|
416
|
+
i
|
|
417
|
+
))
|
|
418
|
+
] })
|
|
419
|
+
}
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
var SdSkeleton = {
|
|
423
|
+
Card: SkeletonCard,
|
|
424
|
+
Text: SkeletonText,
|
|
425
|
+
Title: SkeletonTitle,
|
|
426
|
+
Image: SkeletonImage,
|
|
427
|
+
Avatar: SkeletonAvatar
|
|
428
|
+
};
|
|
429
|
+
var SdSkeletonCard = SkeletonCard;
|
|
430
|
+
var SdSkeletonText = SkeletonText;
|
|
431
|
+
var SdSkeletonTitle = SkeletonTitle;
|
|
432
|
+
var SdSkeletonImage = SkeletonImage;
|
|
433
|
+
var SdSkeletonAvatar = SkeletonAvatar;
|
|
434
|
+
|
|
435
|
+
// ui/molecule/TextBox.tsx
|
|
436
|
+
import { Stack as Stack3 } from "@mantine/core";
|
|
437
|
+
import { jsx as jsx14, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
373
438
|
function createTextBox(titleVariant, defaultGap = "xs", descVariant = "Body", color_ = void 0) {
|
|
374
439
|
return function SdTextBox2(_a) {
|
|
375
440
|
var _b = _a, {
|
|
@@ -393,10 +458,10 @@ function createTextBox(titleVariant, defaultGap = "xs", descVariant = "Body", co
|
|
|
393
458
|
const variant = variantOverride != null ? variantOverride : titleVariant;
|
|
394
459
|
const TitleComponent = SdTitle[variant];
|
|
395
460
|
const DescComponent = SdText[descVariant];
|
|
396
|
-
return /* @__PURE__ */
|
|
397
|
-
label && /* @__PURE__ */
|
|
398
|
-
/* @__PURE__ */
|
|
399
|
-
description && /* @__PURE__ */
|
|
461
|
+
return /* @__PURE__ */ jsxs3(Stack3, __spreadProps(__spreadValues({ gap: defaultGap }, stackProps), { children: [
|
|
462
|
+
label && /* @__PURE__ */ jsx14(SdText.Eyebrow, { children: label }),
|
|
463
|
+
/* @__PURE__ */ jsx14(TitleComponent, { c: colorRes, children: title }),
|
|
464
|
+
description && /* @__PURE__ */ jsx14(DescComponent, { c: colorRes, maw: maxDescWidth, mt: 4, children: description }),
|
|
400
465
|
children
|
|
401
466
|
] }));
|
|
402
467
|
};
|
|
@@ -407,9 +472,13 @@ var SdTextBox = {
|
|
|
407
472
|
Card: createTextBox("Card", "xs", "Body"),
|
|
408
473
|
Sub: createTextBox("Sub", "xs", "Sub")
|
|
409
474
|
};
|
|
475
|
+
var SdTextBoxHero = SdTextBox.Hero;
|
|
476
|
+
var SdTextBoxSection = SdTextBox.Section;
|
|
477
|
+
var SdTextBoxCard = SdTextBox.Card;
|
|
478
|
+
var SdTextBoxSub = SdTextBox.Sub;
|
|
410
479
|
|
|
411
480
|
// ui/molecule/Features.tsx
|
|
412
|
-
import { Card as Card2, SimpleGrid, Stack as
|
|
481
|
+
import { Card as Card2, SimpleGrid, Stack as Stack4 } from "@mantine/core";
|
|
413
482
|
|
|
414
483
|
// util/sort.util.ts
|
|
415
484
|
function filterAndSort(items) {
|
|
@@ -417,25 +486,31 @@ function filterAndSort(items) {
|
|
|
417
486
|
}
|
|
418
487
|
|
|
419
488
|
// ui/molecule/Features.tsx
|
|
420
|
-
import { jsx as
|
|
489
|
+
import { jsx as jsx15, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
421
490
|
function SdFeatures({ items, cols = { base: 1, sm: 2, md: 3 } }) {
|
|
422
491
|
const visible = filterAndSort(items);
|
|
423
|
-
return /* @__PURE__ */
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
492
|
+
return /* @__PURE__ */ jsx15(SimpleGrid, { cols, spacing: "xl", children: visible.map((item) => /* @__PURE__ */ jsx15(
|
|
493
|
+
Card2,
|
|
494
|
+
{
|
|
495
|
+
children: /* @__PURE__ */ jsxs4(Stack4, { gap: "sm", children: [
|
|
496
|
+
item.icon,
|
|
497
|
+
/* @__PURE__ */ jsx15(
|
|
498
|
+
SdTextBox.Card,
|
|
499
|
+
{
|
|
500
|
+
label: item.label,
|
|
501
|
+
title: item.title,
|
|
502
|
+
description: item.description
|
|
503
|
+
}
|
|
504
|
+
)
|
|
505
|
+
] }, item.id)
|
|
506
|
+
},
|
|
507
|
+
item.id
|
|
508
|
+
)) });
|
|
434
509
|
}
|
|
435
510
|
|
|
436
511
|
// ui/molecule/Timeline.tsx
|
|
437
|
-
import { Group as Group2, Stack as
|
|
438
|
-
import { jsx as
|
|
512
|
+
import { Group as Group2, Stack as Stack5, Timeline as MantineTimeline } from "@mantine/core";
|
|
513
|
+
import { jsx as jsx16, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
439
514
|
function SdTimeline({ items }) {
|
|
440
515
|
const grouped = items.filter((item) => item.isShow).sort((a, b) => b.year - a.year || b.month - a.month).reduce((acc, item) => {
|
|
441
516
|
var _a, _b;
|
|
@@ -443,19 +518,19 @@ function SdTimeline({ items }) {
|
|
|
443
518
|
return acc;
|
|
444
519
|
}, {});
|
|
445
520
|
const years = Object.keys(grouped).map(Number).sort((a, b) => b - a);
|
|
446
|
-
return /* @__PURE__ */
|
|
521
|
+
return /* @__PURE__ */ jsx16(MantineTimeline, { active: items.length, bulletSize: 24, lineWidth: 2, children: years.map((year) => /* @__PURE__ */ jsx16(
|
|
447
522
|
MantineTimeline.Item,
|
|
448
523
|
{
|
|
449
|
-
title: /* @__PURE__ */
|
|
524
|
+
title: /* @__PURE__ */ jsxs5(SdTitle.Sub, { children: [
|
|
450
525
|
year,
|
|
451
526
|
"\uB144"
|
|
452
527
|
] }),
|
|
453
|
-
children: /* @__PURE__ */
|
|
454
|
-
/* @__PURE__ */
|
|
528
|
+
children: /* @__PURE__ */ jsx16(Stack5, { gap: 6, mt: "xs", children: grouped[year].map((event) => /* @__PURE__ */ jsxs5(Group2, { gap: "md", align: "center", wrap: "nowrap", children: [
|
|
529
|
+
/* @__PURE__ */ jsxs5(SdText.Eyebrow, { miw: 28, children: [
|
|
455
530
|
event.month,
|
|
456
531
|
"\uC6D4"
|
|
457
532
|
] }),
|
|
458
|
-
/* @__PURE__ */
|
|
533
|
+
/* @__PURE__ */ jsx16(SdText.Sub, { style: { flex: 1 }, children: event.description })
|
|
459
534
|
] }, event.id)) })
|
|
460
535
|
},
|
|
461
536
|
year
|
|
@@ -463,26 +538,26 @@ function SdTimeline({ items }) {
|
|
|
463
538
|
}
|
|
464
539
|
|
|
465
540
|
// ui/molecule/Steps.tsx
|
|
466
|
-
import { Box as
|
|
541
|
+
import { Box as Box4, Card as Card3, Group as Group3, Stack as Stack6, ThemeIcon as ThemeIcon2 } from "@mantine/core";
|
|
467
542
|
import { IconArrowDown, IconArrowRight } from "@tabler/icons-react";
|
|
468
543
|
import { Fragment } from "react/jsx-runtime";
|
|
469
|
-
import { Fragment as Fragment2, jsx as
|
|
544
|
+
import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
470
545
|
function BubbleStep({ item, index, isLast }) {
|
|
471
|
-
return /* @__PURE__ */
|
|
472
|
-
/* @__PURE__ */
|
|
473
|
-
/* @__PURE__ */
|
|
474
|
-
!isLast && /* @__PURE__ */
|
|
546
|
+
return /* @__PURE__ */ jsxs6(Group3, { align: "flex-start", gap: "lg", wrap: "nowrap", children: [
|
|
547
|
+
/* @__PURE__ */ jsxs6(Box4, { style: { display: "flex", flexDirection: "column", alignItems: "center", flexShrink: 0 }, children: [
|
|
548
|
+
/* @__PURE__ */ jsx17(SdNumberIcon, { value: String(index + 1).padStart(2, "0") }),
|
|
549
|
+
!isLast && /* @__PURE__ */ jsx17(Box4, { style: { width: 2, flex: 1, minHeight: 32, marginTop: 8, background: "var(--mantine-color-primary-2)" } })
|
|
475
550
|
] }),
|
|
476
|
-
/* @__PURE__ */
|
|
551
|
+
/* @__PURE__ */ jsx17(SdTextBox.Card, { title: item.title, description: item.description, pb: !isLast ? "xl" : 0, pt: 4 })
|
|
477
552
|
] });
|
|
478
553
|
}
|
|
479
554
|
function Bubble({ items }) {
|
|
480
|
-
return /* @__PURE__ */
|
|
555
|
+
return /* @__PURE__ */ jsx17(Box4, { children: items.map((item, i) => /* @__PURE__ */ jsx17(BubbleStep, { item, index: i, isLast: i === items.length - 1 }, i)) });
|
|
481
556
|
}
|
|
482
557
|
function CardStep({ item, index }) {
|
|
483
|
-
return /* @__PURE__ */
|
|
484
|
-
/* @__PURE__ */
|
|
485
|
-
|
|
558
|
+
return /* @__PURE__ */ jsxs6(Card3, { withBorder: true, radius: "md", p: 0, style: { height: "100%", overflow: "hidden" }, children: [
|
|
559
|
+
/* @__PURE__ */ jsx17(
|
|
560
|
+
Box4,
|
|
486
561
|
{
|
|
487
562
|
py: "lg",
|
|
488
563
|
style: {
|
|
@@ -490,62 +565,62 @@ function CardStep({ item, index }) {
|
|
|
490
565
|
justifyContent: "center",
|
|
491
566
|
background: "var(--mantine-color-primary-0)"
|
|
492
567
|
},
|
|
493
|
-
children: /* @__PURE__ */
|
|
568
|
+
children: /* @__PURE__ */ jsxs6(SdText.Eyebrow, { children: [
|
|
494
569
|
"STEP ",
|
|
495
570
|
String(index + 1).padStart(2, "0")
|
|
496
571
|
] })
|
|
497
572
|
}
|
|
498
573
|
),
|
|
499
|
-
/* @__PURE__ */
|
|
574
|
+
/* @__PURE__ */ jsx17(Box4, { p: "lg", style: { textAlign: "center" }, children: /* @__PURE__ */ jsx17(SdTextBox.Card, { title: item.title, description: item.description }) })
|
|
500
575
|
] });
|
|
501
576
|
}
|
|
502
577
|
function CardArrow({ direction }) {
|
|
503
|
-
return /* @__PURE__ */
|
|
578
|
+
return /* @__PURE__ */ jsx17(ThemeIcon2, { size: 36, radius: "xl", variant: "light", color: "primary", children: direction === "right" ? /* @__PURE__ */ jsx17(IconArrowRight, { size: 20, stroke: 2.5 }) : /* @__PURE__ */ jsx17(IconArrowDown, { size: 20, stroke: 2.5 }) });
|
|
504
579
|
}
|
|
505
580
|
function CardVariant({ items }) {
|
|
506
|
-
return /* @__PURE__ */
|
|
507
|
-
/* @__PURE__ */
|
|
508
|
-
/* @__PURE__ */
|
|
509
|
-
i < items.length - 1 && /* @__PURE__ */
|
|
581
|
+
return /* @__PURE__ */ jsxs6(Fragment2, { children: [
|
|
582
|
+
/* @__PURE__ */ jsx17(Stack6, { gap: "sm", hiddenFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
583
|
+
/* @__PURE__ */ jsx17(CardStep, { item, index: i }),
|
|
584
|
+
i < items.length - 1 && /* @__PURE__ */ jsx17(Box4, { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx17(CardArrow, { direction: "down" }) })
|
|
510
585
|
] }, i)) }),
|
|
511
|
-
/* @__PURE__ */
|
|
512
|
-
/* @__PURE__ */
|
|
513
|
-
i < items.length - 1 && /* @__PURE__ */
|
|
586
|
+
/* @__PURE__ */ jsx17(Group3, { wrap: "nowrap", align: "stretch", gap: 0, visibleFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
587
|
+
/* @__PURE__ */ jsx17(Box4, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsx17(CardStep, { item, index: i }) }),
|
|
588
|
+
i < items.length - 1 && /* @__PURE__ */ jsx17(Box4, { style: { display: "flex", alignItems: "center", padding: "0 8px" }, children: /* @__PURE__ */ jsx17(CardArrow, { direction: "right" }) })
|
|
514
589
|
] }, i)) })
|
|
515
590
|
] });
|
|
516
591
|
}
|
|
517
592
|
function StripStep({ item, index }) {
|
|
518
|
-
return /* @__PURE__ */
|
|
519
|
-
/* @__PURE__ */
|
|
593
|
+
return /* @__PURE__ */ jsx17(Box4, { pl: "md", style: { borderLeft: "3px solid var(--mantine-color-primary-6)" }, children: /* @__PURE__ */ jsxs6(Stack6, { gap: 4, children: [
|
|
594
|
+
/* @__PURE__ */ jsxs6(SdText.Eyebrow, { children: [
|
|
520
595
|
"STEP ",
|
|
521
596
|
String(index + 1).padStart(2, "0")
|
|
522
597
|
] }),
|
|
523
|
-
/* @__PURE__ */
|
|
598
|
+
/* @__PURE__ */ jsx17(SdTextBox.Card, { title: item.title, description: item.description })
|
|
524
599
|
] }) });
|
|
525
600
|
}
|
|
526
601
|
function Strip({ items }) {
|
|
527
|
-
return /* @__PURE__ */
|
|
602
|
+
return /* @__PURE__ */ jsx17(Stack6, { gap: "xl", children: items.map((item, i) => /* @__PURE__ */ jsx17(StripStep, { item, index: i }, i)) });
|
|
528
603
|
}
|
|
529
604
|
var SdSteps = { Bubble, Card: CardVariant, Strip };
|
|
530
605
|
|
|
531
606
|
// ui/molecule/Testimonial.tsx
|
|
532
607
|
import {
|
|
533
608
|
Avatar,
|
|
534
|
-
Box as
|
|
609
|
+
Box as Box5,
|
|
535
610
|
Card as Card4,
|
|
536
611
|
Group as Group4,
|
|
537
612
|
Rating,
|
|
538
613
|
SimpleGrid as SimpleGrid2,
|
|
539
|
-
Stack as
|
|
614
|
+
Stack as Stack7
|
|
540
615
|
} from "@mantine/core";
|
|
541
|
-
import { jsx as
|
|
616
|
+
import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
542
617
|
function AuthorRow({ item }) {
|
|
543
|
-
return /* @__PURE__ */
|
|
544
|
-
item.avatar && /* @__PURE__ */
|
|
545
|
-
!item.avatar && /* @__PURE__ */
|
|
546
|
-
/* @__PURE__ */
|
|
547
|
-
/* @__PURE__ */
|
|
548
|
-
/* @__PURE__ */
|
|
618
|
+
return /* @__PURE__ */ jsxs7(Group4, { gap: "sm", wrap: "nowrap", children: [
|
|
619
|
+
item.avatar && /* @__PURE__ */ jsx18(Avatar, { src: item.avatar, size: "md", radius: "xl" }),
|
|
620
|
+
!item.avatar && /* @__PURE__ */ jsx18(Avatar, { size: "md", radius: "xl", color: "primary", children: item.name.charAt(0) }),
|
|
621
|
+
/* @__PURE__ */ jsxs7(Stack7, { gap: 0, children: [
|
|
622
|
+
/* @__PURE__ */ jsx18(SdText.Strong, { fz: "sm", children: item.name }),
|
|
623
|
+
/* @__PURE__ */ jsxs7(SdText.Sub, { children: [
|
|
549
624
|
item.role,
|
|
550
625
|
item.company ? ` \xB7 ${item.company}` : ""
|
|
551
626
|
] })
|
|
@@ -554,28 +629,28 @@ function AuthorRow({ item }) {
|
|
|
554
629
|
}
|
|
555
630
|
function CardTestimonial(_a) {
|
|
556
631
|
var _b = _a, { item } = _b, boxProps = __objRest(_b, ["item"]);
|
|
557
|
-
return /* @__PURE__ */
|
|
558
|
-
item.rating && /* @__PURE__ */
|
|
559
|
-
/* @__PURE__ */
|
|
560
|
-
/* @__PURE__ */
|
|
561
|
-
item.lines.map((line, i) => /* @__PURE__ */
|
|
632
|
+
return /* @__PURE__ */ jsx18(Card4, __spreadProps(__spreadValues({ h: "100%" }, boxProps), { children: /* @__PURE__ */ jsxs7(Stack7, { gap: "md", h: "100%", children: [
|
|
633
|
+
item.rating && /* @__PURE__ */ jsx18(Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
|
|
634
|
+
/* @__PURE__ */ jsxs7(Stack7, { gap: "xs", style: { flex: 1 }, children: [
|
|
635
|
+
/* @__PURE__ */ jsx18(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
|
|
636
|
+
item.lines.map((line, i) => /* @__PURE__ */ jsx18(SdText.Body, { children: line }, i))
|
|
562
637
|
] }),
|
|
563
|
-
/* @__PURE__ */
|
|
638
|
+
/* @__PURE__ */ jsx18(AuthorRow, { item })
|
|
564
639
|
] }) }));
|
|
565
640
|
}
|
|
566
641
|
function Strip2(_a) {
|
|
567
642
|
var _b = _a, { item } = _b, boxProps = __objRest(_b, ["item"]);
|
|
568
|
-
return /* @__PURE__ */
|
|
569
|
-
item.rating && /* @__PURE__ */
|
|
570
|
-
/* @__PURE__ */
|
|
571
|
-
/* @__PURE__ */
|
|
572
|
-
/* @__PURE__ */
|
|
643
|
+
return /* @__PURE__ */ jsx18(Box5, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs7(Stack7, { gap: "md", children: [
|
|
644
|
+
item.rating && /* @__PURE__ */ jsx18(Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
|
|
645
|
+
/* @__PURE__ */ jsxs7(Group4, { gap: 4, align: "flex-start", children: [
|
|
646
|
+
/* @__PURE__ */ jsx18(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
|
|
647
|
+
/* @__PURE__ */ jsx18(Stack7, { gap: "xs", style: { flex: 1 }, children: item.lines.map((line, i) => /* @__PURE__ */ jsx18(SdText.Body, { children: line }, i)) })
|
|
573
648
|
] }),
|
|
574
|
-
/* @__PURE__ */
|
|
649
|
+
/* @__PURE__ */ jsx18(AuthorRow, { item })
|
|
575
650
|
] }) }));
|
|
576
651
|
}
|
|
577
652
|
function Grid({ items, cols = { base: 1, sm: 2, md: 3 } }) {
|
|
578
|
-
return /* @__PURE__ */
|
|
653
|
+
return /* @__PURE__ */ jsx18(SimpleGrid2, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map((item, i) => /* @__PURE__ */ jsx18(CardTestimonial, { item }, i)) });
|
|
579
654
|
}
|
|
580
655
|
var SdTestimonial = {
|
|
581
656
|
/** 카드형 — 그리드 배치용 */
|
|
@@ -592,48 +667,48 @@ import {
|
|
|
592
667
|
Divider,
|
|
593
668
|
Group as Group5,
|
|
594
669
|
SimpleGrid as SimpleGrid3,
|
|
595
|
-
Stack as
|
|
670
|
+
Stack as Stack8,
|
|
596
671
|
ThemeIcon as ThemeIcon3
|
|
597
672
|
} from "@mantine/core";
|
|
598
673
|
import { IconCheck, IconX as IconX2 } from "@tabler/icons-react";
|
|
599
|
-
import { jsx as
|
|
674
|
+
import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
600
675
|
function Default(_a) {
|
|
601
676
|
var _b = _a, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
|
|
602
677
|
var _a2;
|
|
603
|
-
return /* @__PURE__ */
|
|
678
|
+
return /* @__PURE__ */ jsx19(
|
|
604
679
|
Card5,
|
|
605
680
|
__spreadProps(__spreadValues({
|
|
606
681
|
withBorder: true,
|
|
607
682
|
style: { position: "relative" }
|
|
608
683
|
}, cardProps), {
|
|
609
|
-
children: /* @__PURE__ */
|
|
610
|
-
/* @__PURE__ */
|
|
611
|
-
/* @__PURE__ */
|
|
612
|
-
/* @__PURE__ */
|
|
613
|
-
item.isPopular && /* @__PURE__ */
|
|
684
|
+
children: /* @__PURE__ */ jsxs8(Stack8, { gap: "xl", children: [
|
|
685
|
+
/* @__PURE__ */ jsxs8(Stack8, { gap: "xs", children: [
|
|
686
|
+
/* @__PURE__ */ jsxs8(Group5, { justify: "space-between", align: "flex-start", children: [
|
|
687
|
+
/* @__PURE__ */ jsx19(SdTitle.Card, { children: item.name }),
|
|
688
|
+
item.isPopular && /* @__PURE__ */ jsx19(SdBadge.Primary, { children: "\uCD94\uCC9C" })
|
|
614
689
|
] }),
|
|
615
|
-
item.description && /* @__PURE__ */
|
|
690
|
+
item.description && /* @__PURE__ */ jsx19(SdText.Sub, { children: item.description })
|
|
616
691
|
] }),
|
|
617
|
-
/* @__PURE__ */
|
|
618
|
-
/* @__PURE__ */
|
|
619
|
-
item.period && /* @__PURE__ */
|
|
692
|
+
/* @__PURE__ */ jsxs8(Group5, { gap: 4, align: "baseline", children: [
|
|
693
|
+
/* @__PURE__ */ jsx19(SdTitle.Display, { children: item.price }),
|
|
694
|
+
item.period && /* @__PURE__ */ jsxs8(SdText.Sub, { children: [
|
|
620
695
|
"/ ",
|
|
621
696
|
item.period
|
|
622
697
|
] })
|
|
623
698
|
] }),
|
|
624
|
-
/* @__PURE__ */
|
|
625
|
-
/* @__PURE__ */
|
|
626
|
-
/* @__PURE__ */
|
|
699
|
+
/* @__PURE__ */ jsx19(Divider, {}),
|
|
700
|
+
/* @__PURE__ */ jsx19(Stack8, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ jsxs8(Group5, { gap: "sm", wrap: "nowrap", children: [
|
|
701
|
+
/* @__PURE__ */ jsx19(
|
|
627
702
|
ThemeIcon3,
|
|
628
703
|
{
|
|
629
704
|
size: "xs",
|
|
630
705
|
radius: "xl",
|
|
631
706
|
color: f.included ? "primary" : "slate",
|
|
632
707
|
variant: f.included ? "filled" : "subtle",
|
|
633
|
-
children: f.included ? /* @__PURE__ */
|
|
708
|
+
children: f.included ? /* @__PURE__ */ jsx19(IconCheck, { size: 12 }) : /* @__PURE__ */ jsx19(IconX2, { size: 12 })
|
|
634
709
|
}
|
|
635
710
|
),
|
|
636
|
-
/* @__PURE__ */
|
|
711
|
+
/* @__PURE__ */ jsx19(
|
|
637
712
|
SdText.Body,
|
|
638
713
|
{
|
|
639
714
|
fz: "sm",
|
|
@@ -642,7 +717,7 @@ function Default(_a) {
|
|
|
642
717
|
}
|
|
643
718
|
)
|
|
644
719
|
] }, i)) }),
|
|
645
|
-
/* @__PURE__ */
|
|
720
|
+
/* @__PURE__ */ jsx19(SdButton.Outline, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a2 = item.ctaLabel) != null ? _a2 : "\uC2DC\uC791\uD558\uAE30" })
|
|
646
721
|
] })
|
|
647
722
|
})
|
|
648
723
|
);
|
|
@@ -650,40 +725,40 @@ function Default(_a) {
|
|
|
650
725
|
function Featured(_a) {
|
|
651
726
|
var _b = _a, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
|
|
652
727
|
var _a2;
|
|
653
|
-
return /* @__PURE__ */
|
|
728
|
+
return /* @__PURE__ */ jsx19(
|
|
654
729
|
Card5,
|
|
655
730
|
__spreadProps(__spreadValues({
|
|
656
731
|
bg: "primary.6",
|
|
657
732
|
style: { position: "relative" }
|
|
658
733
|
}, cardProps), {
|
|
659
|
-
children: /* @__PURE__ */
|
|
660
|
-
/* @__PURE__ */
|
|
661
|
-
/* @__PURE__ */
|
|
662
|
-
/* @__PURE__ */
|
|
663
|
-
item.isPopular && /* @__PURE__ */
|
|
734
|
+
children: /* @__PURE__ */ jsxs8(Stack8, { gap: "xl", children: [
|
|
735
|
+
/* @__PURE__ */ jsxs8(Stack8, { gap: "xs", children: [
|
|
736
|
+
/* @__PURE__ */ jsxs8(Group5, { justify: "space-between", align: "flex-start", children: [
|
|
737
|
+
/* @__PURE__ */ jsx19(SdTitle.Card, { c: "white", children: item.name }),
|
|
738
|
+
item.isPopular && /* @__PURE__ */ jsx19(SdBadge.Default, { c: "white", style: { borderColor: "rgba(255,255,255,0.5)" }, children: "\uCD94\uCC9C" })
|
|
664
739
|
] }),
|
|
665
|
-
item.description && /* @__PURE__ */
|
|
740
|
+
item.description && /* @__PURE__ */ jsx19(SdText.Body, { c: "primary.1", children: item.description })
|
|
666
741
|
] }),
|
|
667
|
-
/* @__PURE__ */
|
|
668
|
-
/* @__PURE__ */
|
|
669
|
-
item.period && /* @__PURE__ */
|
|
742
|
+
/* @__PURE__ */ jsxs8(Group5, { gap: 4, align: "baseline", children: [
|
|
743
|
+
/* @__PURE__ */ jsx19(SdTitle.Display, { c: "white", children: item.price }),
|
|
744
|
+
item.period && /* @__PURE__ */ jsxs8(SdText.Body, { c: "primary.2", children: [
|
|
670
745
|
"/ ",
|
|
671
746
|
item.period
|
|
672
747
|
] })
|
|
673
748
|
] }),
|
|
674
|
-
/* @__PURE__ */
|
|
675
|
-
/* @__PURE__ */
|
|
676
|
-
/* @__PURE__ */
|
|
749
|
+
/* @__PURE__ */ jsx19(Divider, { color: "primary.4" }),
|
|
750
|
+
/* @__PURE__ */ jsx19(Stack8, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ jsxs8(Group5, { gap: "sm", wrap: "nowrap", children: [
|
|
751
|
+
/* @__PURE__ */ jsx19(
|
|
677
752
|
ThemeIcon3,
|
|
678
753
|
{
|
|
679
754
|
size: "xs",
|
|
680
755
|
radius: "xl",
|
|
681
756
|
color: "white",
|
|
682
757
|
variant: f.included ? "filled" : "subtle",
|
|
683
|
-
children: f.included ? /* @__PURE__ */
|
|
758
|
+
children: f.included ? /* @__PURE__ */ jsx19(IconCheck, { size: 12, color: "var(--mantine-color-primary-6)" }) : /* @__PURE__ */ jsx19(IconX2, { size: 12, color: "rgba(255,255,255,0.4)" })
|
|
684
759
|
}
|
|
685
760
|
),
|
|
686
|
-
/* @__PURE__ */
|
|
761
|
+
/* @__PURE__ */ jsx19(
|
|
687
762
|
SdText.Body,
|
|
688
763
|
{
|
|
689
764
|
fz: "sm",
|
|
@@ -692,14 +767,14 @@ function Featured(_a) {
|
|
|
692
767
|
}
|
|
693
768
|
)
|
|
694
769
|
] }, i)) }),
|
|
695
|
-
/* @__PURE__ */
|
|
770
|
+
/* @__PURE__ */ jsx19(SdButton.White, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a2 = item.ctaLabel) != null ? _a2 : "\uC2DC\uC791\uD558\uAE30" })
|
|
696
771
|
] })
|
|
697
772
|
})
|
|
698
773
|
);
|
|
699
774
|
}
|
|
700
775
|
function Grid2({ items, cols = { base: 1, sm: 2, md: 3 }, onSelect }) {
|
|
701
|
-
return /* @__PURE__ */
|
|
702
|
-
(item, i) => item.isPopular ? /* @__PURE__ */
|
|
776
|
+
return /* @__PURE__ */ jsx19(SimpleGrid3, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map(
|
|
777
|
+
(item, i) => item.isPopular ? /* @__PURE__ */ jsx19(Featured, { item, onSelect }, i) : /* @__PURE__ */ jsx19(Default, { item, onSelect }, i)
|
|
703
778
|
) });
|
|
704
779
|
}
|
|
705
780
|
var SdPricingCard = {
|
|
@@ -712,31 +787,31 @@ var SdPricingCard = {
|
|
|
712
787
|
};
|
|
713
788
|
|
|
714
789
|
// ui/molecule/Faq.tsx
|
|
715
|
-
import { Accordion, Box as
|
|
716
|
-
import { jsx as
|
|
790
|
+
import { Accordion, Box as Box7, Stack as Stack9 } from "@mantine/core";
|
|
791
|
+
import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
717
792
|
function Default2(_a) {
|
|
718
793
|
var _b = _a, { items } = _b, boxProps = __objRest(_b, ["items"]);
|
|
719
|
-
return /* @__PURE__ */
|
|
720
|
-
/* @__PURE__ */
|
|
721
|
-
/* @__PURE__ */
|
|
794
|
+
return /* @__PURE__ */ jsx20(Box7, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsx20(Accordion, { variant: "separated", radius: "md", children: items.map((item, i) => /* @__PURE__ */ jsxs9(Accordion.Item, { value: String(i), children: [
|
|
795
|
+
/* @__PURE__ */ jsx20(Accordion.Control, { children: /* @__PURE__ */ jsx20(SdText.Strong, { fz: "sm", children: item.question }) }),
|
|
796
|
+
/* @__PURE__ */ jsx20(Accordion.Panel, { children: /* @__PURE__ */ jsx20(SdText.Body, { fz: "sm", children: item.answer }) })
|
|
722
797
|
] }, i)) }) }));
|
|
723
798
|
}
|
|
724
799
|
function Filled(_a) {
|
|
725
800
|
var _b = _a, { items } = _b, boxProps = __objRest(_b, ["items"]);
|
|
726
|
-
return /* @__PURE__ */
|
|
727
|
-
/* @__PURE__ */
|
|
728
|
-
/* @__PURE__ */
|
|
801
|
+
return /* @__PURE__ */ jsx20(Box7, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsx20(Accordion, { variant: "filled", radius: "md", children: items.map((item, i) => /* @__PURE__ */ jsxs9(Accordion.Item, { value: String(i), children: [
|
|
802
|
+
/* @__PURE__ */ jsx20(Accordion.Control, { children: /* @__PURE__ */ jsx20(SdText.Strong, { fz: "sm", children: item.question }) }),
|
|
803
|
+
/* @__PURE__ */ jsx20(Accordion.Panel, { children: /* @__PURE__ */ jsx20(SdText.Body, { fz: "sm", children: item.answer }) })
|
|
729
804
|
] }, i)) }) }));
|
|
730
805
|
}
|
|
731
806
|
function WithHeader(_a) {
|
|
732
807
|
var _b = _a, { label, title, description, items } = _b, boxProps = __objRest(_b, ["label", "title", "description", "items"]);
|
|
733
|
-
return /* @__PURE__ */
|
|
734
|
-
/* @__PURE__ */
|
|
735
|
-
label && /* @__PURE__ */
|
|
736
|
-
/* @__PURE__ */
|
|
737
|
-
description && /* @__PURE__ */
|
|
808
|
+
return /* @__PURE__ */ jsxs9(Stack9, __spreadProps(__spreadValues({ gap: "xl" }, boxProps), { children: [
|
|
809
|
+
/* @__PURE__ */ jsxs9(Stack9, { gap: "xs", children: [
|
|
810
|
+
label && /* @__PURE__ */ jsx20(SdText.Eyebrow, { children: label }),
|
|
811
|
+
/* @__PURE__ */ jsx20(SdTitle.Section, { children: title }),
|
|
812
|
+
description && /* @__PURE__ */ jsx20(SdText.Body, { children: description })
|
|
738
813
|
] }),
|
|
739
|
-
/* @__PURE__ */
|
|
814
|
+
/* @__PURE__ */ jsx20(Default2, { items })
|
|
740
815
|
] }));
|
|
741
816
|
}
|
|
742
817
|
var SdFaq = {
|
|
@@ -749,8 +824,8 @@ var SdFaq = {
|
|
|
749
824
|
};
|
|
750
825
|
|
|
751
826
|
// ui/molecule/Cta.tsx
|
|
752
|
-
import { Box as
|
|
753
|
-
import { jsx as
|
|
827
|
+
import { Box as Box8, Center as Center2, Group as Group6, Stack as Stack10 } from "@mantine/core";
|
|
828
|
+
import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
754
829
|
function Banner(_a) {
|
|
755
830
|
var _b = _a, {
|
|
756
831
|
label,
|
|
@@ -769,22 +844,22 @@ function Banner(_a) {
|
|
|
769
844
|
"onPrimary",
|
|
770
845
|
"onSecondary"
|
|
771
846
|
]);
|
|
772
|
-
return /* @__PURE__ */
|
|
773
|
-
|
|
847
|
+
return /* @__PURE__ */ jsx21(
|
|
848
|
+
Box8,
|
|
774
849
|
__spreadProps(__spreadValues({
|
|
775
850
|
bg: "primary.7",
|
|
776
851
|
py: { base: "xl", md: 80 },
|
|
777
852
|
px: { base: "md", md: "xl" }
|
|
778
853
|
}, boxProps), {
|
|
779
|
-
children: /* @__PURE__ */
|
|
780
|
-
/* @__PURE__ */
|
|
781
|
-
label && /* @__PURE__ */
|
|
782
|
-
/* @__PURE__ */
|
|
783
|
-
description && /* @__PURE__ */
|
|
854
|
+
children: /* @__PURE__ */ jsx21(Center2, { children: /* @__PURE__ */ jsxs10(Stack10, { gap: "xl", align: "center", maw: 600, children: [
|
|
855
|
+
/* @__PURE__ */ jsxs10(Stack10, { gap: "sm", align: "center", children: [
|
|
856
|
+
label && /* @__PURE__ */ jsx21(SdText.Eyebrow, { c: "primary.3", children: label }),
|
|
857
|
+
/* @__PURE__ */ jsx21(SdTitle.Section, { c: "white", ta: "center", children: title }),
|
|
858
|
+
description && /* @__PURE__ */ jsx21(SdText.Body, { c: "primary.2", ta: "center", children: description })
|
|
784
859
|
] }),
|
|
785
|
-
/* @__PURE__ */
|
|
786
|
-
/* @__PURE__ */
|
|
787
|
-
secondaryLabel && /* @__PURE__ */
|
|
860
|
+
/* @__PURE__ */ jsxs10(Group6, { gap: "sm", children: [
|
|
861
|
+
/* @__PURE__ */ jsx21(SdButton.White, { size: "md", onClick: onPrimary, children: primaryLabel }),
|
|
862
|
+
secondaryLabel && /* @__PURE__ */ jsx21(
|
|
788
863
|
SdButton.Ghost,
|
|
789
864
|
{
|
|
790
865
|
size: "md",
|
|
@@ -816,23 +891,23 @@ function Subtle(_a) {
|
|
|
816
891
|
"onPrimary",
|
|
817
892
|
"onSecondary"
|
|
818
893
|
]);
|
|
819
|
-
return /* @__PURE__ */
|
|
820
|
-
|
|
894
|
+
return /* @__PURE__ */ jsx21(
|
|
895
|
+
Box8,
|
|
821
896
|
__spreadProps(__spreadValues({
|
|
822
897
|
bg: "primary.0",
|
|
823
898
|
py: { base: "xl", md: 60 },
|
|
824
899
|
px: { base: "md", md: "xl" },
|
|
825
900
|
style: { borderRadius: "var(--mantine-radius-lg)" }
|
|
826
901
|
}, boxProps), {
|
|
827
|
-
children: /* @__PURE__ */
|
|
828
|
-
/* @__PURE__ */
|
|
829
|
-
label && /* @__PURE__ */
|
|
830
|
-
/* @__PURE__ */
|
|
831
|
-
description && /* @__PURE__ */
|
|
902
|
+
children: /* @__PURE__ */ jsx21(Center2, { children: /* @__PURE__ */ jsxs10(Stack10, { gap: "lg", align: "center", maw: 560, children: [
|
|
903
|
+
/* @__PURE__ */ jsxs10(Stack10, { gap: "sm", align: "center", children: [
|
|
904
|
+
label && /* @__PURE__ */ jsx21(SdText.Eyebrow, { children: label }),
|
|
905
|
+
/* @__PURE__ */ jsx21(SdTitle.Section, { ta: "center", children: title }),
|
|
906
|
+
description && /* @__PURE__ */ jsx21(SdText.Body, { ta: "center", children: description })
|
|
832
907
|
] }),
|
|
833
|
-
/* @__PURE__ */
|
|
834
|
-
/* @__PURE__ */
|
|
835
|
-
secondaryLabel && /* @__PURE__ */
|
|
908
|
+
/* @__PURE__ */ jsxs10(Group6, { gap: "sm", children: [
|
|
909
|
+
/* @__PURE__ */ jsx21(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
|
|
910
|
+
secondaryLabel && /* @__PURE__ */ jsx21(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
|
|
836
911
|
] })
|
|
837
912
|
] }) })
|
|
838
913
|
})
|
|
@@ -856,8 +931,8 @@ function Inline(_a) {
|
|
|
856
931
|
"onPrimary",
|
|
857
932
|
"onSecondary"
|
|
858
933
|
]);
|
|
859
|
-
return /* @__PURE__ */
|
|
860
|
-
|
|
934
|
+
return /* @__PURE__ */ jsx21(
|
|
935
|
+
Box8,
|
|
861
936
|
__spreadProps(__spreadValues({
|
|
862
937
|
py: { base: "xl", md: 48 },
|
|
863
938
|
px: { base: "md", md: "xl" },
|
|
@@ -866,15 +941,15 @@ function Inline(_a) {
|
|
|
866
941
|
borderBottom: "1px solid var(--mantine-color-slate-2)"
|
|
867
942
|
}
|
|
868
943
|
}, boxProps), {
|
|
869
|
-
children: /* @__PURE__ */
|
|
870
|
-
/* @__PURE__ */
|
|
871
|
-
label && /* @__PURE__ */
|
|
872
|
-
/* @__PURE__ */
|
|
873
|
-
description && /* @__PURE__ */
|
|
944
|
+
children: /* @__PURE__ */ jsxs10(Group6, { justify: "space-between", align: "center", gap: "xl", children: [
|
|
945
|
+
/* @__PURE__ */ jsxs10(Stack10, { gap: "xs", style: { flex: 1 }, children: [
|
|
946
|
+
label && /* @__PURE__ */ jsx21(SdText.Eyebrow, { children: label }),
|
|
947
|
+
/* @__PURE__ */ jsx21(SdTitle.Card, { children: title }),
|
|
948
|
+
description && /* @__PURE__ */ jsx21(SdText.Sub, { children: description })
|
|
874
949
|
] }),
|
|
875
|
-
/* @__PURE__ */
|
|
876
|
-
/* @__PURE__ */
|
|
877
|
-
secondaryLabel && /* @__PURE__ */
|
|
950
|
+
/* @__PURE__ */ jsxs10(Group6, { gap: "sm", wrap: "nowrap", children: [
|
|
951
|
+
/* @__PURE__ */ jsx21(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
|
|
952
|
+
secondaryLabel && /* @__PURE__ */ jsx21(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
|
|
878
953
|
] })
|
|
879
954
|
] })
|
|
880
955
|
})
|
|
@@ -895,7 +970,7 @@ import {
|
|
|
895
970
|
Button as Button2,
|
|
896
971
|
Divider as Divider2,
|
|
897
972
|
Group as Group7,
|
|
898
|
-
Stack as
|
|
973
|
+
Stack as Stack12,
|
|
899
974
|
ThemeIcon as ThemeIcon4
|
|
900
975
|
} from "@mantine/core";
|
|
901
976
|
import Link3 from "next/link";
|
|
@@ -905,29 +980,29 @@ import {
|
|
|
905
980
|
Button,
|
|
906
981
|
Card as Card6,
|
|
907
982
|
SimpleGrid as SimpleGrid4,
|
|
908
|
-
Stack as
|
|
983
|
+
Stack as Stack11
|
|
909
984
|
} from "@mantine/core";
|
|
910
985
|
import Link2 from "next/link";
|
|
911
|
-
import { jsx as
|
|
986
|
+
import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
912
987
|
function SolutionCardItem(_a) {
|
|
913
988
|
var _b = _a, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
|
|
914
989
|
var _a2, _b2;
|
|
915
|
-
return /* @__PURE__ */
|
|
990
|
+
return /* @__PURE__ */ jsx22(Card6, __spreadProps(__spreadValues({ withBorder: true }, cardProps), { children: /* @__PURE__ */ jsxs11(Stack11, { gap: "md", children: [
|
|
916
991
|
item.icon,
|
|
917
|
-
/* @__PURE__ */
|
|
918
|
-
/* @__PURE__ */
|
|
919
|
-
/* @__PURE__ */
|
|
920
|
-
item.href ? /* @__PURE__ */
|
|
992
|
+
/* @__PURE__ */ jsx22(SdBadge.Primary, { children: item.category }),
|
|
993
|
+
/* @__PURE__ */ jsx22(SdTitle.Card, { children: item.title }),
|
|
994
|
+
/* @__PURE__ */ jsx22(SdText.Body, { children: item.description }),
|
|
995
|
+
item.href ? /* @__PURE__ */ jsxs11(Button, { variant: "subtle", color: "slate", component: Link2, href: item.href, children: [
|
|
921
996
|
(_a2 = item.ctaLabel) != null ? _a2 : "\uC790\uC138\uD788 \uBCF4\uAE30",
|
|
922
997
|
" \u2192"
|
|
923
|
-
] }) : /* @__PURE__ */
|
|
998
|
+
] }) : /* @__PURE__ */ jsxs11(SdButton.Ghost, { onClick: () => onSelect == null ? void 0 : onSelect(item), children: [
|
|
924
999
|
(_b2 = item.ctaLabel) != null ? _b2 : "\uC790\uC138\uD788 \uBCF4\uAE30",
|
|
925
1000
|
" \u2192"
|
|
926
1001
|
] })
|
|
927
1002
|
] }) }));
|
|
928
1003
|
}
|
|
929
1004
|
function Grid3({ items, cols = { base: 1, sm: 2, md: 3 }, onSelect }) {
|
|
930
|
-
return /* @__PURE__ */
|
|
1005
|
+
return /* @__PURE__ */ jsx22(SimpleGrid4, { cols, spacing: "xl", children: items.map((item, i) => /* @__PURE__ */ jsx22(SolutionCardItem, { item, onSelect }, i)) });
|
|
931
1006
|
}
|
|
932
1007
|
var SdSolutionCard = {
|
|
933
1008
|
/** 단일 compact 카드 */
|
|
@@ -937,28 +1012,28 @@ var SdSolutionCard = {
|
|
|
937
1012
|
};
|
|
938
1013
|
|
|
939
1014
|
// ui/molecule/Solution.tsx
|
|
940
|
-
import { jsx as
|
|
1015
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
941
1016
|
function Filtered({ items, allLabel = "\uC804\uCCB4", cols, onSelect }) {
|
|
942
1017
|
const categories = ["all", ...Array.from(new Set(items.map((i) => i.category)))];
|
|
943
1018
|
const [active, setActive] = useState("all");
|
|
944
1019
|
const filtered = active === "all" ? items : items.filter((i) => i.category === active);
|
|
945
|
-
return /* @__PURE__ */
|
|
946
|
-
/* @__PURE__ */
|
|
947
|
-
/* @__PURE__ */
|
|
1020
|
+
return /* @__PURE__ */ jsxs12(Stack12, { gap: "xl", children: [
|
|
1021
|
+
/* @__PURE__ */ jsx23(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : "all"), children: /* @__PURE__ */ jsx23(SdTabs.Pills.List, { children: categories.map((cat) => /* @__PURE__ */ jsx23(SdTabs.Pills.Tab, { value: cat, children: cat === "all" ? allLabel : cat }, cat)) }) }),
|
|
1022
|
+
/* @__PURE__ */ jsx23(SdSolutionCard.Grid, { items: filtered, cols, onSelect })
|
|
948
1023
|
] });
|
|
949
1024
|
}
|
|
950
1025
|
function List({ items, onSelect }) {
|
|
951
|
-
return /* @__PURE__ */
|
|
1026
|
+
return /* @__PURE__ */ jsx23(Stack12, { gap: 0, children: items.map((item, i) => {
|
|
952
1027
|
var _a, _b;
|
|
953
|
-
return /* @__PURE__ */
|
|
954
|
-
i > 0 && /* @__PURE__ */
|
|
955
|
-
/* @__PURE__ */
|
|
956
|
-
item.icon && /* @__PURE__ */
|
|
957
|
-
/* @__PURE__ */
|
|
958
|
-
/* @__PURE__ */
|
|
959
|
-
/* @__PURE__ */
|
|
960
|
-
/* @__PURE__ */
|
|
961
|
-
item.href ? /* @__PURE__ */
|
|
1028
|
+
return /* @__PURE__ */ jsxs12("div", { children: [
|
|
1029
|
+
i > 0 && /* @__PURE__ */ jsx23(Divider2, {}),
|
|
1030
|
+
/* @__PURE__ */ jsxs12(Group7, { align: "flex-start", py: "lg", gap: "lg", children: [
|
|
1031
|
+
item.icon && /* @__PURE__ */ jsx23(ThemeIcon4, { variant: "light", color: "primary", size: "xl", radius: "md", children: item.icon }),
|
|
1032
|
+
/* @__PURE__ */ jsxs12(Stack12, { gap: "xs", style: { flex: 1 }, children: [
|
|
1033
|
+
/* @__PURE__ */ jsx23(SdBadge.Primary, { children: item.category }),
|
|
1034
|
+
/* @__PURE__ */ jsx23(SdTitle.Card, { children: item.title }),
|
|
1035
|
+
/* @__PURE__ */ jsx23(SdText.Body, { children: item.description }),
|
|
1036
|
+
item.href ? /* @__PURE__ */ jsxs12(
|
|
962
1037
|
Button2,
|
|
963
1038
|
{
|
|
964
1039
|
variant: "subtle",
|
|
@@ -971,7 +1046,7 @@ function List({ items, onSelect }) {
|
|
|
971
1046
|
" \u2192"
|
|
972
1047
|
]
|
|
973
1048
|
}
|
|
974
|
-
) : /* @__PURE__ */
|
|
1049
|
+
) : /* @__PURE__ */ jsxs12(
|
|
975
1050
|
SdButton.Ghost,
|
|
976
1051
|
{
|
|
977
1052
|
onClick: () => onSelect == null ? void 0 : onSelect(item),
|
|
@@ -995,8 +1070,8 @@ var SdSolution = {
|
|
|
995
1070
|
};
|
|
996
1071
|
|
|
997
1072
|
// ui/molecule/Clients.tsx
|
|
998
|
-
import { Anchor, Box as
|
|
999
|
-
import { jsx as
|
|
1073
|
+
import { Anchor, Box as Box9, SimpleGrid as SimpleGrid5, Tooltip } from "@mantine/core";
|
|
1074
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1000
1075
|
var grayStyle = {
|
|
1001
1076
|
filter: "grayscale(1) opacity(0.5)",
|
|
1002
1077
|
transition: "filter 0.25s"
|
|
@@ -1005,7 +1080,7 @@ var colorStyle = {
|
|
|
1005
1080
|
filter: "grayscale(0) opacity(1)"
|
|
1006
1081
|
};
|
|
1007
1082
|
function LogoImage({ client, height }) {
|
|
1008
|
-
return /* @__PURE__ */
|
|
1083
|
+
return /* @__PURE__ */ jsx24(Tooltip, { label: client.name, withArrow: true, children: /* @__PURE__ */ jsx24(Anchor, { href: client.url, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx24(
|
|
1009
1084
|
"img",
|
|
1010
1085
|
{
|
|
1011
1086
|
src: client.logo,
|
|
@@ -1021,15 +1096,15 @@ function Grid4({
|
|
|
1021
1096
|
cols = { base: 2, sm: 3, md: 4, lg: 6 },
|
|
1022
1097
|
logoHeight = 40
|
|
1023
1098
|
}) {
|
|
1024
|
-
return /* @__PURE__ */
|
|
1099
|
+
return /* @__PURE__ */ jsx24(SimpleGrid5, { cols, spacing: "xl", children: items.map((client, i) => /* @__PURE__ */ jsx24(Box9, { style: { display: "flex", alignItems: "center", justifyContent: "center", padding: "12px 8px" }, children: /* @__PURE__ */ jsx24(LogoImage, { client, height: logoHeight }) }, i)) });
|
|
1025
1100
|
}
|
|
1026
1101
|
var KEYFRAME = `@keyframes sd-clients-marquee { from { transform: translateX(0) } to { transform: translateX(-50%) } }`;
|
|
1027
1102
|
function Marquee({ items, speed = 40, logoHeight = 36, gap = 64 }) {
|
|
1028
1103
|
const doubled = [...items, ...items];
|
|
1029
|
-
return /* @__PURE__ */
|
|
1030
|
-
/* @__PURE__ */
|
|
1031
|
-
/* @__PURE__ */
|
|
1032
|
-
|
|
1104
|
+
return /* @__PURE__ */ jsxs13(Box9, { style: { overflow: "hidden" }, children: [
|
|
1105
|
+
/* @__PURE__ */ jsx24("style", { children: KEYFRAME }),
|
|
1106
|
+
/* @__PURE__ */ jsx24(
|
|
1107
|
+
Box9,
|
|
1033
1108
|
{
|
|
1034
1109
|
style: {
|
|
1035
1110
|
display: "flex",
|
|
@@ -1044,7 +1119,7 @@ function Marquee({ items, speed = 40, logoHeight = 36, gap = 64 }) {
|
|
|
1044
1119
|
onMouseLeave: (e) => {
|
|
1045
1120
|
e.currentTarget.style.animationPlayState = "running";
|
|
1046
1121
|
},
|
|
1047
|
-
children: doubled.map((client, i) => /* @__PURE__ */
|
|
1122
|
+
children: doubled.map((client, i) => /* @__PURE__ */ jsx24(LogoImage, { client, height: logoHeight }, i))
|
|
1048
1123
|
}
|
|
1049
1124
|
)
|
|
1050
1125
|
] });
|
|
@@ -1055,14 +1130,16 @@ var SdClients = {
|
|
|
1055
1130
|
/** 무한 수평 스크롤 띠 — 호버 시 일시정지 */
|
|
1056
1131
|
Marquee
|
|
1057
1132
|
};
|
|
1133
|
+
var SdClientsGrid = Grid4;
|
|
1134
|
+
var SdClientsMarquee = Marquee;
|
|
1058
1135
|
|
|
1059
1136
|
// ui/molecule/Map.tsx
|
|
1060
1137
|
import { useState as useState2 } from "react";
|
|
1061
|
-
import { Box as
|
|
1062
|
-
import { jsx as
|
|
1138
|
+
import { Box as Box10, Stack as Stack13 } from "@mantine/core";
|
|
1139
|
+
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1063
1140
|
function MapFrame({ address, height }) {
|
|
1064
|
-
return /* @__PURE__ */
|
|
1065
|
-
/* @__PURE__ */
|
|
1141
|
+
return /* @__PURE__ */ jsxs14(Stack13, { gap: "xs", children: [
|
|
1142
|
+
/* @__PURE__ */ jsx25(Box10, { style: { borderRadius: "var(--mantine-radius-md)", overflow: "hidden", height }, children: /* @__PURE__ */ jsx25(
|
|
1066
1143
|
"iframe",
|
|
1067
1144
|
{
|
|
1068
1145
|
src: address.embbedUrl,
|
|
@@ -1075,7 +1152,7 @@ function MapFrame({ address, height }) {
|
|
|
1075
1152
|
title: address.label
|
|
1076
1153
|
}
|
|
1077
1154
|
) }),
|
|
1078
|
-
/* @__PURE__ */
|
|
1155
|
+
/* @__PURE__ */ jsxs14(SdText.Sub, { children: [
|
|
1079
1156
|
"[",
|
|
1080
1157
|
address.label,
|
|
1081
1158
|
"] ",
|
|
@@ -1086,18 +1163,18 @@ function MapFrame({ address, height }) {
|
|
|
1086
1163
|
function Single(_a) {
|
|
1087
1164
|
var _b = _a, { address, height = 400 } = _b, boxProps = __objRest(_b, ["address", "height"]);
|
|
1088
1165
|
if (!address.embbedUrl) return null;
|
|
1089
|
-
return /* @__PURE__ */
|
|
1166
|
+
return /* @__PURE__ */ jsx25(Box10, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsx25(MapFrame, { address, height }) }));
|
|
1090
1167
|
}
|
|
1091
1168
|
function Tabs2({ addresses, height = 400 }) {
|
|
1092
1169
|
var _a, _b, _c;
|
|
1093
1170
|
const mapped = addresses.filter((a) => a.embbedUrl);
|
|
1094
1171
|
const [active, setActive] = useState2((_b = (_a = mapped[0]) == null ? void 0 : _a.label) != null ? _b : "");
|
|
1095
1172
|
if (mapped.length === 0) return null;
|
|
1096
|
-
if (mapped.length === 1) return /* @__PURE__ */
|
|
1173
|
+
if (mapped.length === 1) return /* @__PURE__ */ jsx25(MapFrame, { address: mapped[0], height });
|
|
1097
1174
|
const current = (_c = mapped.find((a) => a.label === active)) != null ? _c : mapped[0];
|
|
1098
|
-
return /* @__PURE__ */
|
|
1099
|
-
/* @__PURE__ */
|
|
1100
|
-
/* @__PURE__ */
|
|
1175
|
+
return /* @__PURE__ */ jsxs14(Stack13, { gap: "md", children: [
|
|
1176
|
+
/* @__PURE__ */ jsx25(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : mapped[0].label), children: /* @__PURE__ */ jsx25(SdTabs.Pills.List, { children: mapped.map((addr) => /* @__PURE__ */ jsx25(SdTabs.Pills.Tab, { value: addr.label, children: addr.label }, addr.label)) }) }),
|
|
1177
|
+
/* @__PURE__ */ jsx25(MapFrame, { address: current, height })
|
|
1101
1178
|
] });
|
|
1102
1179
|
}
|
|
1103
1180
|
var SdMap = {
|
|
@@ -1106,16 +1183,30 @@ var SdMap = {
|
|
|
1106
1183
|
/** 여러 주소 탭 전환 지도 — embbedUrl 있는 항목만 표시 */
|
|
1107
1184
|
Tabs: Tabs2
|
|
1108
1185
|
};
|
|
1186
|
+
var SdMapSingle = Single;
|
|
1187
|
+
var SdMapTabs = Tabs2;
|
|
1109
1188
|
|
|
1110
1189
|
// ui/organism/HeroCarousel.tsx
|
|
1111
1190
|
import { Carousel } from "@mantine/carousel";
|
|
1112
|
-
import { Box as
|
|
1113
|
-
import {
|
|
1191
|
+
import { Anchor as Anchor2, Box as Box11, Group as Group8, Stack as Stack14 } from "@mantine/core";
|
|
1192
|
+
import { IconArrowNarrowRight } from "@tabler/icons-react";
|
|
1193
|
+
import { Fragment as Fragment3, jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1194
|
+
var variantMap = {
|
|
1195
|
+
primary: SdButton.Primary,
|
|
1196
|
+
secondary: SdButton.Secondary,
|
|
1197
|
+
outline: SdButton.Outline,
|
|
1198
|
+
white: SdButton.White
|
|
1199
|
+
};
|
|
1200
|
+
function CtaButton({ cta }) {
|
|
1201
|
+
var _a;
|
|
1202
|
+
const Button3 = variantMap[(_a = cta.variant) != null ? _a : "primary"];
|
|
1203
|
+
return /* @__PURE__ */ jsx26(Anchor2, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ jsx26(Button3, { size: "md", rightSection: /* @__PURE__ */ jsx26(IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ jsx26(Button3, { size: "md", children: cta.label }) });
|
|
1204
|
+
}
|
|
1114
1205
|
function HeroCarousel({ slides, children }) {
|
|
1115
|
-
if (children) return /* @__PURE__ */
|
|
1206
|
+
if (children) return /* @__PURE__ */ jsx26(Fragment3, { children });
|
|
1116
1207
|
const filterdSlides = filterAndSort(slides);
|
|
1117
|
-
return /* @__PURE__ */
|
|
1118
|
-
|
|
1208
|
+
return /* @__PURE__ */ jsx26(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx26(Carousel.Slide, { children: /* @__PURE__ */ jsx26(
|
|
1209
|
+
Box11,
|
|
1119
1210
|
{
|
|
1120
1211
|
style: {
|
|
1121
1212
|
height: "100%",
|
|
@@ -1126,125 +1217,121 @@ function HeroCarousel({ slides, children }) {
|
|
|
1126
1217
|
alignItems: "center",
|
|
1127
1218
|
justifyContent: "center"
|
|
1128
1219
|
},
|
|
1129
|
-
children: /* @__PURE__ */
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1220
|
+
children: /* @__PURE__ */ jsxs15(Stack14, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
|
|
1221
|
+
/* @__PURE__ */ jsx26(
|
|
1222
|
+
SdTextBox.Hero,
|
|
1223
|
+
{
|
|
1224
|
+
title: slide.title,
|
|
1225
|
+
description: slide.description,
|
|
1226
|
+
ta: "center",
|
|
1227
|
+
align: "center"
|
|
1228
|
+
}
|
|
1229
|
+
),
|
|
1230
|
+
slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ jsx26(Group8, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ jsx26(CtaButton, { cta }, cta.href)) })
|
|
1231
|
+
] })
|
|
1138
1232
|
}
|
|
1139
1233
|
) }, i)) });
|
|
1140
1234
|
}
|
|
1141
1235
|
|
|
1142
1236
|
// ui/organism/Header.tsx
|
|
1143
|
-
import { Anchor as
|
|
1237
|
+
import { Anchor as Anchor3, Drawer, Group as Group9, Burger, Stack as Stack15 } from "@mantine/core";
|
|
1144
1238
|
import { useDisclosure } from "@mantine/hooks";
|
|
1145
|
-
import { Fragment as Fragment4, jsx as
|
|
1239
|
+
import { Fragment as Fragment4, jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1146
1240
|
function SdHeader({ navItems, loginFlag, children }) {
|
|
1147
1241
|
const [opened, { toggle, close }] = useDisclosure();
|
|
1148
1242
|
const visibleTopItems = navItems.filter((item) => item.isShow && !item.parentId).sort((a, b) => a.order - b.order);
|
|
1149
|
-
return /* @__PURE__ */
|
|
1150
|
-
/* @__PURE__ */
|
|
1151
|
-
/* @__PURE__ */
|
|
1152
|
-
/* @__PURE__ */
|
|
1153
|
-
/* @__PURE__ */
|
|
1154
|
-
loginFlag && /* @__PURE__ */
|
|
1155
|
-
/* @__PURE__ */
|
|
1156
|
-
/* @__PURE__ */
|
|
1243
|
+
return /* @__PURE__ */ jsxs16(Fragment4, { children: [
|
|
1244
|
+
/* @__PURE__ */ jsx27(SdContainer, { h: "100%", children: /* @__PURE__ */ jsxs16(Group9, { justify: "space-between", h: "100%", children: [
|
|
1245
|
+
/* @__PURE__ */ jsx27(Logo, {}),
|
|
1246
|
+
/* @__PURE__ */ jsx27(Group9, { gap: "xl", visibleFrom: "sm", children: visibleTopItems.map((item) => /* @__PURE__ */ jsx27(Anchor3, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 15, children: item.label }, item.id)) }),
|
|
1247
|
+
/* @__PURE__ */ jsx27(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
|
|
1248
|
+
loginFlag && /* @__PURE__ */ jsxs16(Group9, { gap: "sm", visibleFrom: "sm", children: [
|
|
1249
|
+
/* @__PURE__ */ jsx27(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
|
|
1250
|
+
/* @__PURE__ */ jsx27(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
|
|
1157
1251
|
] }),
|
|
1158
1252
|
children
|
|
1159
1253
|
] }) }),
|
|
1160
|
-
/* @__PURE__ */
|
|
1161
|
-
visibleTopItems.map((item) => /* @__PURE__ */
|
|
1162
|
-
loginFlag && /* @__PURE__ */
|
|
1163
|
-
/* @__PURE__ */
|
|
1164
|
-
/* @__PURE__ */
|
|
1254
|
+
/* @__PURE__ */ jsx27(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs16(Stack15, { children: [
|
|
1255
|
+
visibleTopItems.map((item) => /* @__PURE__ */ jsx27(Anchor3, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 16, onClick: close, children: item.label }, item.id)),
|
|
1256
|
+
loginFlag && /* @__PURE__ */ jsxs16(Stack15, { gap: "xs", mt: "md", children: [
|
|
1257
|
+
/* @__PURE__ */ jsx27(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
|
|
1258
|
+
/* @__PURE__ */ jsx27(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
|
|
1165
1259
|
] })
|
|
1166
1260
|
] }) })
|
|
1167
1261
|
] });
|
|
1168
1262
|
}
|
|
1169
1263
|
|
|
1170
|
-
// ui/organism/Footer
|
|
1171
|
-
import { Anchor as
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
return /* @__PURE__ */
|
|
1177
|
-
}
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1264
|
+
// ui/organism/Footer.tsx
|
|
1265
|
+
import { Anchor as Anchor4, Box as Box12, Divider as Divider3, Grid as Grid5, Group as Group10, Stack as Stack16 } from "@mantine/core";
|
|
1266
|
+
import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1267
|
+
function FooterNavColumns({ items }) {
|
|
1268
|
+
const topLevel = items.filter((item) => !item.parentId);
|
|
1269
|
+
const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
|
|
1270
|
+
return /* @__PURE__ */ jsx28(Fragment5, { children: topLevel.map((group) => /* @__PURE__ */ jsx28(Grid5.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ jsxs17(Stack16, { gap: "sm", children: [
|
|
1271
|
+
/* @__PURE__ */ jsx28(SdText.Strong, { fz: "sm", children: group.label }),
|
|
1272
|
+
getChildren(group.id).map((link) => /* @__PURE__ */ jsx28(
|
|
1273
|
+
Anchor4,
|
|
1274
|
+
{
|
|
1275
|
+
href: link.href,
|
|
1276
|
+
fz: "sm",
|
|
1277
|
+
c: "slate.6",
|
|
1278
|
+
underline: "never",
|
|
1279
|
+
style: { transition: "color 0.15s" },
|
|
1280
|
+
onMouseEnter: (e) => {
|
|
1281
|
+
e.currentTarget.style.color = "var(--mantine-color-primary-6)";
|
|
1282
|
+
},
|
|
1283
|
+
onMouseLeave: (e) => {
|
|
1284
|
+
e.currentTarget.style.color = "";
|
|
1285
|
+
},
|
|
1286
|
+
children: link.label
|
|
1287
|
+
},
|
|
1288
|
+
link.id
|
|
1289
|
+
))
|
|
1290
|
+
] }) }, group.id)) });
|
|
1291
|
+
}
|
|
1292
|
+
function FooterCompanyInfo({ company }) {
|
|
1293
|
+
const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
|
|
1294
|
+
return /* @__PURE__ */ jsxs17(Group10, { gap: "xs", wrap: "wrap", children: [
|
|
1295
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { children: company.name }),
|
|
1296
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.4", children: "|" }),
|
|
1297
|
+
/* @__PURE__ */ jsxs17(SdText.Sub, { children: [
|
|
1186
1298
|
"\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638 ",
|
|
1187
1299
|
company.registrationNumber
|
|
1188
1300
|
] }),
|
|
1189
|
-
|
|
1190
|
-
|
|
1301
|
+
sortedAddresses.map((addr) => /* @__PURE__ */ jsxs17(Group10, { gap: "xs", wrap: "nowrap", children: [
|
|
1302
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.4", children: "|" }),
|
|
1303
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { children: addr.address })
|
|
1304
|
+
] }, addr.label)),
|
|
1305
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.4", children: "|" }),
|
|
1306
|
+
/* @__PURE__ */ jsxs17(Anchor4, { href: `tel:${company.tel}`, fz: "xs", c: "slate.5", underline: "never", children: [
|
|
1191
1307
|
"Tel ",
|
|
1192
1308
|
company.tel
|
|
1193
1309
|
] }),
|
|
1194
|
-
company.fax && /* @__PURE__ */
|
|
1195
|
-
"
|
|
1196
|
-
|
|
1310
|
+
company.fax && /* @__PURE__ */ jsxs17(Fragment5, { children: [
|
|
1311
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.4", children: "|" }),
|
|
1312
|
+
/* @__PURE__ */ jsxs17(SdText.Sub, { children: [
|
|
1313
|
+
"Fax ",
|
|
1314
|
+
company.fax
|
|
1315
|
+
] })
|
|
1197
1316
|
] }),
|
|
1198
|
-
/* @__PURE__ */ jsx28(
|
|
1317
|
+
/* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.4", children: "|" }),
|
|
1318
|
+
/* @__PURE__ */ jsx28(Anchor4, { href: `mailto:${company.email}`, fz: "xs", c: "slate.5", underline: "never", children: company.email })
|
|
1199
1319
|
] });
|
|
1200
1320
|
}
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
import { Anchor as Anchor4, Group as Group10, Stack as Stack15 } from "@mantine/core";
|
|
1204
|
-
import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1205
|
-
function FooterNav({ items }) {
|
|
1206
|
-
const topLevel = items.filter((item) => !item.parentId);
|
|
1207
|
-
const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
|
|
1208
|
-
return /* @__PURE__ */ jsx29(Group10, { gap: 48, align: "flex-start", wrap: "wrap", children: topLevel.map((item) => {
|
|
1209
|
-
const children = getChildren(item.id);
|
|
1210
|
-
return /* @__PURE__ */ jsxs16(Stack15, { gap: "sm", children: [
|
|
1211
|
-
/* @__PURE__ */ jsx29(SdText.Eyebrow, { c: "slate.4", children: item.label }),
|
|
1212
|
-
children.map((child) => /* @__PURE__ */ jsx29(
|
|
1213
|
-
Anchor4,
|
|
1214
|
-
{
|
|
1215
|
-
href: child.href,
|
|
1216
|
-
fz: "xs",
|
|
1217
|
-
c: "slate.5",
|
|
1218
|
-
underline: "never",
|
|
1219
|
-
style: { transition: "color 0.15s" },
|
|
1220
|
-
onMouseEnter: (e) => {
|
|
1221
|
-
e.currentTarget.style.color = "var(--mantine-color-slate-1)";
|
|
1222
|
-
},
|
|
1223
|
-
onMouseLeave: (e) => {
|
|
1224
|
-
e.currentTarget.style.color = "";
|
|
1225
|
-
},
|
|
1226
|
-
children: child.label
|
|
1227
|
-
},
|
|
1228
|
-
child.id
|
|
1229
|
-
))
|
|
1230
|
-
] }, item.id);
|
|
1231
|
-
}) });
|
|
1232
|
-
}
|
|
1233
|
-
|
|
1234
|
-
// ui/organism/Footer/index.tsx
|
|
1235
|
-
import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1236
|
-
function SdFooter({ company, utilityLinks, policyLinks }) {
|
|
1237
|
-
const visibleUtility = filterAndSort(utilityLinks);
|
|
1321
|
+
function SdFooter({ company, navItems, policyLinks, description }) {
|
|
1322
|
+
const visibleNav = filterAndSort(navItems);
|
|
1238
1323
|
const visiblePolicy = filterAndSort(policyLinks);
|
|
1239
|
-
return /* @__PURE__ */ jsxs17(
|
|
1240
|
-
/* @__PURE__ */ jsxs17(Grid5, { style: { "--grid-gutter": "48px" },
|
|
1241
|
-
/* @__PURE__ */
|
|
1242
|
-
|
|
1324
|
+
return /* @__PURE__ */ jsx28(Box12, { component: "footer", py: "xl", children: /* @__PURE__ */ jsxs17(SdContainer, { children: [
|
|
1325
|
+
/* @__PURE__ */ jsxs17(Grid5, { style: { "--grid-gutter": "48px" }, children: [
|
|
1326
|
+
/* @__PURE__ */ jsx28(Grid5.Col, { span: { base: 12, md: 4 }, children: /* @__PURE__ */ jsxs17(Stack16, { gap: "md", children: [
|
|
1327
|
+
/* @__PURE__ */ jsx28(Logo, { size: "sm" }),
|
|
1328
|
+
description && /* @__PURE__ */ jsx28(SdText.Body, { c: "slate.4", fz: "sm", children: description })
|
|
1329
|
+
] }) }),
|
|
1330
|
+
visibleNav.length > 0 && /* @__PURE__ */ jsx28(Grid5.Col, { span: { base: 12, md: 8 }, children: /* @__PURE__ */ jsx28(Grid5, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ jsx28(FooterNavColumns, { items: visibleNav }) }) })
|
|
1243
1331
|
] }),
|
|
1244
|
-
/* @__PURE__ */
|
|
1245
|
-
/* @__PURE__ */
|
|
1246
|
-
/* @__PURE__ */
|
|
1247
|
-
/* @__PURE__ */ jsxs17(Group11, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
|
|
1332
|
+
/* @__PURE__ */ jsx28(Divider3, {}),
|
|
1333
|
+
/* @__PURE__ */ jsx28(FooterCompanyInfo, { company }),
|
|
1334
|
+
/* @__PURE__ */ jsxs17(Group10, { justify: "space-between", wrap: "wrap", gap: "xs", mt: "md", children: [
|
|
1248
1335
|
/* @__PURE__ */ jsxs17(SdText.Sub, { c: "slate.5", children: [
|
|
1249
1336
|
"\xA9 ",
|
|
1250
1337
|
company.copyrightYear,
|
|
@@ -1252,24 +1339,25 @@ function SdFooter({ company, utilityLinks, policyLinks }) {
|
|
|
1252
1339
|
company.name,
|
|
1253
1340
|
". All rights reserved."
|
|
1254
1341
|
] }),
|
|
1255
|
-
visiblePolicy.length > 0 && /* @__PURE__ */
|
|
1256
|
-
|
|
1342
|
+
visiblePolicy.length > 0 && /* @__PURE__ */ jsx28(Group10, { gap: "lg", children: visiblePolicy.map((item) => /* @__PURE__ */ jsx28(
|
|
1343
|
+
Anchor4,
|
|
1257
1344
|
{
|
|
1258
1345
|
href: item.href,
|
|
1259
1346
|
fz: "xs",
|
|
1260
|
-
|
|
1347
|
+
fw: item.highlight ? 700 : 400,
|
|
1348
|
+
c: item.highlight ? "white" : "slate.5",
|
|
1261
1349
|
underline: "never",
|
|
1262
1350
|
children: item.label
|
|
1263
1351
|
},
|
|
1264
1352
|
item.id
|
|
1265
1353
|
)) })
|
|
1266
1354
|
] })
|
|
1267
|
-
] });
|
|
1355
|
+
] }) });
|
|
1268
1356
|
}
|
|
1269
1357
|
|
|
1270
1358
|
// ui/organism/FeatureSection.tsx
|
|
1271
|
-
import { Stack as
|
|
1272
|
-
import { jsx as
|
|
1359
|
+
import { Stack as Stack17 } from "@mantine/core";
|
|
1360
|
+
import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1273
1361
|
function SdFeatureSection(_a) {
|
|
1274
1362
|
var _b = _a, {
|
|
1275
1363
|
label,
|
|
@@ -1286,8 +1374,8 @@ function SdFeatureSection(_a) {
|
|
|
1286
1374
|
"cols",
|
|
1287
1375
|
"py"
|
|
1288
1376
|
]);
|
|
1289
|
-
return /* @__PURE__ */
|
|
1290
|
-
/* @__PURE__ */
|
|
1377
|
+
return /* @__PURE__ */ jsx29(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs18(Stack17, { gap: "xl", children: [
|
|
1378
|
+
/* @__PURE__ */ jsx29(
|
|
1291
1379
|
SdTextBox.Section,
|
|
1292
1380
|
{
|
|
1293
1381
|
label,
|
|
@@ -1298,13 +1386,13 @@ function SdFeatureSection(_a) {
|
|
|
1298
1386
|
align: "center"
|
|
1299
1387
|
}
|
|
1300
1388
|
),
|
|
1301
|
-
/* @__PURE__ */
|
|
1389
|
+
/* @__PURE__ */ jsx29(SdFeatures, { items, cols })
|
|
1302
1390
|
] }) }));
|
|
1303
1391
|
}
|
|
1304
1392
|
|
|
1305
1393
|
// ui/organism/TimelineSection.tsx
|
|
1306
|
-
import { Center as Center3, Stack as
|
|
1307
|
-
import { jsx as
|
|
1394
|
+
import { Center as Center3, Stack as Stack18 } from "@mantine/core";
|
|
1395
|
+
import { jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1308
1396
|
function SdTimelineSection(_a) {
|
|
1309
1397
|
var _b = _a, {
|
|
1310
1398
|
label,
|
|
@@ -1319,8 +1407,8 @@ function SdTimelineSection(_a) {
|
|
|
1319
1407
|
"items",
|
|
1320
1408
|
"py"
|
|
1321
1409
|
]);
|
|
1322
|
-
return /* @__PURE__ */
|
|
1323
|
-
/* @__PURE__ */
|
|
1410
|
+
return /* @__PURE__ */ jsx30(Center3, { children: /* @__PURE__ */ jsxs19(Stack18, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
|
|
1411
|
+
/* @__PURE__ */ jsx30(
|
|
1324
1412
|
SdTextBox.Section,
|
|
1325
1413
|
{
|
|
1326
1414
|
label,
|
|
@@ -1328,13 +1416,13 @@ function SdTimelineSection(_a) {
|
|
|
1328
1416
|
description
|
|
1329
1417
|
}
|
|
1330
1418
|
),
|
|
1331
|
-
/* @__PURE__ */
|
|
1419
|
+
/* @__PURE__ */ jsx30(Center3, { children: /* @__PURE__ */ jsx30(SdTimeline, { items }) })
|
|
1332
1420
|
] })) });
|
|
1333
1421
|
}
|
|
1334
1422
|
|
|
1335
1423
|
// ui/organism/StepsSection.tsx
|
|
1336
|
-
import { Stack as
|
|
1337
|
-
import { jsx as
|
|
1424
|
+
import { Stack as Stack19 } from "@mantine/core";
|
|
1425
|
+
import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1338
1426
|
function SdStepsSection(_a) {
|
|
1339
1427
|
var _b = _a, {
|
|
1340
1428
|
label,
|
|
@@ -1349,17 +1437,17 @@ function SdStepsSection(_a) {
|
|
|
1349
1437
|
"items",
|
|
1350
1438
|
"py"
|
|
1351
1439
|
]);
|
|
1352
|
-
return /* @__PURE__ */
|
|
1353
|
-
(label || title || description) && /* @__PURE__ */
|
|
1354
|
-
/* @__PURE__ */
|
|
1440
|
+
return /* @__PURE__ */ jsx31(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs20(Stack19, { gap: "xl", children: [
|
|
1441
|
+
(label || title || description) && /* @__PURE__ */ jsx31(SdTextBox.Section, { label, title, description }),
|
|
1442
|
+
/* @__PURE__ */ jsx31(SdSteps.Bubble, { items })
|
|
1355
1443
|
] }) }));
|
|
1356
1444
|
}
|
|
1357
1445
|
|
|
1358
1446
|
// ui/organism/ErrorView.tsx
|
|
1359
|
-
import { Center as Center4, Group as
|
|
1360
|
-
import { jsx as
|
|
1447
|
+
import { Center as Center4, Group as Group11, Stack as Stack20, Text as Text2 } from "@mantine/core";
|
|
1448
|
+
import { jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1361
1449
|
function StatusCode({ code }) {
|
|
1362
|
-
return /* @__PURE__ */
|
|
1450
|
+
return /* @__PURE__ */ jsx32(
|
|
1363
1451
|
Text2,
|
|
1364
1452
|
{
|
|
1365
1453
|
fz: 160,
|
|
@@ -1373,19 +1461,15 @@ function StatusCode({ code }) {
|
|
|
1373
1461
|
);
|
|
1374
1462
|
}
|
|
1375
1463
|
function Page({ error, onReset, onHome }) {
|
|
1376
|
-
return /* @__PURE__ */
|
|
1377
|
-
/* @__PURE__ */
|
|
1378
|
-
/* @__PURE__ */ jsxs21(
|
|
1379
|
-
/* @__PURE__ */
|
|
1380
|
-
/* @__PURE__ */
|
|
1381
|
-
/* @__PURE__ */ jsxs21(SdText.Sub, { children: [
|
|
1382
|
-
"\uC624\uB958 \uCF54\uB4DC: ",
|
|
1383
|
-
error.digest
|
|
1384
|
-
] })
|
|
1464
|
+
return /* @__PURE__ */ jsx32(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx32(SdContainer, { children: /* @__PURE__ */ jsxs21(Stack20, { align: "center", gap: "lg", ta: "center", children: [
|
|
1465
|
+
/* @__PURE__ */ jsx32(StatusCode, { code: "500" }),
|
|
1466
|
+
/* @__PURE__ */ jsxs21(Stack20, { gap: "sm", align: "center", children: [
|
|
1467
|
+
/* @__PURE__ */ jsx32(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
|
|
1468
|
+
/* @__PURE__ */ jsx32(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." })
|
|
1385
1469
|
] }),
|
|
1386
|
-
/* @__PURE__ */ jsxs21(
|
|
1387
|
-
/* @__PURE__ */
|
|
1388
|
-
onHome && /* @__PURE__ */
|
|
1470
|
+
/* @__PURE__ */ jsxs21(Group11, { gap: "sm", justify: "center", children: [
|
|
1471
|
+
/* @__PURE__ */ jsx32(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
|
|
1472
|
+
onHome && /* @__PURE__ */ jsx32(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
|
|
1389
1473
|
] })
|
|
1390
1474
|
] }) }) });
|
|
1391
1475
|
}
|
|
@@ -1397,15 +1481,15 @@ function NotFound({
|
|
|
1397
1481
|
},
|
|
1398
1482
|
onBack = () => window.history.back()
|
|
1399
1483
|
}) {
|
|
1400
|
-
return /* @__PURE__ */
|
|
1401
|
-
/* @__PURE__ */
|
|
1402
|
-
/* @__PURE__ */ jsxs21(
|
|
1403
|
-
/* @__PURE__ */
|
|
1404
|
-
/* @__PURE__ */
|
|
1484
|
+
return /* @__PURE__ */ jsx32(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx32(SdContainer, { children: /* @__PURE__ */ jsxs21(Stack20, { align: "center", gap: "lg", ta: "center", children: [
|
|
1485
|
+
/* @__PURE__ */ jsx32(StatusCode, { code: "404" }),
|
|
1486
|
+
/* @__PURE__ */ jsxs21(Stack20, { gap: "sm", align: "center", children: [
|
|
1487
|
+
/* @__PURE__ */ jsx32(SdTitle.Section, { children: title }),
|
|
1488
|
+
/* @__PURE__ */ jsx32(SdText.Body, { maw: 480, children: description })
|
|
1405
1489
|
] }),
|
|
1406
|
-
/* @__PURE__ */ jsxs21(
|
|
1407
|
-
onHome && /* @__PURE__ */
|
|
1408
|
-
onBack && /* @__PURE__ */
|
|
1490
|
+
/* @__PURE__ */ jsxs21(Group11, { gap: "sm", justify: "center", children: [
|
|
1491
|
+
onHome && /* @__PURE__ */ jsx32(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
|
|
1492
|
+
onBack && /* @__PURE__ */ jsx32(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
|
|
1409
1493
|
] })
|
|
1410
1494
|
] }) }) });
|
|
1411
1495
|
}
|
|
@@ -1418,27 +1502,27 @@ var SdErrorView = {
|
|
|
1418
1502
|
|
|
1419
1503
|
// ui/template/MainLayout.tsx
|
|
1420
1504
|
import { AppShell } from "@mantine/core";
|
|
1421
|
-
import { jsx as
|
|
1505
|
+
import { jsx as jsx33, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1422
1506
|
function MainLayout({ children, navItems, companyInfo }) {
|
|
1423
1507
|
return /* @__PURE__ */ jsxs22(AppShell, { header: { height: 60 }, children: [
|
|
1424
|
-
/* @__PURE__ */
|
|
1425
|
-
/* @__PURE__ */
|
|
1426
|
-
/* @__PURE__ */
|
|
1508
|
+
/* @__PURE__ */ jsx33(AppShell.Header, { children: /* @__PURE__ */ jsx33(SdHeader, { navItems }) }),
|
|
1509
|
+
/* @__PURE__ */ jsx33(AppShell.Main, { children }),
|
|
1510
|
+
/* @__PURE__ */ jsx33(SdFooter, { company: companyInfo })
|
|
1427
1511
|
] });
|
|
1428
1512
|
}
|
|
1429
1513
|
|
|
1430
1514
|
// ui/template/PageLayout.tsx
|
|
1431
|
-
import { Box as
|
|
1432
|
-
import { Fragment as
|
|
1515
|
+
import { Box as Box14, Divider as Divider4, Space } from "@mantine/core";
|
|
1516
|
+
import { Fragment as Fragment6, jsx as jsx34, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1433
1517
|
function Content({ children }) {
|
|
1434
|
-
return /* @__PURE__ */
|
|
1518
|
+
return /* @__PURE__ */ jsx34(SdContainer, { py: "xl", children });
|
|
1435
1519
|
}
|
|
1436
1520
|
function LayoutGap() {
|
|
1437
|
-
return /* @__PURE__ */
|
|
1521
|
+
return /* @__PURE__ */ jsx34(Space, { h: 48 });
|
|
1438
1522
|
}
|
|
1439
1523
|
function Minimal({ label, title, description, children }) {
|
|
1440
|
-
return /* @__PURE__ */
|
|
1441
|
-
/* @__PURE__ */
|
|
1524
|
+
return /* @__PURE__ */ jsx34(Fragment6, { children: /* @__PURE__ */ jsxs23(Plain2, { children: [
|
|
1525
|
+
/* @__PURE__ */ jsx34(
|
|
1442
1526
|
SdTextBox.Section,
|
|
1443
1527
|
{
|
|
1444
1528
|
label,
|
|
@@ -1447,19 +1531,19 @@ function Minimal({ label, title, description, children }) {
|
|
|
1447
1531
|
mb: "xl"
|
|
1448
1532
|
}
|
|
1449
1533
|
),
|
|
1450
|
-
/* @__PURE__ */
|
|
1534
|
+
/* @__PURE__ */ jsx34(Divider4, {}),
|
|
1451
1535
|
children
|
|
1452
1536
|
] }) });
|
|
1453
1537
|
}
|
|
1454
1538
|
function Plain2({ children }) {
|
|
1455
|
-
return /* @__PURE__ */ jsxs23(
|
|
1456
|
-
/* @__PURE__ */
|
|
1457
|
-
/* @__PURE__ */
|
|
1539
|
+
return /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
1540
|
+
/* @__PURE__ */ jsx34(LayoutGap, {}),
|
|
1541
|
+
/* @__PURE__ */ jsx34(Content, { children })
|
|
1458
1542
|
] });
|
|
1459
1543
|
}
|
|
1460
1544
|
function Image2({ image, label, title, description, children }) {
|
|
1461
|
-
return /* @__PURE__ */ jsxs23(
|
|
1462
|
-
/* @__PURE__ */ jsxs23(
|
|
1545
|
+
return /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
1546
|
+
/* @__PURE__ */ jsxs23(Box14, { style: {
|
|
1463
1547
|
position: "relative",
|
|
1464
1548
|
minHeight: "30svh",
|
|
1465
1549
|
display: "flex",
|
|
@@ -1469,13 +1553,13 @@ function Image2({ image, label, title, description, children }) {
|
|
|
1469
1553
|
backgroundPosition: "center",
|
|
1470
1554
|
backgroundColor: "var(--mantine-color-slate-9)"
|
|
1471
1555
|
}, children: [
|
|
1472
|
-
/* @__PURE__ */
|
|
1556
|
+
/* @__PURE__ */ jsx34(Box14, { style: {
|
|
1473
1557
|
position: "absolute",
|
|
1474
1558
|
inset: 0,
|
|
1475
1559
|
background: "rgba(0, 0, 0, 0.55)"
|
|
1476
1560
|
} }),
|
|
1477
|
-
/* @__PURE__ */
|
|
1478
|
-
|
|
1561
|
+
/* @__PURE__ */ jsx34(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx34(
|
|
1562
|
+
Box14,
|
|
1479
1563
|
{
|
|
1480
1564
|
py: 48,
|
|
1481
1565
|
px: 40,
|
|
@@ -1487,7 +1571,7 @@ function Image2({ image, label, title, description, children }) {
|
|
|
1487
1571
|
borderRadius: "var(--mantine-radius-md)",
|
|
1488
1572
|
border: "1px solid rgba(255,255,255,0.18)"
|
|
1489
1573
|
},
|
|
1490
|
-
children: /* @__PURE__ */
|
|
1574
|
+
children: /* @__PURE__ */ jsx34(
|
|
1491
1575
|
SdTextBox.Hero,
|
|
1492
1576
|
{
|
|
1493
1577
|
label,
|
|
@@ -1500,12 +1584,12 @@ function Image2({ image, label, title, description, children }) {
|
|
|
1500
1584
|
}
|
|
1501
1585
|
) })
|
|
1502
1586
|
] }),
|
|
1503
|
-
/* @__PURE__ */
|
|
1587
|
+
/* @__PURE__ */ jsx34(Content, { children })
|
|
1504
1588
|
] });
|
|
1505
1589
|
}
|
|
1506
1590
|
function Brand({ label, title, description, children }) {
|
|
1507
|
-
return /* @__PURE__ */ jsxs23(
|
|
1508
|
-
/* @__PURE__ */ jsxs23(
|
|
1591
|
+
return /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
1592
|
+
/* @__PURE__ */ jsxs23(Box14, { style: {
|
|
1509
1593
|
position: "relative",
|
|
1510
1594
|
minHeight: "40svh",
|
|
1511
1595
|
display: "flex",
|
|
@@ -1513,7 +1597,7 @@ function Brand({ label, title, description, children }) {
|
|
|
1513
1597
|
overflow: "hidden",
|
|
1514
1598
|
background: "linear-gradient(135deg, var(--mantine-color-primary-8) 0%, var(--mantine-color-primary-6) 50%, var(--mantine-color-primary-4) 100%)"
|
|
1515
1599
|
}, children: [
|
|
1516
|
-
/* @__PURE__ */
|
|
1600
|
+
/* @__PURE__ */ jsx34(Box14, { style: {
|
|
1517
1601
|
position: "absolute",
|
|
1518
1602
|
top: -80,
|
|
1519
1603
|
right: -80,
|
|
@@ -1523,7 +1607,7 @@ function Brand({ label, title, description, children }) {
|
|
|
1523
1607
|
background: "rgba(255,255,255,0.06)",
|
|
1524
1608
|
pointerEvents: "none"
|
|
1525
1609
|
} }),
|
|
1526
|
-
/* @__PURE__ */
|
|
1610
|
+
/* @__PURE__ */ jsx34(Box14, { style: {
|
|
1527
1611
|
position: "absolute",
|
|
1528
1612
|
bottom: -60,
|
|
1529
1613
|
left: -60,
|
|
@@ -1533,9 +1617,9 @@ function Brand({ label, title, description, children }) {
|
|
|
1533
1617
|
background: "rgba(255,255,255,0.04)",
|
|
1534
1618
|
pointerEvents: "none"
|
|
1535
1619
|
} }),
|
|
1536
|
-
/* @__PURE__ */
|
|
1620
|
+
/* @__PURE__ */ jsx34(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx34(SdTextBox.Hero, { label, title, description, ta: "center", align: "center", maw: 640, mx: "auto", pt: 80, pb: 64 }) })
|
|
1537
1621
|
] }),
|
|
1538
|
-
/* @__PURE__ */
|
|
1622
|
+
/* @__PURE__ */ jsx34(Content, { children })
|
|
1539
1623
|
] });
|
|
1540
1624
|
}
|
|
1541
1625
|
var PageLayout = {
|
|
@@ -1768,7 +1852,16 @@ export {
|
|
|
1768
1852
|
PageLayout,
|
|
1769
1853
|
SdBadge,
|
|
1770
1854
|
SdButton,
|
|
1855
|
+
SdButtonCancel,
|
|
1856
|
+
SdButtonDelete,
|
|
1857
|
+
SdButtonGhost,
|
|
1858
|
+
SdButtonOutline,
|
|
1859
|
+
SdButtonPrimary,
|
|
1860
|
+
SdButtonSecondary,
|
|
1861
|
+
SdButtonWhite,
|
|
1771
1862
|
SdClients,
|
|
1863
|
+
SdClientsGrid,
|
|
1864
|
+
SdClientsMarquee,
|
|
1772
1865
|
SdContainer,
|
|
1773
1866
|
SdCta,
|
|
1774
1867
|
SdErrorView,
|
|
@@ -1779,19 +1872,34 @@ export {
|
|
|
1779
1872
|
SdHeader,
|
|
1780
1873
|
SdInput,
|
|
1781
1874
|
SdMap,
|
|
1875
|
+
SdMapSingle,
|
|
1876
|
+
SdMapTabs,
|
|
1782
1877
|
SdModal,
|
|
1783
1878
|
SdNumberIcon,
|
|
1784
1879
|
SdPricingCard,
|
|
1785
1880
|
SdQuote,
|
|
1881
|
+
SdSkeleton,
|
|
1882
|
+
SdSkeletonAvatar,
|
|
1883
|
+
SdSkeletonCard,
|
|
1884
|
+
SdSkeletonImage,
|
|
1885
|
+
SdSkeletonText,
|
|
1886
|
+
SdSkeletonTitle,
|
|
1786
1887
|
SdSolution,
|
|
1787
1888
|
SdSolutionCard,
|
|
1788
1889
|
SdSteps,
|
|
1789
1890
|
SdStepsSection,
|
|
1790
1891
|
SdTable,
|
|
1791
1892
|
SdTabs,
|
|
1893
|
+
SdTabsOutline,
|
|
1894
|
+
SdTabsPills,
|
|
1895
|
+
SdTabsUnderline,
|
|
1792
1896
|
SdTestimonial,
|
|
1793
1897
|
SdText,
|
|
1794
1898
|
SdTextBox,
|
|
1899
|
+
SdTextBoxCard,
|
|
1900
|
+
SdTextBoxHero,
|
|
1901
|
+
SdTextBoxSection,
|
|
1902
|
+
SdTextBoxSub,
|
|
1795
1903
|
SdTimeline,
|
|
1796
1904
|
SdTimelineSection,
|
|
1797
1905
|
SdTitle,
|