@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/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/molecule/TextBox.tsx
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__ */ jsxs2(Stack2, __spreadProps(__spreadValues({ gap: defaultGap }, stackProps), { children: [
397
- label && /* @__PURE__ */ jsx13(SdText.Eyebrow, { children: label }),
398
- /* @__PURE__ */ jsx13(TitleComponent, { c: colorRes, children: title }),
399
- description && /* @__PURE__ */ jsx13(DescComponent, { c: colorRes, maw: maxDescWidth, mt: 4, children: description }),
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 Stack3 } from "@mantine/core";
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 jsx14, jsxs as jsxs3 } from "react/jsx-runtime";
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__ */ jsx14(SimpleGrid, { cols, spacing: "xl", children: visible.map((item) => /* @__PURE__ */ jsx14(Card2, { children: /* @__PURE__ */ jsxs3(Stack3, { gap: "sm", children: [
424
- item.icon,
425
- /* @__PURE__ */ jsx14(
426
- SdTextBox.Card,
427
- {
428
- label: item.label,
429
- title: item.title,
430
- description: item.description
431
- }
432
- )
433
- ] }, item.id) })) });
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 Stack4, Timeline as MantineTimeline } from "@mantine/core";
438
- import { jsx as jsx15, jsxs as jsxs4 } from "react/jsx-runtime";
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__ */ jsx15(MantineTimeline, { active: items.length, bulletSize: 24, lineWidth: 2, children: years.map((year) => /* @__PURE__ */ jsx15(
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__ */ jsxs4(SdTitle.Sub, { children: [
524
+ title: /* @__PURE__ */ jsxs5(SdTitle.Sub, { children: [
450
525
  year,
451
526
  "\uB144"
452
527
  ] }),
453
- children: /* @__PURE__ */ jsx15(Stack4, { gap: 6, mt: "xs", children: grouped[year].map((event) => /* @__PURE__ */ jsxs4(Group2, { gap: "md", align: "center", wrap: "nowrap", children: [
454
- /* @__PURE__ */ jsxs4(SdText.Eyebrow, { miw: 28, children: [
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__ */ jsx15(SdText.Sub, { style: { flex: 1 }, children: event.description })
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 Box3, Card as Card3, Group as Group3, Stack as Stack5, ThemeIcon as ThemeIcon2 } from "@mantine/core";
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 jsx16, jsxs as jsxs5 } from "react/jsx-runtime";
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__ */ jsxs5(Group3, { align: "flex-start", gap: "lg", wrap: "nowrap", children: [
472
- /* @__PURE__ */ jsxs5(Box3, { style: { display: "flex", flexDirection: "column", alignItems: "center", flexShrink: 0 }, children: [
473
- /* @__PURE__ */ jsx16(SdNumberIcon, { value: String(index + 1).padStart(2, "0") }),
474
- !isLast && /* @__PURE__ */ jsx16(Box3, { style: { width: 2, flex: 1, minHeight: 32, marginTop: 8, background: "var(--mantine-color-primary-2)" } })
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__ */ jsx16(SdTextBox.Card, { title: item.title, description: item.description, pb: !isLast ? "xl" : 0, pt: 4 })
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__ */ jsx16(Box3, { children: items.map((item, i) => /* @__PURE__ */ jsx16(BubbleStep, { item, index: i, isLast: i === items.length - 1 }, i)) });
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__ */ jsxs5(Card3, { withBorder: true, radius: "md", p: 0, style: { height: "100%", overflow: "hidden" }, children: [
484
- /* @__PURE__ */ jsx16(
485
- Box3,
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__ */ jsxs5(SdText.Eyebrow, { children: [
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__ */ jsx16(Box3, { p: "lg", style: { textAlign: "center" }, children: /* @__PURE__ */ jsx16(SdTextBox.Card, { title: item.title, description: item.description }) })
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__ */ jsx16(ThemeIcon2, { size: 36, radius: "xl", variant: "light", color: "primary", children: direction === "right" ? /* @__PURE__ */ jsx16(IconArrowRight, { size: 20, stroke: 2.5 }) : /* @__PURE__ */ jsx16(IconArrowDown, { size: 20, stroke: 2.5 }) });
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__ */ jsxs5(Fragment2, { children: [
507
- /* @__PURE__ */ jsx16(Stack5, { gap: "sm", hiddenFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ jsxs5(Fragment, { children: [
508
- /* @__PURE__ */ jsx16(CardStep, { item, index: i }),
509
- i < items.length - 1 && /* @__PURE__ */ jsx16(Box3, { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx16(CardArrow, { direction: "down" }) })
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__ */ jsx16(Group3, { wrap: "nowrap", align: "stretch", gap: 0, visibleFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ jsxs5(Fragment, { children: [
512
- /* @__PURE__ */ jsx16(Box3, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsx16(CardStep, { item, index: i }) }),
513
- i < items.length - 1 && /* @__PURE__ */ jsx16(Box3, { style: { display: "flex", alignItems: "center", padding: "0 8px" }, children: /* @__PURE__ */ jsx16(CardArrow, { direction: "right" }) })
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__ */ jsx16(Box3, { pl: "md", style: { borderLeft: "3px solid var(--mantine-color-primary-6)" }, children: /* @__PURE__ */ jsxs5(Stack5, { gap: 4, children: [
519
- /* @__PURE__ */ jsxs5(SdText.Eyebrow, { children: [
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__ */ jsx16(SdTextBox.Card, { title: item.title, description: item.description })
598
+ /* @__PURE__ */ jsx17(SdTextBox.Card, { title: item.title, description: item.description })
524
599
  ] }) });
525
600
  }
526
601
  function Strip({ items }) {
527
- return /* @__PURE__ */ jsx16(Stack5, { gap: "xl", children: items.map((item, i) => /* @__PURE__ */ jsx16(StripStep, { item, index: i }, i)) });
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 Box4,
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 Stack6
614
+ Stack as Stack7
540
615
  } from "@mantine/core";
541
- import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
616
+ import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
542
617
  function AuthorRow({ item }) {
543
- return /* @__PURE__ */ jsxs6(Group4, { gap: "sm", wrap: "nowrap", children: [
544
- item.avatar && /* @__PURE__ */ jsx17(Avatar, { src: item.avatar, size: "md", radius: "xl" }),
545
- !item.avatar && /* @__PURE__ */ jsx17(Avatar, { size: "md", radius: "xl", color: "primary", children: item.name.charAt(0) }),
546
- /* @__PURE__ */ jsxs6(Stack6, { gap: 0, children: [
547
- /* @__PURE__ */ jsx17(SdText.Strong, { fz: "sm", children: item.name }),
548
- /* @__PURE__ */ jsxs6(SdText.Sub, { children: [
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__ */ jsx17(Card4, __spreadProps(__spreadValues({ h: "100%" }, boxProps), { children: /* @__PURE__ */ jsxs6(Stack6, { gap: "md", h: "100%", children: [
558
- item.rating && /* @__PURE__ */ jsx17(Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
559
- /* @__PURE__ */ jsxs6(Stack6, { gap: "xs", style: { flex: 1 }, children: [
560
- /* @__PURE__ */ jsx17(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
561
- item.lines.map((line, i) => /* @__PURE__ */ jsx17(SdText.Body, { children: line }, i))
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__ */ jsx17(AuthorRow, { item })
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__ */ jsx17(Box4, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsxs6(Stack6, { gap: "md", children: [
569
- item.rating && /* @__PURE__ */ jsx17(Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
570
- /* @__PURE__ */ jsxs6(Group4, { gap: 4, align: "flex-start", children: [
571
- /* @__PURE__ */ jsx17(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
572
- /* @__PURE__ */ jsx17(Stack6, { gap: "xs", style: { flex: 1 }, children: item.lines.map((line, i) => /* @__PURE__ */ jsx17(SdText.Body, { children: line }, i)) })
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__ */ jsx17(AuthorRow, { item })
649
+ /* @__PURE__ */ jsx18(AuthorRow, { item })
575
650
  ] }) }));
576
651
  }
577
652
  function Grid({ items, cols = { base: 1, sm: 2, md: 3 } }) {
578
- return /* @__PURE__ */ jsx17(SimpleGrid2, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map((item, i) => /* @__PURE__ */ jsx17(CardTestimonial, { item }, i)) });
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 Stack7,
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 jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
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__ */ jsx18(
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__ */ jsxs7(Stack7, { gap: "xl", children: [
610
- /* @__PURE__ */ jsxs7(Stack7, { gap: "xs", children: [
611
- /* @__PURE__ */ jsxs7(Group5, { justify: "space-between", align: "flex-start", children: [
612
- /* @__PURE__ */ jsx18(SdTitle.Card, { children: item.name }),
613
- item.isPopular && /* @__PURE__ */ jsx18(SdBadge.Primary, { children: "\uCD94\uCC9C" })
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__ */ jsx18(SdText.Sub, { children: item.description })
690
+ item.description && /* @__PURE__ */ jsx19(SdText.Sub, { children: item.description })
616
691
  ] }),
617
- /* @__PURE__ */ jsxs7(Group5, { gap: 4, align: "baseline", children: [
618
- /* @__PURE__ */ jsx18(SdTitle.Display, { children: item.price }),
619
- item.period && /* @__PURE__ */ jsxs7(SdText.Sub, { children: [
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__ */ jsx18(Divider, {}),
625
- /* @__PURE__ */ jsx18(Stack7, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ jsxs7(Group5, { gap: "sm", wrap: "nowrap", children: [
626
- /* @__PURE__ */ jsx18(
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__ */ jsx18(IconCheck, { size: 12 }) : /* @__PURE__ */ jsx18(IconX2, { size: 12 })
708
+ children: f.included ? /* @__PURE__ */ jsx19(IconCheck, { size: 12 }) : /* @__PURE__ */ jsx19(IconX2, { size: 12 })
634
709
  }
635
710
  ),
636
- /* @__PURE__ */ jsx18(
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__ */ jsx18(SdButton.Outline, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a2 = item.ctaLabel) != null ? _a2 : "\uC2DC\uC791\uD558\uAE30" })
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__ */ jsx18(
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__ */ jsxs7(Stack7, { gap: "xl", children: [
660
- /* @__PURE__ */ jsxs7(Stack7, { gap: "xs", children: [
661
- /* @__PURE__ */ jsxs7(Group5, { justify: "space-between", align: "flex-start", children: [
662
- /* @__PURE__ */ jsx18(SdTitle.Card, { c: "white", children: item.name }),
663
- item.isPopular && /* @__PURE__ */ jsx18(SdBadge.Default, { c: "white", style: { borderColor: "rgba(255,255,255,0.5)" }, children: "\uCD94\uCC9C" })
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__ */ jsx18(SdText.Body, { c: "primary.1", children: item.description })
740
+ item.description && /* @__PURE__ */ jsx19(SdText.Body, { c: "primary.1", children: item.description })
666
741
  ] }),
667
- /* @__PURE__ */ jsxs7(Group5, { gap: 4, align: "baseline", children: [
668
- /* @__PURE__ */ jsx18(SdTitle.Display, { c: "white", children: item.price }),
669
- item.period && /* @__PURE__ */ jsxs7(SdText.Body, { c: "primary.2", children: [
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__ */ jsx18(Divider, { color: "primary.4" }),
675
- /* @__PURE__ */ jsx18(Stack7, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ jsxs7(Group5, { gap: "sm", wrap: "nowrap", children: [
676
- /* @__PURE__ */ jsx18(
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__ */ jsx18(IconCheck, { size: 12, color: "var(--mantine-color-primary-6)" }) : /* @__PURE__ */ jsx18(IconX2, { size: 12, color: "rgba(255,255,255,0.4)" })
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__ */ jsx18(
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__ */ jsx18(SdButton.White, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a2 = item.ctaLabel) != null ? _a2 : "\uC2DC\uC791\uD558\uAE30" })
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__ */ jsx18(SimpleGrid3, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map(
702
- (item, i) => item.isPopular ? /* @__PURE__ */ jsx18(Featured, { item, onSelect }, i) : /* @__PURE__ */ jsx18(Default, { item, onSelect }, i)
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 Box6, Stack as Stack8 } from "@mantine/core";
716
- import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
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__ */ jsx19(Box6, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsx19(Accordion, { variant: "separated", radius: "md", children: items.map((item, i) => /* @__PURE__ */ jsxs8(Accordion.Item, { value: String(i), children: [
720
- /* @__PURE__ */ jsx19(Accordion.Control, { children: /* @__PURE__ */ jsx19(SdText.Strong, { fz: "sm", children: item.question }) }),
721
- /* @__PURE__ */ jsx19(Accordion.Panel, { children: /* @__PURE__ */ jsx19(SdText.Body, { fz: "sm", children: item.answer }) })
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__ */ jsx19(Box6, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsx19(Accordion, { variant: "filled", radius: "md", children: items.map((item, i) => /* @__PURE__ */ jsxs8(Accordion.Item, { value: String(i), children: [
727
- /* @__PURE__ */ jsx19(Accordion.Control, { children: /* @__PURE__ */ jsx19(SdText.Strong, { fz: "sm", children: item.question }) }),
728
- /* @__PURE__ */ jsx19(Accordion.Panel, { children: /* @__PURE__ */ jsx19(SdText.Body, { fz: "sm", children: item.answer }) })
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__ */ jsxs8(Stack8, __spreadProps(__spreadValues({ gap: "xl" }, boxProps), { children: [
734
- /* @__PURE__ */ jsxs8(Stack8, { gap: "xs", children: [
735
- label && /* @__PURE__ */ jsx19(SdText.Eyebrow, { children: label }),
736
- /* @__PURE__ */ jsx19(SdTitle.Section, { children: title }),
737
- description && /* @__PURE__ */ jsx19(SdText.Body, { children: description })
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__ */ jsx19(Default2, { items })
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 Box7, Center as Center2, Group as Group6, Stack as Stack9 } from "@mantine/core";
753
- import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsx20(
773
- Box7,
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__ */ jsx20(Center2, { children: /* @__PURE__ */ jsxs9(Stack9, { gap: "xl", align: "center", maw: 600, children: [
780
- /* @__PURE__ */ jsxs9(Stack9, { gap: "sm", align: "center", children: [
781
- label && /* @__PURE__ */ jsx20(SdText.Eyebrow, { c: "primary.3", children: label }),
782
- /* @__PURE__ */ jsx20(SdTitle.Section, { c: "white", ta: "center", children: title }),
783
- description && /* @__PURE__ */ jsx20(SdText.Body, { c: "primary.2", ta: "center", children: description })
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__ */ jsxs9(Group6, { gap: "sm", children: [
786
- /* @__PURE__ */ jsx20(SdButton.White, { size: "md", onClick: onPrimary, children: primaryLabel }),
787
- secondaryLabel && /* @__PURE__ */ jsx20(
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__ */ jsx20(
820
- Box7,
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__ */ jsx20(Center2, { children: /* @__PURE__ */ jsxs9(Stack9, { gap: "lg", align: "center", maw: 560, children: [
828
- /* @__PURE__ */ jsxs9(Stack9, { gap: "sm", align: "center", children: [
829
- label && /* @__PURE__ */ jsx20(SdText.Eyebrow, { children: label }),
830
- /* @__PURE__ */ jsx20(SdTitle.Section, { ta: "center", children: title }),
831
- description && /* @__PURE__ */ jsx20(SdText.Body, { ta: "center", children: description })
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__ */ jsxs9(Group6, { gap: "sm", children: [
834
- /* @__PURE__ */ jsx20(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
835
- secondaryLabel && /* @__PURE__ */ jsx20(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
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__ */ jsx20(
860
- Box7,
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__ */ jsxs9(Group6, { justify: "space-between", align: "center", gap: "xl", children: [
870
- /* @__PURE__ */ jsxs9(Stack9, { gap: "xs", style: { flex: 1 }, children: [
871
- label && /* @__PURE__ */ jsx20(SdText.Eyebrow, { children: label }),
872
- /* @__PURE__ */ jsx20(SdTitle.Card, { children: title }),
873
- description && /* @__PURE__ */ jsx20(SdText.Sub, { children: description })
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__ */ jsxs9(Group6, { gap: "sm", wrap: "nowrap", children: [
876
- /* @__PURE__ */ jsx20(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
877
- secondaryLabel && /* @__PURE__ */ jsx20(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
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 Stack11,
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 Stack10
983
+ Stack as Stack11
909
984
  } from "@mantine/core";
910
985
  import Link2 from "next/link";
911
- import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
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__ */ jsx21(Card6, __spreadProps(__spreadValues({ withBorder: true }, cardProps), { children: /* @__PURE__ */ jsxs10(Stack10, { gap: "md", children: [
990
+ return /* @__PURE__ */ jsx22(Card6, __spreadProps(__spreadValues({ withBorder: true }, cardProps), { children: /* @__PURE__ */ jsxs11(Stack11, { gap: "md", children: [
916
991
  item.icon,
917
- /* @__PURE__ */ jsx21(SdBadge.Primary, { children: item.category }),
918
- /* @__PURE__ */ jsx21(SdTitle.Card, { children: item.title }),
919
- /* @__PURE__ */ jsx21(SdText.Body, { children: item.description }),
920
- item.href ? /* @__PURE__ */ jsxs10(Button, { variant: "subtle", color: "slate", component: Link2, href: item.href, children: [
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__ */ jsxs10(SdButton.Ghost, { onClick: () => onSelect == null ? void 0 : onSelect(item), children: [
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__ */ jsx21(SimpleGrid4, { cols, spacing: "xl", children: items.map((item, i) => /* @__PURE__ */ jsx21(SolutionCardItem, { item, onSelect }, i)) });
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 jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
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__ */ jsxs11(Stack11, { gap: "xl", children: [
946
- /* @__PURE__ */ jsx22(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : "all"), children: /* @__PURE__ */ jsx22(SdTabs.Pills.List, { children: categories.map((cat) => /* @__PURE__ */ jsx22(SdTabs.Pills.Tab, { value: cat, children: cat === "all" ? allLabel : cat }, cat)) }) }),
947
- /* @__PURE__ */ jsx22(SdSolutionCard.Grid, { items: filtered, cols, onSelect })
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__ */ jsx22(Stack11, { gap: 0, children: items.map((item, i) => {
1026
+ return /* @__PURE__ */ jsx23(Stack12, { gap: 0, children: items.map((item, i) => {
952
1027
  var _a, _b;
953
- return /* @__PURE__ */ jsxs11("div", { children: [
954
- i > 0 && /* @__PURE__ */ jsx22(Divider2, {}),
955
- /* @__PURE__ */ jsxs11(Group7, { align: "flex-start", py: "lg", gap: "lg", children: [
956
- item.icon && /* @__PURE__ */ jsx22(ThemeIcon4, { variant: "light", color: "primary", size: "xl", radius: "md", children: item.icon }),
957
- /* @__PURE__ */ jsxs11(Stack11, { gap: "xs", style: { flex: 1 }, children: [
958
- /* @__PURE__ */ jsx22(SdBadge.Primary, { children: item.category }),
959
- /* @__PURE__ */ jsx22(SdTitle.Card, { children: item.title }),
960
- /* @__PURE__ */ jsx22(SdText.Body, { children: item.description }),
961
- item.href ? /* @__PURE__ */ jsxs11(
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__ */ jsxs11(
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 Box8, SimpleGrid as SimpleGrid5, Tooltip } from "@mantine/core";
999
- import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
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__ */ jsx23(Tooltip, { label: client.name, withArrow: true, children: /* @__PURE__ */ jsx23(Anchor, { href: client.url, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsx23(
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__ */ jsx23(SimpleGrid5, { cols, spacing: "xl", children: items.map((client, i) => /* @__PURE__ */ jsx23(Box8, { style: { display: "flex", alignItems: "center", justifyContent: "center", padding: "12px 8px" }, children: /* @__PURE__ */ jsx23(LogoImage, { client, height: logoHeight }) }, i)) });
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__ */ jsxs12(Box8, { style: { overflow: "hidden" }, children: [
1030
- /* @__PURE__ */ jsx23("style", { children: KEYFRAME }),
1031
- /* @__PURE__ */ jsx23(
1032
- Box8,
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__ */ jsx23(LogoImage, { client, height: logoHeight }, i))
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 Box9, Stack as Stack12 } from "@mantine/core";
1062
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
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__ */ jsxs13(Stack12, { gap: "xs", children: [
1065
- /* @__PURE__ */ jsx24(Box9, { style: { borderRadius: "var(--mantine-radius-md)", overflow: "hidden", height }, children: /* @__PURE__ */ jsx24(
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__ */ jsxs13(SdText.Sub, { children: [
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__ */ jsx24(Box9, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ jsx24(MapFrame, { address, height }) }));
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__ */ jsx24(MapFrame, { address: mapped[0], height });
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__ */ jsxs13(Stack12, { gap: "md", children: [
1099
- /* @__PURE__ */ jsx24(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : mapped[0].label), children: /* @__PURE__ */ jsx24(SdTabs.Pills.List, { children: mapped.map((addr) => /* @__PURE__ */ jsx24(SdTabs.Pills.Tab, { value: addr.label, children: addr.label }, addr.label)) }) }),
1100
- /* @__PURE__ */ jsx24(MapFrame, { address: current, height })
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 Box10, Stack as Stack13 } from "@mantine/core";
1113
- import { Fragment as Fragment3, jsx as jsx25 } from "react/jsx-runtime";
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__ */ jsx25(Fragment3, { children });
1206
+ if (children) return /* @__PURE__ */ jsx26(Fragment3, { children });
1116
1207
  const filterdSlides = filterAndSort(slides);
1117
- return /* @__PURE__ */ jsx25(Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ jsx25(Carousel.Slide, { children: /* @__PURE__ */ jsx25(
1118
- Box10,
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__ */ jsx25(Stack13, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: /* @__PURE__ */ jsx25(
1130
- SdTextBox.Hero,
1131
- {
1132
- title: slide.title,
1133
- description: slide.description,
1134
- ta: "center",
1135
- align: "center"
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 Anchor2, Drawer, Group as Group8, Burger, Stack as Stack14 } from "@mantine/core";
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 jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
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__ */ jsxs14(Fragment4, { children: [
1150
- /* @__PURE__ */ jsx26(SdContainer, { h: "100%", children: /* @__PURE__ */ jsxs14(Group8, { justify: "space-between", h: "100%", children: [
1151
- /* @__PURE__ */ jsx26(Logo, {}),
1152
- /* @__PURE__ */ jsx26(Group8, { gap: "xl", visibleFrom: "sm", children: visibleTopItems.map((item) => /* @__PURE__ */ jsx26(Anchor2, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 15, children: item.label }, item.id)) }),
1153
- /* @__PURE__ */ jsx26(Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1154
- loginFlag && /* @__PURE__ */ jsxs14(Group8, { gap: "sm", visibleFrom: "sm", children: [
1155
- /* @__PURE__ */ jsx26(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
1156
- /* @__PURE__ */ jsx26(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
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__ */ jsx26(Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ jsxs14(Stack14, { children: [
1161
- visibleTopItems.map((item) => /* @__PURE__ */ jsx26(Anchor2, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 16, onClick: close, children: item.label }, item.id)),
1162
- loginFlag && /* @__PURE__ */ jsxs14(Stack14, { gap: "xs", mt: "md", children: [
1163
- /* @__PURE__ */ jsx26(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
1164
- /* @__PURE__ */ jsx26(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
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/index.tsx
1171
- import { Anchor as Anchor5, Box as Box11, Divider as Divider3, Grid as Grid5, Group as Group11 } from "@mantine/core";
1172
-
1173
- // ui/organism/Footer/FooterBrand.tsx
1174
- import { jsx as jsx27 } from "react/jsx-runtime";
1175
- function FooterBrand() {
1176
- return /* @__PURE__ */ jsx27(Logo, { size: "xs" });
1177
- }
1178
-
1179
- // ui/organism/Footer/FooterContact.tsx
1180
- import { Anchor as Anchor3, Group as Group9 } from "@mantine/core";
1181
- import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
1182
- function FooterContact({ company }) {
1183
- return /* @__PURE__ */ jsxs15(Group9, { gap: "lg", wrap: "wrap", children: [
1184
- /* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.5", children: company.name }),
1185
- /* @__PURE__ */ jsxs15(SdText.Sub, { c: "slate.5", children: [
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
- company.addresses.map((addr) => /* @__PURE__ */ jsx28(SdText.Sub, { c: "slate.5", children: addr.address }, addr.label)),
1190
- /* @__PURE__ */ jsxs15(Anchor3, { href: `tel:${company.tel}`, fz: "xs", c: "slate.5", underline: "never", children: [
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__ */ jsxs15(SdText.Sub, { c: "slate.5", children: [
1195
- "Fax ",
1196
- company.fax
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(Anchor3, { href: `mailto:${company.email}`, fz: "xs", c: "slate.5", underline: "never", children: company.email })
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
- // ui/organism/Footer/FooterNav.tsx
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(Box11, { children: [
1240
- /* @__PURE__ */ jsxs17(Grid5, { style: { "--grid-gutter": "48px" }, align: "flex-start", children: [
1241
- /* @__PURE__ */ jsx30(Grid5.Col, { span: { base: 12, md: 3 }, children: /* @__PURE__ */ jsx30(FooterBrand, {}) }),
1242
- /* @__PURE__ */ jsx30(Grid5.Col, { span: { base: 12, md: 9 }, children: /* @__PURE__ */ jsx30(FooterNav, { items: visibleUtility != null ? visibleUtility : [] }) })
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__ */ jsx30(Divider3, {}),
1245
- /* @__PURE__ */ jsx30(FooterContact, { company }),
1246
- /* @__PURE__ */ jsx30(Divider3, {}),
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__ */ jsx30(Group11, { gap: "lg", children: visiblePolicy.map((item) => /* @__PURE__ */ jsx30(
1256
- Anchor5,
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
- c: item.highlight ? "primary.6" : "slate.5",
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 Stack16 } from "@mantine/core";
1272
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
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__ */ jsx31(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs18(Stack16, { gap: "xl", children: [
1290
- /* @__PURE__ */ jsx31(
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__ */ jsx31(SdFeatures, { items, cols })
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 Stack17 } from "@mantine/core";
1307
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
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__ */ jsx32(Center3, { children: /* @__PURE__ */ jsxs19(Stack17, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
1323
- /* @__PURE__ */ jsx32(
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__ */ jsx32(Center3, { children: /* @__PURE__ */ jsx32(SdTimeline, { items }) })
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 Stack18 } from "@mantine/core";
1337
- import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
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__ */ jsx33(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ jsxs20(Stack18, { gap: "xl", children: [
1353
- (label || title || description) && /* @__PURE__ */ jsx33(SdTextBox.Section, { label, title, description }),
1354
- /* @__PURE__ */ jsx33(SdSteps.Bubble, { items })
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 Group12, Stack as Stack19, Text as Text2 } from "@mantine/core";
1360
- import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
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__ */ jsx34(
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__ */ jsx34(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx34(SdContainer, { children: /* @__PURE__ */ jsxs21(Stack19, { align: "center", gap: "lg", ta: "center", children: [
1377
- /* @__PURE__ */ jsx34(StatusCode, { code: "500" }),
1378
- /* @__PURE__ */ jsxs21(Stack19, { gap: "sm", align: "center", children: [
1379
- /* @__PURE__ */ jsx34(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
1380
- /* @__PURE__ */ jsx34(SdText.Body, { maw: 480, children: error.message || "\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." }),
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(Group12, { gap: "sm", justify: "center", children: [
1387
- /* @__PURE__ */ jsx34(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
1388
- onHome && /* @__PURE__ */ jsx34(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
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__ */ jsx34(Center4, { mih: "60vh", children: /* @__PURE__ */ jsx34(SdContainer, { children: /* @__PURE__ */ jsxs21(Stack19, { align: "center", gap: "lg", ta: "center", children: [
1401
- /* @__PURE__ */ jsx34(StatusCode, { code: "404" }),
1402
- /* @__PURE__ */ jsxs21(Stack19, { gap: "sm", align: "center", children: [
1403
- /* @__PURE__ */ jsx34(SdTitle.Section, { children: title }),
1404
- /* @__PURE__ */ jsx34(SdText.Body, { maw: 480, children: description })
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(Group12, { gap: "sm", justify: "center", children: [
1407
- onHome && /* @__PURE__ */ jsx34(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
1408
- onBack && /* @__PURE__ */ jsx34(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
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 jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
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__ */ jsx35(AppShell.Header, { children: /* @__PURE__ */ jsx35(SdHeader, { navItems }) }),
1425
- /* @__PURE__ */ jsx35(AppShell.Main, { children }),
1426
- /* @__PURE__ */ jsx35(SdFooter, { company: companyInfo, utilityLinks: navItems })
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 Box13, Divider as Divider4, Space } from "@mantine/core";
1432
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
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__ */ jsx36(SdContainer, { py: "xl", children });
1518
+ return /* @__PURE__ */ jsx34(SdContainer, { py: "xl", children });
1435
1519
  }
1436
1520
  function LayoutGap() {
1437
- return /* @__PURE__ */ jsx36(Space, { h: 48 });
1521
+ return /* @__PURE__ */ jsx34(Space, { h: 48 });
1438
1522
  }
1439
1523
  function Minimal({ label, title, description, children }) {
1440
- return /* @__PURE__ */ jsx36(Fragment5, { children: /* @__PURE__ */ jsxs23(Plain2, { children: [
1441
- /* @__PURE__ */ jsx36(
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__ */ jsx36(Divider4, {}),
1534
+ /* @__PURE__ */ jsx34(Divider4, {}),
1451
1535
  children
1452
1536
  ] }) });
1453
1537
  }
1454
1538
  function Plain2({ children }) {
1455
- return /* @__PURE__ */ jsxs23(Fragment5, { children: [
1456
- /* @__PURE__ */ jsx36(LayoutGap, {}),
1457
- /* @__PURE__ */ jsx36(Content, { children })
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(Fragment5, { children: [
1462
- /* @__PURE__ */ jsxs23(Box13, { style: {
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__ */ jsx36(Box13, { style: {
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__ */ jsx36(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx36(
1478
- Box13,
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__ */ jsx36(
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__ */ jsx36(Content, { children })
1587
+ /* @__PURE__ */ jsx34(Content, { children })
1504
1588
  ] });
1505
1589
  }
1506
1590
  function Brand({ label, title, description, children }) {
1507
- return /* @__PURE__ */ jsxs23(Fragment5, { children: [
1508
- /* @__PURE__ */ jsxs23(Box13, { style: {
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__ */ jsx36(Box13, { style: {
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__ */ jsx36(Box13, { style: {
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__ */ jsx36(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ jsx36(SdTextBox.Hero, { label, title, description, ta: "center", align: "center", maw: 640, mx: "auto", pt: 80, pb: 64 }) })
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__ */ jsx36(Content, { children })
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,