@yeongseoksong/framework 0.1.0 → 1.0.2

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.js CHANGED
@@ -66,7 +66,16 @@ __export(ui_exports, {
66
66
  PageLayout: () => PageLayout,
67
67
  SdBadge: () => SdBadge,
68
68
  SdButton: () => SdButton,
69
+ SdButtonCancel: () => SdButtonCancel,
70
+ SdButtonDelete: () => SdButtonDelete,
71
+ SdButtonGhost: () => SdButtonGhost,
72
+ SdButtonOutline: () => SdButtonOutline,
73
+ SdButtonPrimary: () => SdButtonPrimary,
74
+ SdButtonSecondary: () => SdButtonSecondary,
75
+ SdButtonWhite: () => SdButtonWhite,
69
76
  SdClients: () => SdClients,
77
+ SdClientsGrid: () => SdClientsGrid,
78
+ SdClientsMarquee: () => SdClientsMarquee,
70
79
  SdContainer: () => SdContainer,
71
80
  SdCta: () => SdCta,
72
81
  SdErrorView: () => SdErrorView,
@@ -77,19 +86,34 @@ __export(ui_exports, {
77
86
  SdHeader: () => SdHeader,
78
87
  SdInput: () => SdInput,
79
88
  SdMap: () => SdMap,
89
+ SdMapSingle: () => SdMapSingle,
90
+ SdMapTabs: () => SdMapTabs,
80
91
  SdModal: () => SdModal,
81
92
  SdNumberIcon: () => SdNumberIcon,
82
93
  SdPricingCard: () => SdPricingCard,
83
94
  SdQuote: () => SdQuote,
95
+ SdSkeleton: () => SdSkeleton,
96
+ SdSkeletonAvatar: () => SdSkeletonAvatar,
97
+ SdSkeletonCard: () => SdSkeletonCard,
98
+ SdSkeletonImage: () => SdSkeletonImage,
99
+ SdSkeletonText: () => SdSkeletonText,
100
+ SdSkeletonTitle: () => SdSkeletonTitle,
84
101
  SdSolution: () => SdSolution,
85
102
  SdSolutionCard: () => SdSolutionCard,
86
103
  SdSteps: () => SdSteps,
87
104
  SdStepsSection: () => SdStepsSection,
88
105
  SdTable: () => SdTable,
89
106
  SdTabs: () => SdTabs,
107
+ SdTabsOutline: () => SdTabsOutline,
108
+ SdTabsPills: () => SdTabsPills,
109
+ SdTabsUnderline: () => SdTabsUnderline,
90
110
  SdTestimonial: () => SdTestimonial,
91
111
  SdText: () => SdText,
92
112
  SdTextBox: () => SdTextBox,
113
+ SdTextBoxCard: () => SdTextBoxCard,
114
+ SdTextBoxHero: () => SdTextBoxHero,
115
+ SdTextBoxSection: () => SdTextBoxSection,
116
+ SdTextBoxSub: () => SdTextBoxSub,
93
117
  SdTimeline: () => SdTimeline,
94
118
  SdTimelineSection: () => SdTimelineSection,
95
119
  SdTitle: () => SdTitle,
@@ -101,6 +125,16 @@ module.exports = __toCommonJS(ui_exports);
101
125
  var import_image = __toESM(require("next/image"));
102
126
  var import_link = __toESM(require("next/link"));
103
127
  var import_core = require("@mantine/core");
128
+
129
+ // util/env.util.ts
130
+ var _a;
131
+ var COMPANY_NAME = (_a = process.env.NEXT_PUBLIC_COMPANY_NAME) != null ? _a : "";
132
+ var _a2;
133
+ var LOGO_SRC = (_a2 = process.env.NEXT_PUBLIC_LOGO_SRC) != null ? _a2 : "/logo.svg";
134
+ var _a3;
135
+ var LOGO_ALT = (_a3 = process.env.NEXT_PUBLIC_LOGO_ALT) != null ? _a3 : "\uB85C\uACE0";
136
+
137
+ // ui/atom/Logo.tsx
104
138
  var import_jsx_runtime = require("react/jsx-runtime");
105
139
  function Logo(_props) {
106
140
  const { size } = (0, import_core.useProps)("Logo", { size: "md" }, _props);
@@ -109,8 +143,8 @@ function Logo(_props) {
109
143
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/", style: { display: "inline-flex", alignItems: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
110
144
  import_image.default,
111
145
  {
112
- src: "/logo.svg",
113
- alt: "\uB85C\uACE0",
146
+ src: LOGO_SRC,
147
+ alt: LOGO_ALT,
114
148
  width: resolved.width,
115
149
  height: resolved.height,
116
150
  style: {
@@ -129,19 +163,19 @@ var import_core3 = require("@mantine/core");
129
163
  // ui/atom/Container.tsx
130
164
  var import_core2 = require("@mantine/core");
131
165
  var import_jsx_runtime2 = require("react/jsx-runtime");
132
- function SdContainer(_a) {
133
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
166
+ function SdContainer(_a4) {
167
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
134
168
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_core2.Container, __spreadProps(__spreadValues({ px: { base: "md", sm: "xl" } }, props), { children }));
135
169
  }
136
170
 
137
171
  // ui/atom/Tabs.tsx
138
172
  var import_jsx_runtime3 = require("react/jsx-runtime");
139
- function SdPanel(_a) {
140
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
173
+ function SdPanel(_a4) {
174
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
141
175
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core3.Tabs.Panel, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SdContainer, { py: "xl", children }) }));
142
176
  }
143
- function SdScrollableList(_a) {
144
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
177
+ function SdScrollableList(_a4) {
178
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
145
179
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core3.Box, { style: { overflowX: "auto", width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_core3.Tabs.List, __spreadProps(__spreadValues({}, props), { children })) });
146
180
  }
147
181
  function createTabs(defaults, scrollable = false) {
@@ -191,22 +225,24 @@ var SdTabs = {
191
225
  }
192
226
  })
193
227
  };
228
+ var SdTabsPills = SdTabs.Pills;
229
+ var SdTabsUnderline = SdTabs.Underline;
230
+ var SdTabsOutline = SdTabs.Outline;
194
231
 
195
232
  // ui/atom/Title.tsx
196
233
  var import_core4 = require("@mantine/core");
197
234
 
198
235
  // util/text.util.ts
199
236
  var COMPANY_TOKEN = "%c";
200
- var companyName = "UKNOWN";
201
237
  function t(text) {
202
- return text.replaceAll(COMPANY_TOKEN, companyName);
238
+ return text.replaceAll(COMPANY_TOKEN, COMPANY_NAME);
203
239
  }
204
240
 
205
241
  // ui/atom/Title.tsx
206
242
  var import_jsx_runtime4 = require("react/jsx-runtime");
207
243
  function createTitle(defaults) {
208
- return function SdTitle2(_a) {
209
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
244
+ return function SdTitle2(_a4) {
245
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
210
246
  const resolved = typeof children === "string" ? t(children) : children;
211
247
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_core4.Title, __spreadProps(__spreadValues(__spreadValues({}, defaults), props), { children: resolved }));
212
248
  };
@@ -226,8 +262,8 @@ var SdTitle = {
226
262
  var import_core5 = require("@mantine/core");
227
263
  var import_jsx_runtime5 = require("react/jsx-runtime");
228
264
  function createText(defaults) {
229
- return function SdText2(_a) {
230
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
265
+ return function SdText2(_a4) {
266
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
231
267
  const resolved = typeof children === "string" ? t(children) : children;
232
268
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_core5.Text, __spreadProps(__spreadValues(__spreadValues({}, defaults), props), { children: resolved }));
233
269
  };
@@ -247,14 +283,16 @@ var import_core6 = require("@mantine/core");
247
283
  var import_icons_react = require("@tabler/icons-react");
248
284
  var import_jsx_runtime6 = require("react/jsx-runtime");
249
285
  function createButton(defaults) {
250
- return function SdButton2(_a) {
251
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
286
+ return function SdButton2(_a4) {
287
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
252
288
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_core6.Button, __spreadProps(__spreadValues(__spreadValues({}, defaults), props), { children }));
253
289
  };
254
290
  }
255
291
  var SdButton = {
256
292
  /** 주요 액션 — filled primary */
257
293
  Primary: createButton({ color: "primary" }),
294
+ /** 보조 액션 — white bg + slate text */
295
+ Secondary: createButton({ variant: "white", color: "slate" }),
258
296
  /** 보조 액션 — outline */
259
297
  Outline: createButton({ variant: "outline", color: "primary" }),
260
298
  /** 텍스트 수준 — subtle */
@@ -266,6 +304,13 @@ var SdButton = {
266
304
  /** 취소 — outline slate + X 아이콘 */
267
305
  Cancel: createButton({ variant: "outline", color: "slate", leftSection: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons_react.IconX, { size: 16 }) })
268
306
  };
307
+ var SdButtonPrimary = SdButton.Primary;
308
+ var SdButtonSecondary = SdButton.Secondary;
309
+ var SdButtonOutline = SdButton.Outline;
310
+ var SdButtonGhost = SdButton.Ghost;
311
+ var SdButtonWhite = SdButton.White;
312
+ var SdButtonDelete = SdButton.Delete;
313
+ var SdButtonCancel = SdButton.Cancel;
269
314
 
270
315
  // ui/atom/Quote.tsx
271
316
  var import_core7 = require("@mantine/core");
@@ -282,12 +327,12 @@ function QuoteInner({ lines, name, role }) {
282
327
  ] })
283
328
  ] });
284
329
  }
285
- function Plain(_a) {
286
- var _b = _a, { lines, name, role } = _b, boxProps = __objRest(_b, ["lines", "name", "role"]);
330
+ function Plain(_a4) {
331
+ var _b = _a4, { lines, name, role } = _b, boxProps = __objRest(_b, ["lines", "name", "role"]);
287
332
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Box, __spreadProps(__spreadValues({ w: "fit-content" }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(QuoteInner, { lines, name, role }) })) });
288
333
  }
289
- function CardQuote(_a) {
290
- var _b = _a, { lines, name, role } = _b, boxProps = __objRest(_b, ["lines", "name", "role"]);
334
+ function CardQuote(_a4) {
335
+ var _b = _a4, { lines, name, role } = _b, boxProps = __objRest(_b, ["lines", "name", "role"]);
291
336
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_core7.Card, __spreadProps(__spreadValues({ w: "fit-content" }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(QuoteInner, { lines, name, role }) })) });
292
337
  }
293
338
  var SdQuote = {
@@ -318,12 +363,12 @@ var base = {
318
363
  verticalSpacing: "sm",
319
364
  horizontalSpacing: "md"
320
365
  };
321
- function SpecTh(_a) {
322
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
366
+ function SpecTh(_a4) {
367
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
323
368
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_core8.Table.Th, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SdText.Strong, { c: "white", children }) }));
324
369
  }
325
- function SpecTd(_a) {
326
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
370
+ function SpecTd(_a4) {
371
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
327
372
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_core8.Table.Td, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SdText.Body, { children }) }));
328
373
  }
329
374
  var Spec = createTable(__spreadProps(__spreadValues({}, base), {
@@ -363,8 +408,8 @@ var SdModal = createModal({
363
408
  // ui/atom/NumberIcon.tsx
364
409
  var import_core10 = require("@mantine/core");
365
410
  var import_jsx_runtime10 = require("react/jsx-runtime");
366
- function SdNumberIcon(_a) {
367
- var _b = _a, { value, size = 48, radius = "xl", color = "primary" } = _b, props = __objRest(_b, ["value", "size", "radius", "color"]);
411
+ function SdNumberIcon(_a4) {
412
+ var _b = _a4, { value, size = 48, radius = "xl", color = "primary" } = _b, props = __objRest(_b, ["value", "size", "radius", "color"]);
368
413
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_core10.ThemeIcon, __spreadProps(__spreadValues({ size, radius, color }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SdText.Strong, { c: "white", children: value }) }));
369
414
  }
370
415
 
@@ -372,8 +417,8 @@ function SdNumberIcon(_a) {
372
417
  var import_core11 = require("@mantine/core");
373
418
  var import_jsx_runtime11 = require("react/jsx-runtime");
374
419
  function createBadge(defaults) {
375
- return function SdBadge2(_a) {
376
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
420
+ return function SdBadge2(_a4) {
421
+ var _b = _a4, { children } = _b, props = __objRest(_b, ["children"]);
377
422
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_core11.Badge, __spreadProps(__spreadValues(__spreadValues({}, defaults), props), { children }));
378
423
  };
379
424
  }
@@ -392,26 +437,26 @@ var SdBadge = {
392
437
  var import_core12 = require("@mantine/core");
393
438
  var import_jsx_runtime12 = require("react/jsx-runtime");
394
439
  function createTextInput(defaults) {
395
- return function SdInput2(_a) {
396
- var props = __objRest(_a, []);
440
+ return function SdInput2(_a4) {
441
+ var props = __objRest(_a4, []);
397
442
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_core12.TextInput, __spreadValues(__spreadValues({}, defaults), props));
398
443
  };
399
444
  }
400
445
  function createTextarea(defaults) {
401
- return function SdInputTextarea(_a) {
402
- var props = __objRest(_a, []);
446
+ return function SdInputTextarea(_a4) {
447
+ var props = __objRest(_a4, []);
403
448
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_core12.Textarea, __spreadValues(__spreadValues({}, defaults), props));
404
449
  };
405
450
  }
406
451
  function createPasswordInput(defaults) {
407
- return function SdInputPassword(_a) {
408
- var props = __objRest(_a, []);
452
+ return function SdInputPassword(_a4) {
453
+ var props = __objRest(_a4, []);
409
454
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_core12.PasswordInput, __spreadValues(__spreadValues({}, defaults), props));
410
455
  };
411
456
  }
412
457
  function createSelect(defaults) {
413
- return function SdInputSelect(_a) {
414
- var props = __objRest(_a, []);
458
+ return function SdInputSelect(_a4) {
459
+ var props = __objRest(_a4, []);
415
460
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_core12.Select, __spreadValues(__spreadValues({}, defaults), props));
416
461
  };
417
462
  }
@@ -428,12 +473,65 @@ var SdInput = {
428
473
  Select: createSelect({})
429
474
  };
430
475
 
431
- // ui/molecule/TextBox.tsx
476
+ // ui/atom/Skeleton.tsx
432
477
  var import_core13 = require("@mantine/core");
433
478
  var import_jsx_runtime13 = require("react/jsx-runtime");
479
+ function SkeletonText(_a4) {
480
+ var _b = _a4, { width = "100%" } = _b, props = __objRest(_b, ["width"]);
481
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core13.Skeleton, __spreadValues({ height: 14, width, radius: "sm" }, props));
482
+ }
483
+ function SkeletonTitle(_a4) {
484
+ var _b = _a4, { width = "60%" } = _b, props = __objRest(_b, ["width"]);
485
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core13.Skeleton, __spreadValues({ height: 20, width, radius: "sm" }, props));
486
+ }
487
+ function SkeletonImage(_a4) {
488
+ var _b = _a4, { height = 200 } = _b, props = __objRest(_b, ["height"]);
489
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core13.Skeleton, __spreadValues({ height, radius: "md" }, props));
490
+ }
491
+ function SkeletonAvatar(_a4) {
492
+ var _b = _a4, { size = 40 } = _b, props = __objRest(_b, ["size"]);
493
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core13.Skeleton, __spreadValues({ height: size, width: size, circle: true }, props));
494
+ }
495
+ function SkeletonCard({ height, lines = 3 }) {
496
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
497
+ import_core13.Box,
498
+ {
499
+ p: "md",
500
+ style: { borderRadius: "var(--mantine-radius-md)", border: "1px solid var(--mantine-color-gray-3)", height },
501
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core13.Stack, { gap: "sm", children: [
502
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_core13.Skeleton, { height: 20, width: "50%", radius: "sm" }),
503
+ Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
504
+ import_core13.Skeleton,
505
+ {
506
+ height: 14,
507
+ width: i === lines - 1 ? "70%" : "100%",
508
+ radius: "sm"
509
+ },
510
+ i
511
+ ))
512
+ ] })
513
+ }
514
+ );
515
+ }
516
+ var SdSkeleton = {
517
+ Card: SkeletonCard,
518
+ Text: SkeletonText,
519
+ Title: SkeletonTitle,
520
+ Image: SkeletonImage,
521
+ Avatar: SkeletonAvatar
522
+ };
523
+ var SdSkeletonCard = SkeletonCard;
524
+ var SdSkeletonText = SkeletonText;
525
+ var SdSkeletonTitle = SkeletonTitle;
526
+ var SdSkeletonImage = SkeletonImage;
527
+ var SdSkeletonAvatar = SkeletonAvatar;
528
+
529
+ // ui/molecule/TextBox.tsx
530
+ var import_core14 = require("@mantine/core");
531
+ var import_jsx_runtime14 = require("react/jsx-runtime");
434
532
  function createTextBox(titleVariant, defaultGap = "xs", descVariant = "Body", color_ = void 0) {
435
- return function SdTextBox2(_a) {
436
- var _b = _a, {
533
+ return function SdTextBox2(_a4) {
534
+ var _b = _a4, {
437
535
  label,
438
536
  title,
439
537
  description,
@@ -454,10 +552,10 @@ function createTextBox(titleVariant, defaultGap = "xs", descVariant = "Body", co
454
552
  const variant = variantOverride != null ? variantOverride : titleVariant;
455
553
  const TitleComponent = SdTitle[variant];
456
554
  const DescComponent = SdText[descVariant];
457
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_core13.Stack, __spreadProps(__spreadValues({ gap: defaultGap }, stackProps), { children: [
458
- label && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SdText.Eyebrow, { children: label }),
459
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(TitleComponent, { c: colorRes, children: title }),
460
- description && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DescComponent, { c: colorRes, maw: maxDescWidth, mt: 4, children: description }),
555
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_core14.Stack, __spreadProps(__spreadValues({ gap: defaultGap }, stackProps), { children: [
556
+ label && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SdText.Eyebrow, { children: label }),
557
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(TitleComponent, { c: colorRes, children: title }),
558
+ description && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DescComponent, { c: colorRes, maw: maxDescWidth, mt: 4, children: description }),
461
559
  children
462
560
  ] }));
463
561
  };
@@ -468,9 +566,13 @@ var SdTextBox = {
468
566
  Card: createTextBox("Card", "xs", "Body"),
469
567
  Sub: createTextBox("Sub", "xs", "Sub")
470
568
  };
569
+ var SdTextBoxHero = SdTextBox.Hero;
570
+ var SdTextBoxSection = SdTextBox.Section;
571
+ var SdTextBoxCard = SdTextBox.Card;
572
+ var SdTextBoxSub = SdTextBox.Sub;
471
573
 
472
574
  // ui/molecule/Features.tsx
473
- var import_core14 = require("@mantine/core");
575
+ var import_core15 = require("@mantine/core");
474
576
 
475
577
  // util/sort.util.ts
476
578
  function filterAndSort(items) {
@@ -478,45 +580,51 @@ function filterAndSort(items) {
478
580
  }
479
581
 
480
582
  // ui/molecule/Features.tsx
481
- var import_jsx_runtime14 = require("react/jsx-runtime");
583
+ var import_jsx_runtime15 = require("react/jsx-runtime");
482
584
  function SdFeatures({ items, cols = { base: 1, sm: 2, md: 3 } }) {
483
585
  const visible = filterAndSort(items);
484
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_core14.SimpleGrid, { cols, spacing: "xl", children: visible.map((item) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_core14.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_core14.Stack, { gap: "sm", children: [
485
- item.icon,
486
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
487
- SdTextBox.Card,
488
- {
489
- label: item.label,
490
- title: item.title,
491
- description: item.description
492
- }
493
- )
494
- ] }, item.id) })) });
586
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core15.SimpleGrid, { cols, spacing: "xl", children: visible.map((item) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
587
+ import_core15.Card,
588
+ {
589
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core15.Stack, { gap: "sm", children: [
590
+ item.icon,
591
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
592
+ SdTextBox.Card,
593
+ {
594
+ label: item.label,
595
+ title: item.title,
596
+ description: item.description
597
+ }
598
+ )
599
+ ] }, item.id)
600
+ },
601
+ item.id
602
+ )) });
495
603
  }
496
604
 
497
605
  // ui/molecule/Timeline.tsx
498
- var import_core15 = require("@mantine/core");
499
- var import_jsx_runtime15 = require("react/jsx-runtime");
606
+ var import_core16 = require("@mantine/core");
607
+ var import_jsx_runtime16 = require("react/jsx-runtime");
500
608
  function SdTimeline({ items }) {
501
609
  const grouped = items.filter((item) => item.isShow).sort((a, b) => b.year - a.year || b.month - a.month).reduce((acc, item) => {
502
- var _a, _b;
503
- ((_b = acc[_a = item.year]) != null ? _b : acc[_a] = []).push(item);
610
+ var _a4, _b;
611
+ ((_b = acc[_a4 = item.year]) != null ? _b : acc[_a4] = []).push(item);
504
612
  return acc;
505
613
  }, {});
506
614
  const years = Object.keys(grouped).map(Number).sort((a, b) => b - a);
507
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core15.Timeline, { active: items.length, bulletSize: 24, lineWidth: 2, children: years.map((year) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
508
- import_core15.Timeline.Item,
615
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_core16.Timeline, { active: items.length, bulletSize: 24, lineWidth: 2, children: years.map((year) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
616
+ import_core16.Timeline.Item,
509
617
  {
510
- title: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(SdTitle.Sub, { children: [
618
+ title: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(SdTitle.Sub, { children: [
511
619
  year,
512
620
  "\uB144"
513
621
  ] }),
514
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_core15.Stack, { gap: 6, mt: "xs", children: grouped[year].map((event) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_core15.Group, { gap: "md", align: "center", wrap: "nowrap", children: [
515
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(SdText.Eyebrow, { miw: 28, children: [
622
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_core16.Stack, { gap: 6, mt: "xs", children: grouped[year].map((event) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_core16.Group, { gap: "md", align: "center", wrap: "nowrap", children: [
623
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(SdText.Eyebrow, { miw: 28, children: [
516
624
  event.month,
517
625
  "\uC6D4"
518
626
  ] }),
519
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SdText.Sub, { style: { flex: 1 }, children: event.description })
627
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SdText.Sub, { style: { flex: 1 }, children: event.description })
520
628
  ] }, event.id)) })
521
629
  },
522
630
  year
@@ -524,26 +632,26 @@ function SdTimeline({ items }) {
524
632
  }
525
633
 
526
634
  // ui/molecule/Steps.tsx
527
- var import_core16 = require("@mantine/core");
635
+ var import_core17 = require("@mantine/core");
528
636
  var import_icons_react2 = require("@tabler/icons-react");
529
- var import_jsx_runtime16 = require("react/jsx-runtime");
530
637
  var import_jsx_runtime17 = require("react/jsx-runtime");
638
+ var import_jsx_runtime18 = require("react/jsx-runtime");
531
639
  function BubbleStep({ item, index, isLast }) {
532
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_core16.Group, { align: "flex-start", gap: "lg", wrap: "nowrap", children: [
533
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_core16.Box, { style: { display: "flex", flexDirection: "column", alignItems: "center", flexShrink: 0 }, children: [
534
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SdNumberIcon, { value: String(index + 1).padStart(2, "0") }),
535
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { style: { width: 2, flex: 1, minHeight: 32, marginTop: 8, background: "var(--mantine-color-primary-2)" } })
640
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Group, { align: "flex-start", gap: "lg", wrap: "nowrap", children: [
641
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Box, { style: { display: "flex", flexDirection: "column", alignItems: "center", flexShrink: 0 }, children: [
642
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdNumberIcon, { value: String(index + 1).padStart(2, "0") }),
643
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { style: { width: 2, flex: 1, minHeight: 32, marginTop: 8, background: "var(--mantine-color-primary-2)" } })
536
644
  ] }),
537
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SdTextBox.Card, { title: item.title, description: item.description, pb: !isLast ? "xl" : 0, pt: 4 })
645
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdTextBox.Card, { title: item.title, description: item.description, pb: !isLast ? "xl" : 0, pt: 4 })
538
646
  ] });
539
647
  }
540
648
  function Bubble({ items }) {
541
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BubbleStep, { item, index: i, isLast: i === items.length - 1 }, i)) });
649
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BubbleStep, { item, index: i, isLast: i === items.length - 1 }, i)) });
542
650
  }
543
651
  function CardStep({ item, index }) {
544
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_core16.Card, { withBorder: true, radius: "md", p: 0, style: { height: "100%", overflow: "hidden" }, children: [
545
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
546
- import_core16.Box,
652
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Card, { withBorder: true, radius: "md", p: 0, style: { height: "100%", overflow: "hidden" }, children: [
653
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
654
+ import_core17.Box,
547
655
  {
548
656
  py: "lg",
549
657
  style: {
@@ -551,84 +659,84 @@ function CardStep({ item, index }) {
551
659
  justifyContent: "center",
552
660
  background: "var(--mantine-color-primary-0)"
553
661
  },
554
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(SdText.Eyebrow, { children: [
662
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(SdText.Eyebrow, { children: [
555
663
  "STEP ",
556
664
  String(index + 1).padStart(2, "0")
557
665
  ] })
558
666
  }
559
667
  ),
560
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { p: "lg", style: { textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SdTextBox.Card, { title: item.title, description: item.description }) })
668
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { p: "lg", style: { textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdTextBox.Card, { title: item.title, description: item.description }) })
561
669
  ] });
562
670
  }
563
671
  function CardArrow({ direction }) {
564
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.ThemeIcon, { size: 36, radius: "xl", variant: "light", color: "primary", children: direction === "right" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons_react2.IconArrowRight, { size: 20, stroke: 2.5 }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons_react2.IconArrowDown, { size: 20, stroke: 2.5 }) });
672
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.ThemeIcon, { size: 36, radius: "xl", variant: "light", color: "primary", children: direction === "right" ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons_react2.IconArrowRight, { size: 20, stroke: 2.5 }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons_react2.IconArrowDown, { size: 20, stroke: 2.5 }) });
565
673
  }
566
674
  function CardVariant({ items }) {
567
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
568
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Stack, { gap: "sm", hiddenFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime16.Fragment, { children: [
569
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CardStep, { item, index: i }),
570
- i < items.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CardArrow, { direction: "down" }) })
675
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
676
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Stack, { gap: "sm", hiddenFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime17.Fragment, { children: [
677
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardStep, { item, index: i }),
678
+ i < items.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardArrow, { direction: "down" }) })
571
679
  ] }, i)) }),
572
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Group, { wrap: "nowrap", align: "stretch", gap: 0, visibleFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime16.Fragment, { children: [
573
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CardStep, { item, index: i }) }),
574
- i < items.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { style: { display: "flex", alignItems: "center", padding: "0 8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CardArrow, { direction: "right" }) })
680
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Group, { wrap: "nowrap", align: "stretch", gap: 0, visibleFrom: "sm", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime17.Fragment, { children: [
681
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardStep, { item, index: i }) }),
682
+ i < items.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { style: { display: "flex", alignItems: "center", padding: "0 8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardArrow, { direction: "right" }) })
575
683
  ] }, i)) })
576
684
  ] });
577
685
  }
578
686
  function StripStep({ item, index }) {
579
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Box, { pl: "md", style: { borderLeft: "3px solid var(--mantine-color-primary-6)" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_core16.Stack, { gap: 4, children: [
580
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(SdText.Eyebrow, { children: [
687
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, { pl: "md", style: { borderLeft: "3px solid var(--mantine-color-primary-6)" }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Stack, { gap: 4, children: [
688
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(SdText.Eyebrow, { children: [
581
689
  "STEP ",
582
690
  String(index + 1).padStart(2, "0")
583
691
  ] }),
584
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SdTextBox.Card, { title: item.title, description: item.description })
692
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdTextBox.Card, { title: item.title, description: item.description })
585
693
  ] }) });
586
694
  }
587
695
  function Strip({ items }) {
588
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_core16.Stack, { gap: "xl", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(StripStep, { item, index: i }, i)) });
696
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Stack, { gap: "xl", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(StripStep, { item, index: i }, i)) });
589
697
  }
590
698
  var SdSteps = { Bubble, Card: CardVariant, Strip };
591
699
 
592
700
  // ui/molecule/Testimonial.tsx
593
- var import_core17 = require("@mantine/core");
594
- var import_jsx_runtime18 = require("react/jsx-runtime");
701
+ var import_core18 = require("@mantine/core");
702
+ var import_jsx_runtime19 = require("react/jsx-runtime");
595
703
  function AuthorRow({ item }) {
596
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Group, { gap: "sm", wrap: "nowrap", children: [
597
- item.avatar && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Avatar, { src: item.avatar, size: "md", radius: "xl" }),
598
- !item.avatar && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Avatar, { size: "md", radius: "xl", color: "primary", children: item.name.charAt(0) }),
599
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Stack, { gap: 0, children: [
600
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdText.Strong, { fz: "sm", children: item.name }),
601
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(SdText.Sub, { children: [
704
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { gap: "sm", wrap: "nowrap", children: [
705
+ item.avatar && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Avatar, { src: item.avatar, size: "md", radius: "xl" }),
706
+ !item.avatar && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Avatar, { size: "md", radius: "xl", color: "primary", children: item.name.charAt(0) }),
707
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: 0, children: [
708
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdText.Strong, { fz: "sm", children: item.name }),
709
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(SdText.Sub, { children: [
602
710
  item.role,
603
711
  item.company ? ` \xB7 ${item.company}` : ""
604
712
  ] })
605
713
  ] })
606
714
  ] });
607
715
  }
608
- function CardTestimonial(_a) {
609
- var _b = _a, { item } = _b, boxProps = __objRest(_b, ["item"]);
610
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Card, __spreadProps(__spreadValues({ h: "100%" }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Stack, { gap: "md", h: "100%", children: [
611
- item.rating && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
612
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Stack, { gap: "xs", style: { flex: 1 }, children: [
613
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
614
- item.lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdText.Body, { children: line }, i))
716
+ function CardTestimonial(_a4) {
717
+ var _b = _a4, { item } = _b, boxProps = __objRest(_b, ["item"]);
718
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Card, __spreadProps(__spreadValues({ h: "100%" }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "md", h: "100%", children: [
719
+ item.rating && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
720
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "xs", style: { flex: 1 }, children: [
721
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
722
+ item.lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdText.Body, { children: line }, i))
615
723
  ] }),
616
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AuthorRow, { item })
724
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AuthorRow, { item })
617
725
  ] }) }));
618
726
  }
619
- function Strip2(_a) {
620
- var _b = _a, { item } = _b, boxProps = __objRest(_b, ["item"]);
621
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Stack, { gap: "md", children: [
622
- item.rating && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
623
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_core17.Group, { gap: 4, align: "flex-start", children: [
624
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
625
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.Stack, { gap: "xs", style: { flex: 1 }, children: item.lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SdText.Body, { children: line }, i)) })
727
+ function Strip2(_a4) {
728
+ var _b = _a4, { item } = _b, boxProps = __objRest(_b, ["item"]);
729
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "md", children: [
730
+ item.rating && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Rating, { value: item.rating, readOnly: true, size: "sm", color: "primary" }),
731
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { gap: 4, align: "flex-start", children: [
732
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdTitle.Display, { c: "primary.6", lh: 0.8, "aria-hidden": true, children: "\u201C" }),
733
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Stack, { gap: "xs", style: { flex: 1 }, children: item.lines.map((line, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdText.Body, { children: line }, i)) })
626
734
  ] }),
627
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AuthorRow, { item })
735
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AuthorRow, { item })
628
736
  ] }) }));
629
737
  }
630
738
  function Grid({ items, cols = { base: 1, sm: 2, md: 3 } }) {
631
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_core17.SimpleGrid, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardTestimonial, { item }, i)) });
739
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.SimpleGrid, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CardTestimonial, { item }, i)) });
632
740
  }
633
741
  var SdTestimonial = {
634
742
  /** 카드형 — 그리드 배치용 */
@@ -640,46 +748,46 @@ var SdTestimonial = {
640
748
  };
641
749
 
642
750
  // ui/molecule/PricingCard.tsx
643
- var import_core18 = require("@mantine/core");
751
+ var import_core19 = require("@mantine/core");
644
752
  var import_icons_react3 = require("@tabler/icons-react");
645
- var import_jsx_runtime19 = require("react/jsx-runtime");
646
- function Default(_a) {
647
- var _b = _a, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
648
- var _a2;
649
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
650
- import_core18.Card,
753
+ var import_jsx_runtime20 = require("react/jsx-runtime");
754
+ function Default(_a4) {
755
+ var _b = _a4, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
756
+ var _a5;
757
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
758
+ import_core19.Card,
651
759
  __spreadProps(__spreadValues({
652
760
  withBorder: true,
653
761
  style: { position: "relative" }
654
762
  }, cardProps), {
655
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "xl", children: [
656
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "xs", children: [
657
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { justify: "space-between", align: "flex-start", children: [
658
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdTitle.Card, { children: item.name }),
659
- item.isPopular && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdBadge.Primary, { children: "\uCD94\uCC9C" })
763
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Stack, { gap: "xl", children: [
764
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Stack, { gap: "xs", children: [
765
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Group, { justify: "space-between", align: "flex-start", children: [
766
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdTitle.Card, { children: item.name }),
767
+ item.isPopular && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdBadge.Primary, { children: "\uCD94\uCC9C" })
660
768
  ] }),
661
- item.description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdText.Sub, { children: item.description })
769
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Sub, { children: item.description })
662
770
  ] }),
663
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { gap: 4, align: "baseline", children: [
664
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdTitle.Display, { children: item.price }),
665
- item.period && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(SdText.Sub, { children: [
771
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Group, { gap: 4, align: "baseline", children: [
772
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdTitle.Display, { children: item.price }),
773
+ item.period && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(SdText.Sub, { children: [
666
774
  "/ ",
667
775
  item.period
668
776
  ] })
669
777
  ] }),
670
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Divider, {}),
671
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Stack, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { gap: "sm", wrap: "nowrap", children: [
672
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
673
- import_core18.ThemeIcon,
778
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Divider, {}),
779
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Stack, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Group, { gap: "sm", wrap: "nowrap", children: [
780
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
781
+ import_core19.ThemeIcon,
674
782
  {
675
783
  size: "xs",
676
784
  radius: "xl",
677
785
  color: f.included ? "primary" : "slate",
678
786
  variant: f.included ? "filled" : "subtle",
679
- children: f.included ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons_react3.IconCheck, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons_react3.IconX, { size: 12 })
787
+ children: f.included ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons_react3.IconCheck, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons_react3.IconX, { size: 12 })
680
788
  }
681
789
  ),
682
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
790
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
683
791
  SdText.Body,
684
792
  {
685
793
  fz: "sm",
@@ -688,48 +796,48 @@ function Default(_a) {
688
796
  }
689
797
  )
690
798
  ] }, i)) }),
691
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdButton.Outline, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a2 = item.ctaLabel) != null ? _a2 : "\uC2DC\uC791\uD558\uAE30" })
799
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdButton.Outline, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a5 = item.ctaLabel) != null ? _a5 : "\uC2DC\uC791\uD558\uAE30" })
692
800
  ] })
693
801
  })
694
802
  );
695
803
  }
696
- function Featured(_a) {
697
- var _b = _a, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
698
- var _a2;
699
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
700
- import_core18.Card,
804
+ function Featured(_a4) {
805
+ var _b = _a4, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
806
+ var _a5;
807
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
808
+ import_core19.Card,
701
809
  __spreadProps(__spreadValues({
702
810
  bg: "primary.6",
703
811
  style: { position: "relative" }
704
812
  }, cardProps), {
705
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "xl", children: [
706
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Stack, { gap: "xs", children: [
707
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { justify: "space-between", align: "flex-start", children: [
708
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdTitle.Card, { c: "white", children: item.name }),
709
- item.isPopular && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdBadge.Default, { c: "white", style: { borderColor: "rgba(255,255,255,0.5)" }, children: "\uCD94\uCC9C" })
813
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Stack, { gap: "xl", children: [
814
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Stack, { gap: "xs", children: [
815
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Group, { justify: "space-between", align: "flex-start", children: [
816
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdTitle.Card, { c: "white", children: item.name }),
817
+ item.isPopular && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdBadge.Default, { c: "white", style: { borderColor: "rgba(255,255,255,0.5)" }, children: "\uCD94\uCC9C" })
710
818
  ] }),
711
- item.description && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdText.Body, { c: "primary.1", children: item.description })
819
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Body, { c: "primary.1", children: item.description })
712
820
  ] }),
713
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { gap: 4, align: "baseline", children: [
714
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdTitle.Display, { c: "white", children: item.price }),
715
- item.period && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(SdText.Body, { c: "primary.2", children: [
821
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Group, { gap: 4, align: "baseline", children: [
822
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdTitle.Display, { c: "white", children: item.price }),
823
+ item.period && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(SdText.Body, { c: "primary.2", children: [
716
824
  "/ ",
717
825
  item.period
718
826
  ] })
719
827
  ] }),
720
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Divider, { color: "primary.4" }),
721
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.Stack, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_core18.Group, { gap: "sm", wrap: "nowrap", children: [
722
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
723
- import_core18.ThemeIcon,
828
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Divider, { color: "primary.4" }),
829
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Stack, { gap: "sm", children: item.features.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Group, { gap: "sm", wrap: "nowrap", children: [
830
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
831
+ import_core19.ThemeIcon,
724
832
  {
725
833
  size: "xs",
726
834
  radius: "xl",
727
835
  color: "white",
728
836
  variant: f.included ? "filled" : "subtle",
729
- children: f.included ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons_react3.IconCheck, { size: 12, color: "var(--mantine-color-primary-6)" }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_icons_react3.IconX, { size: 12, color: "rgba(255,255,255,0.4)" })
837
+ children: f.included ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons_react3.IconCheck, { size: 12, color: "var(--mantine-color-primary-6)" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons_react3.IconX, { size: 12, color: "rgba(255,255,255,0.4)" })
730
838
  }
731
839
  ),
732
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
840
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
733
841
  SdText.Body,
734
842
  {
735
843
  fz: "sm",
@@ -738,14 +846,14 @@ function Featured(_a) {
738
846
  }
739
847
  )
740
848
  ] }, i)) }),
741
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SdButton.White, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a2 = item.ctaLabel) != null ? _a2 : "\uC2DC\uC791\uD558\uAE30" })
849
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdButton.White, { fullWidth: true, onClick: () => onSelect == null ? void 0 : onSelect(item), children: (_a5 = item.ctaLabel) != null ? _a5 : "\uC2DC\uC791\uD558\uAE30" })
742
850
  ] })
743
851
  })
744
852
  );
745
853
  }
746
854
  function Grid2({ items, cols = { base: 1, sm: 2, md: 3 }, onSelect }) {
747
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_core18.SimpleGrid, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map(
748
- (item, i) => item.isPopular ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Featured, { item, onSelect }, i) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Default, { item, onSelect }, i)
855
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.SimpleGrid, { cols, spacing: "xl", style: { alignItems: "stretch" }, children: items.map(
856
+ (item, i) => item.isPopular ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Featured, { item, onSelect }, i) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Default, { item, onSelect }, i)
749
857
  ) });
750
858
  }
751
859
  var SdPricingCard = {
@@ -758,31 +866,31 @@ var SdPricingCard = {
758
866
  };
759
867
 
760
868
  // ui/molecule/Faq.tsx
761
- var import_core19 = require("@mantine/core");
762
- var import_jsx_runtime20 = require("react/jsx-runtime");
763
- function Default2(_a) {
764
- var _b = _a, { items } = _b, boxProps = __objRest(_b, ["items"]);
765
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Accordion, { variant: "separated", radius: "md", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Accordion.Item, { value: String(i), children: [
766
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Strong, { fz: "sm", children: item.question }) }),
767
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Body, { fz: "sm", children: item.answer }) })
869
+ var import_core20 = require("@mantine/core");
870
+ var import_jsx_runtime21 = require("react/jsx-runtime");
871
+ function Default2(_a4) {
872
+ var _b = _a4, { items } = _b, boxProps = __objRest(_b, ["items"]);
873
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Accordion, { variant: "separated", radius: "md", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Accordion.Item, { value: String(i), children: [
874
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Strong, { fz: "sm", children: item.question }) }),
875
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Body, { fz: "sm", children: item.answer }) })
768
876
  ] }, i)) }) }));
769
877
  }
770
- function Filled(_a) {
771
- var _b = _a, { items } = _b, boxProps = __objRest(_b, ["items"]);
772
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Accordion, { variant: "filled", radius: "md", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Accordion.Item, { value: String(i), children: [
773
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Strong, { fz: "sm", children: item.question }) }),
774
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_core19.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Body, { fz: "sm", children: item.answer }) })
878
+ function Filled(_a4) {
879
+ var _b = _a4, { items } = _b, boxProps = __objRest(_b, ["items"]);
880
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Accordion, { variant: "filled", radius: "md", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Accordion.Item, { value: String(i), children: [
881
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Accordion.Control, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Strong, { fz: "sm", children: item.question }) }),
882
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Accordion.Panel, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Body, { fz: "sm", children: item.answer }) })
775
883
  ] }, i)) }) }));
776
884
  }
777
- function WithHeader(_a) {
778
- var _b = _a, { label, title, description, items } = _b, boxProps = __objRest(_b, ["label", "title", "description", "items"]);
779
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Stack, __spreadProps(__spreadValues({ gap: "xl" }, boxProps), { children: [
780
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_core19.Stack, { gap: "xs", children: [
781
- label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Eyebrow, { children: label }),
782
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdTitle.Section, { children: title }),
783
- description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Body, { children: description })
885
+ function WithHeader(_a4) {
886
+ var _b = _a4, { label, title, description, items } = _b, boxProps = __objRest(_b, ["label", "title", "description", "items"]);
887
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, __spreadProps(__spreadValues({ gap: "xl" }, boxProps), { children: [
888
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, { gap: "xs", children: [
889
+ label && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Eyebrow, { children: label }),
890
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdTitle.Section, { children: title }),
891
+ description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Body, { children: description })
784
892
  ] }),
785
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Default2, { items })
893
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Default2, { items })
786
894
  ] }));
787
895
  }
788
896
  var SdFaq = {
@@ -795,10 +903,10 @@ var SdFaq = {
795
903
  };
796
904
 
797
905
  // ui/molecule/Cta.tsx
798
- var import_core20 = require("@mantine/core");
799
- var import_jsx_runtime21 = require("react/jsx-runtime");
800
- function Banner(_a) {
801
- var _b = _a, {
906
+ var import_core21 = require("@mantine/core");
907
+ var import_jsx_runtime22 = require("react/jsx-runtime");
908
+ function Banner(_a4) {
909
+ var _b = _a4, {
802
910
  label,
803
911
  title,
804
912
  description,
@@ -815,22 +923,22 @@ function Banner(_a) {
815
923
  "onPrimary",
816
924
  "onSecondary"
817
925
  ]);
818
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
819
- import_core20.Box,
926
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
927
+ import_core21.Box,
820
928
  __spreadProps(__spreadValues({
821
929
  bg: "primary.7",
822
930
  py: { base: "xl", md: 80 },
823
931
  px: { base: "md", md: "xl" }
824
932
  }, boxProps), {
825
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, { gap: "xl", align: "center", maw: 600, children: [
826
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, { gap: "sm", align: "center", children: [
827
- label && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Eyebrow, { c: "primary.3", children: label }),
828
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdTitle.Section, { c: "white", ta: "center", children: title }),
829
- description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Body, { c: "primary.2", ta: "center", children: description })
933
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_core21.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Stack, { gap: "xl", align: "center", maw: 600, children: [
934
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Stack, { gap: "sm", align: "center", children: [
935
+ label && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Eyebrow, { c: "primary.3", children: label }),
936
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdTitle.Section, { c: "white", ta: "center", children: title }),
937
+ description && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Body, { c: "primary.2", ta: "center", children: description })
830
938
  ] }),
831
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Group, { gap: "sm", children: [
832
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdButton.White, { size: "md", onClick: onPrimary, children: primaryLabel }),
833
- secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
939
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Group, { gap: "sm", children: [
940
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdButton.White, { size: "md", onClick: onPrimary, children: primaryLabel }),
941
+ secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
834
942
  SdButton.Ghost,
835
943
  {
836
944
  size: "md",
@@ -844,8 +952,8 @@ function Banner(_a) {
844
952
  })
845
953
  );
846
954
  }
847
- function Subtle(_a) {
848
- var _b = _a, {
955
+ function Subtle(_a4) {
956
+ var _b = _a4, {
849
957
  label,
850
958
  title,
851
959
  description,
@@ -862,30 +970,30 @@ function Subtle(_a) {
862
970
  "onPrimary",
863
971
  "onSecondary"
864
972
  ]);
865
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
866
- import_core20.Box,
973
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
974
+ import_core21.Box,
867
975
  __spreadProps(__spreadValues({
868
976
  bg: "primary.0",
869
977
  py: { base: "xl", md: 60 },
870
978
  px: { base: "md", md: "xl" },
871
979
  style: { borderRadius: "var(--mantine-radius-lg)" }
872
980
  }, boxProps), {
873
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_core20.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, { gap: "lg", align: "center", maw: 560, children: [
874
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, { gap: "sm", align: "center", children: [
875
- label && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Eyebrow, { children: label }),
876
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdTitle.Section, { ta: "center", children: title }),
877
- description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Body, { ta: "center", children: description })
981
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_core21.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Stack, { gap: "lg", align: "center", maw: 560, children: [
982
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Stack, { gap: "sm", align: "center", children: [
983
+ label && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Eyebrow, { children: label }),
984
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdTitle.Section, { ta: "center", children: title }),
985
+ description && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Body, { ta: "center", children: description })
878
986
  ] }),
879
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Group, { gap: "sm", children: [
880
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
881
- secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
987
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Group, { gap: "sm", children: [
988
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
989
+ secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
882
990
  ] })
883
991
  ] }) })
884
992
  })
885
993
  );
886
994
  }
887
- function Inline(_a) {
888
- var _b = _a, {
995
+ function Inline(_a4) {
996
+ var _b = _a4, {
889
997
  label,
890
998
  title,
891
999
  description,
@@ -902,8 +1010,8 @@ function Inline(_a) {
902
1010
  "onPrimary",
903
1011
  "onSecondary"
904
1012
  ]);
905
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
906
- import_core20.Box,
1013
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1014
+ import_core21.Box,
907
1015
  __spreadProps(__spreadValues({
908
1016
  py: { base: "xl", md: 48 },
909
1017
  px: { base: "md", md: "xl" },
@@ -912,15 +1020,15 @@ function Inline(_a) {
912
1020
  borderBottom: "1px solid var(--mantine-color-slate-2)"
913
1021
  }
914
1022
  }, boxProps), {
915
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Group, { justify: "space-between", align: "center", gap: "xl", children: [
916
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Stack, { gap: "xs", style: { flex: 1 }, children: [
917
- label && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Eyebrow, { children: label }),
918
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdTitle.Card, { children: title }),
919
- description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdText.Sub, { children: description })
1023
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Group, { justify: "space-between", align: "center", gap: "xl", children: [
1024
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Stack, { gap: "xs", style: { flex: 1 }, children: [
1025
+ label && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Eyebrow, { children: label }),
1026
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdTitle.Card, { children: title }),
1027
+ description && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Sub, { children: description })
920
1028
  ] }),
921
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_core20.Group, { gap: "sm", wrap: "nowrap", children: [
922
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
923
- secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
1029
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Group, { gap: "sm", wrap: "nowrap", children: [
1030
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdButton.Primary, { size: "md", onClick: onPrimary, children: primaryLabel }),
1031
+ secondaryLabel && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdButton.Outline, { size: "md", onClick: onSecondary, children: secondaryLabel })
924
1032
  ] })
925
1033
  ] })
926
1034
  })
@@ -937,32 +1045,32 @@ var SdCta = {
937
1045
 
938
1046
  // ui/molecule/Solution.tsx
939
1047
  var import_react = require("react");
940
- var import_core22 = require("@mantine/core");
1048
+ var import_core23 = require("@mantine/core");
941
1049
  var import_link3 = __toESM(require("next/link"));
942
1050
 
943
1051
  // ui/molecule/SolutionCard.tsx
944
- var import_core21 = require("@mantine/core");
1052
+ var import_core22 = require("@mantine/core");
945
1053
  var import_link2 = __toESM(require("next/link"));
946
- var import_jsx_runtime22 = require("react/jsx-runtime");
947
- function SolutionCardItem(_a) {
948
- var _b = _a, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
949
- var _a2, _b2;
950
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_core21.Card, __spreadProps(__spreadValues({ withBorder: true }, cardProps), { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Stack, { gap: "md", children: [
1054
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1055
+ function SolutionCardItem(_a4) {
1056
+ var _b = _a4, { item, onSelect } = _b, cardProps = __objRest(_b, ["item", "onSelect"]);
1057
+ var _a5, _b2;
1058
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_core22.Card, __spreadProps(__spreadValues({ withBorder: true }, cardProps), { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_core22.Stack, { gap: "md", children: [
951
1059
  item.icon,
952
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdBadge.Primary, { children: item.category }),
953
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdTitle.Card, { children: item.title }),
954
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SdText.Body, { children: item.description }),
955
- item.href ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_core21.Button, { variant: "subtle", color: "slate", component: import_link2.default, href: item.href, children: [
956
- (_a2 = item.ctaLabel) != null ? _a2 : "\uC790\uC138\uD788 \uBCF4\uAE30",
1060
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdBadge.Primary, { children: item.category }),
1061
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdTitle.Card, { children: item.title }),
1062
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdText.Body, { children: item.description }),
1063
+ item.href ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_core22.Button, { variant: "subtle", color: "slate", component: import_link2.default, href: item.href, children: [
1064
+ (_a5 = item.ctaLabel) != null ? _a5 : "\uC790\uC138\uD788 \uBCF4\uAE30",
957
1065
  " \u2192"
958
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(SdButton.Ghost, { onClick: () => onSelect == null ? void 0 : onSelect(item), children: [
1066
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(SdButton.Ghost, { onClick: () => onSelect == null ? void 0 : onSelect(item), children: [
959
1067
  (_b2 = item.ctaLabel) != null ? _b2 : "\uC790\uC138\uD788 \uBCF4\uAE30",
960
1068
  " \u2192"
961
1069
  ] })
962
1070
  ] }) }));
963
1071
  }
964
1072
  function Grid3({ items, cols = { base: 1, sm: 2, md: 3 }, onSelect }) {
965
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_core21.SimpleGrid, { cols, spacing: "xl", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SolutionCardItem, { item, onSelect }, i)) });
1073
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_core22.SimpleGrid, { cols, spacing: "xl", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SolutionCardItem, { item, onSelect }, i)) });
966
1074
  }
967
1075
  var SdSolutionCard = {
968
1076
  /** 단일 compact 카드 */
@@ -972,29 +1080,29 @@ var SdSolutionCard = {
972
1080
  };
973
1081
 
974
1082
  // ui/molecule/Solution.tsx
975
- var import_jsx_runtime23 = require("react/jsx-runtime");
1083
+ var import_jsx_runtime24 = require("react/jsx-runtime");
976
1084
  function Filtered({ items, allLabel = "\uC804\uCCB4", cols, onSelect }) {
977
1085
  const categories = ["all", ...Array.from(new Set(items.map((i) => i.category)))];
978
1086
  const [active, setActive] = (0, import_react.useState)("all");
979
1087
  const filtered = active === "all" ? items : items.filter((i) => i.category === active);
980
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_core22.Stack, { gap: "xl", children: [
981
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : "all"), children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdTabs.Pills.List, { children: categories.map((cat) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdTabs.Pills.Tab, { value: cat, children: cat === "all" ? allLabel : cat }, cat)) }) }),
982
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdSolutionCard.Grid, { items: filtered, cols, onSelect })
1088
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core23.Stack, { gap: "xl", children: [
1089
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : "all"), children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdTabs.Pills.List, { children: categories.map((cat) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdTabs.Pills.Tab, { value: cat, children: cat === "all" ? allLabel : cat }, cat)) }) }),
1090
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdSolutionCard.Grid, { items: filtered, cols, onSelect })
983
1091
  ] });
984
1092
  }
985
1093
  function List({ items, onSelect }) {
986
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_core22.Stack, { gap: 0, children: items.map((item, i) => {
987
- var _a, _b;
988
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
989
- i > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_core22.Divider, {}),
990
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_core22.Group, { align: "flex-start", py: "lg", gap: "lg", children: [
991
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_core22.ThemeIcon, { variant: "light", color: "primary", size: "xl", radius: "md", children: item.icon }),
992
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_core22.Stack, { gap: "xs", style: { flex: 1 }, children: [
993
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdBadge.Primary, { children: item.category }),
994
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdTitle.Card, { children: item.title }),
995
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SdText.Body, { children: item.description }),
996
- item.href ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
997
- import_core22.Button,
1094
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.Stack, { gap: 0, children: items.map((item, i) => {
1095
+ var _a4, _b;
1096
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
1097
+ i > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.Divider, {}),
1098
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core23.Group, { align: "flex-start", py: "lg", gap: "lg", children: [
1099
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.ThemeIcon, { variant: "light", color: "primary", size: "xl", radius: "md", children: item.icon }),
1100
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core23.Stack, { gap: "xs", style: { flex: 1 }, children: [
1101
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdBadge.Primary, { children: item.category }),
1102
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdTitle.Card, { children: item.title }),
1103
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SdText.Body, { children: item.description }),
1104
+ item.href ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1105
+ import_core23.Button,
998
1106
  {
999
1107
  variant: "subtle",
1000
1108
  color: "slate",
@@ -1002,11 +1110,11 @@ function List({ items, onSelect }) {
1002
1110
  href: item.href,
1003
1111
  style: { alignSelf: "flex-start", paddingInline: 0 },
1004
1112
  children: [
1005
- (_a = item.ctaLabel) != null ? _a : "\uC790\uC138\uD788 \uBCF4\uAE30",
1113
+ (_a4 = item.ctaLabel) != null ? _a4 : "\uC790\uC138\uD788 \uBCF4\uAE30",
1006
1114
  " \u2192"
1007
1115
  ]
1008
1116
  }
1009
- ) : /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1117
+ ) : /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1010
1118
  SdButton.Ghost,
1011
1119
  {
1012
1120
  onClick: () => onSelect == null ? void 0 : onSelect(item),
@@ -1030,8 +1138,8 @@ var SdSolution = {
1030
1138
  };
1031
1139
 
1032
1140
  // ui/molecule/Clients.tsx
1033
- var import_core23 = require("@mantine/core");
1034
- var import_jsx_runtime24 = require("react/jsx-runtime");
1141
+ var import_core24 = require("@mantine/core");
1142
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1035
1143
  var grayStyle = {
1036
1144
  filter: "grayscale(1) opacity(0.5)",
1037
1145
  transition: "filter 0.25s"
@@ -1040,7 +1148,7 @@ var colorStyle = {
1040
1148
  filter: "grayscale(0) opacity(1)"
1041
1149
  };
1042
1150
  function LogoImage({ client, height }) {
1043
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.Tooltip, { label: client.name, withArrow: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.Anchor, { href: client.url, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1151
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core24.Tooltip, { label: client.name, withArrow: true, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core24.Anchor, { href: client.url, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1044
1152
  "img",
1045
1153
  {
1046
1154
  src: client.logo,
@@ -1056,15 +1164,15 @@ function Grid4({
1056
1164
  cols = { base: 2, sm: 3, md: 4, lg: 6 },
1057
1165
  logoHeight = 40
1058
1166
  }) {
1059
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.SimpleGrid, { cols, spacing: "xl", children: items.map((client, i) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_core23.Box, { style: { display: "flex", alignItems: "center", justifyContent: "center", padding: "12px 8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(LogoImage, { client, height: logoHeight }) }, i)) });
1167
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core24.SimpleGrid, { cols, spacing: "xl", children: items.map((client, i) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core24.Box, { style: { display: "flex", alignItems: "center", justifyContent: "center", padding: "12px 8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(LogoImage, { client, height: logoHeight }) }, i)) });
1060
1168
  }
1061
1169
  var KEYFRAME = `@keyframes sd-clients-marquee { from { transform: translateX(0) } to { transform: translateX(-50%) } }`;
1062
1170
  function Marquee({ items, speed = 40, logoHeight = 36, gap = 64 }) {
1063
1171
  const doubled = [...items, ...items];
1064
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_core23.Box, { style: { overflow: "hidden" }, children: [
1065
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("style", { children: KEYFRAME }),
1066
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1067
- import_core23.Box,
1172
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_core24.Box, { style: { overflow: "hidden" }, children: [
1173
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("style", { children: KEYFRAME }),
1174
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1175
+ import_core24.Box,
1068
1176
  {
1069
1177
  style: {
1070
1178
  display: "flex",
@@ -1079,7 +1187,7 @@ function Marquee({ items, speed = 40, logoHeight = 36, gap = 64 }) {
1079
1187
  onMouseLeave: (e) => {
1080
1188
  e.currentTarget.style.animationPlayState = "running";
1081
1189
  },
1082
- children: doubled.map((client, i) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(LogoImage, { client, height: logoHeight }, i))
1190
+ children: doubled.map((client, i) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(LogoImage, { client, height: logoHeight }, i))
1083
1191
  }
1084
1192
  )
1085
1193
  ] });
@@ -1090,14 +1198,16 @@ var SdClients = {
1090
1198
  /** 무한 수평 스크롤 띠 — 호버 시 일시정지 */
1091
1199
  Marquee
1092
1200
  };
1201
+ var SdClientsGrid = Grid4;
1202
+ var SdClientsMarquee = Marquee;
1093
1203
 
1094
1204
  // ui/molecule/Map.tsx
1095
1205
  var import_react2 = require("react");
1096
- var import_core24 = require("@mantine/core");
1097
- var import_jsx_runtime25 = require("react/jsx-runtime");
1206
+ var import_core25 = require("@mantine/core");
1207
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1098
1208
  function MapFrame({ address, height }) {
1099
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_core24.Stack, { gap: "xs", children: [
1100
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core24.Box, { style: { borderRadius: "var(--mantine-radius-md)", overflow: "hidden", height }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1209
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core25.Stack, { gap: "xs", children: [
1210
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core25.Box, { style: { borderRadius: "var(--mantine-radius-md)", overflow: "hidden", height }, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1101
1211
  "iframe",
1102
1212
  {
1103
1213
  src: address.embbedUrl,
@@ -1110,7 +1220,7 @@ function MapFrame({ address, height }) {
1110
1220
  title: address.label
1111
1221
  }
1112
1222
  ) }),
1113
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(SdText.Sub, { children: [
1223
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(SdText.Sub, { children: [
1114
1224
  "[",
1115
1225
  address.label,
1116
1226
  "] ",
@@ -1118,21 +1228,21 @@ function MapFrame({ address, height }) {
1118
1228
  ] })
1119
1229
  ] });
1120
1230
  }
1121
- function Single(_a) {
1122
- var _b = _a, { address, height = 400 } = _b, boxProps = __objRest(_b, ["address", "height"]);
1231
+ function Single(_a4) {
1232
+ var _b = _a4, { address, height = 400 } = _b, boxProps = __objRest(_b, ["address", "height"]);
1123
1233
  if (!address.embbedUrl) return null;
1124
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_core24.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MapFrame, { address, height }) }));
1234
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core25.Box, __spreadProps(__spreadValues({}, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(MapFrame, { address, height }) }));
1125
1235
  }
1126
1236
  function Tabs2({ addresses, height = 400 }) {
1127
- var _a, _b, _c;
1237
+ var _a4, _b, _c;
1128
1238
  const mapped = addresses.filter((a) => a.embbedUrl);
1129
- const [active, setActive] = (0, import_react2.useState)((_b = (_a = mapped[0]) == null ? void 0 : _a.label) != null ? _b : "");
1239
+ const [active, setActive] = (0, import_react2.useState)((_b = (_a4 = mapped[0]) == null ? void 0 : _a4.label) != null ? _b : "");
1130
1240
  if (mapped.length === 0) return null;
1131
- if (mapped.length === 1) return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MapFrame, { address: mapped[0], height });
1241
+ if (mapped.length === 1) return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(MapFrame, { address: mapped[0], height });
1132
1242
  const current = (_c = mapped.find((a) => a.label === active)) != null ? _c : mapped[0];
1133
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_core24.Stack, { gap: "md", children: [
1134
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : mapped[0].label), children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SdTabs.Pills.List, { children: mapped.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SdTabs.Pills.Tab, { value: addr.label, children: addr.label }, addr.label)) }) }),
1135
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(MapFrame, { address: current, height })
1243
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_core25.Stack, { gap: "md", children: [
1244
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SdTabs.Pills, { value: active, onChange: (v) => setActive(v != null ? v : mapped[0].label), children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SdTabs.Pills.List, { children: mapped.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SdTabs.Pills.Tab, { value: addr.label, children: addr.label }, addr.label)) }) }),
1245
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(MapFrame, { address: current, height })
1136
1246
  ] });
1137
1247
  }
1138
1248
  var SdMap = {
@@ -1141,16 +1251,30 @@ var SdMap = {
1141
1251
  /** 여러 주소 탭 전환 지도 — embbedUrl 있는 항목만 표시 */
1142
1252
  Tabs: Tabs2
1143
1253
  };
1254
+ var SdMapSingle = Single;
1255
+ var SdMapTabs = Tabs2;
1144
1256
 
1145
1257
  // ui/organism/HeroCarousel.tsx
1146
1258
  var import_carousel = require("@mantine/carousel");
1147
- var import_core25 = require("@mantine/core");
1148
- var import_jsx_runtime26 = require("react/jsx-runtime");
1259
+ var import_core26 = require("@mantine/core");
1260
+ var import_icons_react4 = require("@tabler/icons-react");
1261
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1262
+ var variantMap = {
1263
+ primary: SdButton.Primary,
1264
+ secondary: SdButton.Secondary,
1265
+ outline: SdButton.Outline,
1266
+ white: SdButton.White
1267
+ };
1268
+ function CtaButton({ cta }) {
1269
+ var _a4;
1270
+ const Button3 = variantMap[(_a4 = cta.variant) != null ? _a4 : "primary"];
1271
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Anchor, { href: cta.href, underline: "never", children: cta.icon ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button3, { size: "md", rightSection: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_icons_react4.IconArrowNarrowRight, {}), children: cta.label }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button3, { size: "md", children: cta.label }) });
1272
+ }
1149
1273
  function HeroCarousel({ slides, children }) {
1150
- if (children) return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_jsx_runtime26.Fragment, { children });
1274
+ if (children) return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment, { children });
1151
1275
  const filterdSlides = filterAndSort(slides);
1152
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_carousel.Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_carousel.Carousel.Slide, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1153
- import_core25.Box,
1276
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_carousel.Carousel, { withIndicators: true, height: "60svh", children: filterdSlides.map((slide, i) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_carousel.Carousel.Slide, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1277
+ import_core26.Box,
1154
1278
  {
1155
1279
  style: {
1156
1280
  height: "100%",
@@ -1161,152 +1285,149 @@ function HeroCarousel({ slides, children }) {
1161
1285
  alignItems: "center",
1162
1286
  justifyContent: "center"
1163
1287
  },
1164
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_core25.Stack, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1165
- SdTextBox.Hero,
1166
- {
1167
- title: slide.title,
1168
- description: slide.description,
1169
- ta: "center",
1170
- align: "center"
1171
- }
1172
- ) })
1288
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core26.Stack, { align: "center", style: { textAlign: "center", maxWidth: 780 }, px: "xl", children: [
1289
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1290
+ SdTextBox.Hero,
1291
+ {
1292
+ title: slide.title,
1293
+ description: slide.description,
1294
+ ta: "center",
1295
+ align: "center"
1296
+ }
1297
+ ),
1298
+ slide.ctas && slide.ctas.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Group, { gap: "sm", mt: "md", children: slide.ctas.map((cta, i2) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CtaButton, { cta }, cta.href)) })
1299
+ ] })
1173
1300
  }
1174
1301
  ) }, i)) });
1175
1302
  }
1176
1303
 
1177
1304
  // ui/organism/Header.tsx
1178
- var import_core26 = require("@mantine/core");
1305
+ var import_core27 = require("@mantine/core");
1179
1306
  var import_hooks = require("@mantine/hooks");
1180
- var import_jsx_runtime27 = require("react/jsx-runtime");
1307
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1181
1308
  function SdHeader({ navItems, loginFlag, children }) {
1182
1309
  const [opened, { toggle, close }] = (0, import_hooks.useDisclosure)();
1183
1310
  const visibleTopItems = navItems.filter((item) => item.isShow && !item.parentId).sort((a, b) => a.order - b.order);
1184
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
1185
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SdContainer, { h: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core26.Group, { justify: "space-between", h: "100%", children: [
1186
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Logo, {}),
1187
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Group, { gap: "xl", visibleFrom: "sm", children: visibleTopItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Anchor, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 15, children: item.label }, item.id)) }),
1188
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1189
- loginFlag && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core26.Group, { gap: "sm", visibleFrom: "sm", children: [
1190
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
1191
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
1311
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
1312
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SdContainer, { h: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core27.Group, { justify: "space-between", h: "100%", children: [
1313
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Logo, {}),
1314
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core27.Group, { gap: "xl", visibleFrom: "sm", children: visibleTopItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core27.Anchor, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 15, children: item.label }, item.id)) }),
1315
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core27.Burger, { hiddenFrom: "sm", opened, onClick: toggle }),
1316
+ loginFlag && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core27.Group, { gap: "sm", visibleFrom: "sm", children: [
1317
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
1318
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
1192
1319
  ] }),
1193
1320
  children
1194
1321
  ] }) }),
1195
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core26.Stack, { children: [
1196
- visibleTopItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_core26.Anchor, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 16, onClick: close, children: item.label }, item.id)),
1197
- loginFlag && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_core26.Stack, { gap: "xs", mt: "md", children: [
1198
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
1199
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
1322
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core27.Drawer, { opened, onClose: close, hiddenFrom: "sm", size: "xs", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core27.Stack, { children: [
1323
+ visibleTopItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_core27.Anchor, { href: item.href, c: "slate.7", fw: 500, underline: "never", fz: 16, onClick: close, children: item.label }, item.id)),
1324
+ loginFlag && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_core27.Stack, { gap: "xs", mt: "md", children: [
1325
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SdButton.Ghost, { size: "sm", children: "\uB85C\uADF8\uC778" }),
1326
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SdButton.Primary, { size: "sm", children: "\uBB34\uB8CC \uC2DC\uC791" })
1200
1327
  ] })
1201
1328
  ] }) })
1202
1329
  ] });
1203
1330
  }
1204
1331
 
1205
- // ui/organism/Footer/index.tsx
1206
- var import_core29 = require("@mantine/core");
1207
-
1208
- // ui/organism/Footer/FooterBrand.tsx
1209
- var import_jsx_runtime28 = require("react/jsx-runtime");
1210
- function FooterBrand() {
1211
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Logo, { size: "xs" });
1212
- }
1213
-
1214
- // ui/organism/Footer/FooterContact.tsx
1215
- var import_core27 = require("@mantine/core");
1332
+ // ui/organism/Footer.tsx
1333
+ var import_core28 = require("@mantine/core");
1216
1334
  var import_jsx_runtime29 = require("react/jsx-runtime");
1217
- function FooterContact({ company }) {
1218
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Group, { gap: "lg", wrap: "wrap", children: [
1219
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.5", children: company.name }),
1220
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(SdText.Sub, { c: "slate.5", children: [
1335
+ function FooterNavColumns({ items }) {
1336
+ const topLevel = items.filter((item) => !item.parentId);
1337
+ const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
1338
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jsx_runtime29.Fragment, { children: topLevel.map((group) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Grid.Col, { span: { base: 6, sm: 4, md: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Stack, { gap: "sm", children: [
1339
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Strong, { fz: "sm", children: group.label }),
1340
+ getChildren(group.id).map((link) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1341
+ import_core28.Anchor,
1342
+ {
1343
+ href: link.href,
1344
+ fz: "sm",
1345
+ c: "slate.6",
1346
+ underline: "never",
1347
+ style: { transition: "color 0.15s" },
1348
+ onMouseEnter: (e) => {
1349
+ e.currentTarget.style.color = "var(--mantine-color-primary-6)";
1350
+ },
1351
+ onMouseLeave: (e) => {
1352
+ e.currentTarget.style.color = "";
1353
+ },
1354
+ children: link.label
1355
+ },
1356
+ link.id
1357
+ ))
1358
+ ] }) }, group.id)) });
1359
+ }
1360
+ function FooterCompanyInfo({ company }) {
1361
+ const sortedAddresses = [...company.addresses].sort((a, b) => a.order - b.order);
1362
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Group, { gap: "xs", wrap: "wrap", children: [
1363
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { children: company.name }),
1364
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.4", children: "|" }),
1365
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(SdText.Sub, { children: [
1221
1366
  "\uC0AC\uC5C5\uC790\uB4F1\uB85D\uBC88\uD638 ",
1222
1367
  company.registrationNumber
1223
1368
  ] }),
1224
- company.addresses.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.5", children: addr.address }, addr.label)),
1225
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core27.Anchor, { href: `tel:${company.tel}`, fz: "xs", c: "slate.5", underline: "never", children: [
1369
+ sortedAddresses.map((addr) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Group, { gap: "xs", wrap: "nowrap", children: [
1370
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.4", children: "|" }),
1371
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { children: addr.address })
1372
+ ] }, addr.label)),
1373
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.4", children: "|" }),
1374
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Anchor, { href: `tel:${company.tel}`, fz: "xs", c: "slate.5", underline: "never", children: [
1226
1375
  "Tel ",
1227
1376
  company.tel
1228
1377
  ] }),
1229
- company.fax && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(SdText.Sub, { c: "slate.5", children: [
1230
- "Fax ",
1231
- company.fax
1378
+ company.fax && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
1379
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.4", children: "|" }),
1380
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(SdText.Sub, { children: [
1381
+ "Fax ",
1382
+ company.fax
1383
+ ] })
1232
1384
  ] }),
1233
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core27.Anchor, { href: `mailto:${company.email}`, fz: "xs", c: "slate.5", underline: "never", children: company.email })
1385
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Sub, { c: "slate.4", children: "|" }),
1386
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Anchor, { href: `mailto:${company.email}`, fz: "xs", c: "slate.5", underline: "never", children: company.email })
1234
1387
  ] });
1235
1388
  }
1236
-
1237
- // ui/organism/Footer/FooterNav.tsx
1238
- var import_core28 = require("@mantine/core");
1239
- var import_jsx_runtime30 = require("react/jsx-runtime");
1240
- function FooterNav({ items }) {
1241
- const topLevel = items.filter((item) => !item.parentId);
1242
- const getChildren = (parentId) => items.filter((item) => item.parentId === parentId);
1243
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_core28.Group, { gap: 48, align: "flex-start", wrap: "wrap", children: topLevel.map((item) => {
1244
- const children = getChildren(item.id);
1245
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core28.Stack, { gap: "sm", children: [
1246
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SdText.Eyebrow, { c: "slate.4", children: item.label }),
1247
- children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1248
- import_core28.Anchor,
1249
- {
1250
- href: child.href,
1251
- fz: "xs",
1252
- c: "slate.5",
1253
- underline: "never",
1254
- style: { transition: "color 0.15s" },
1255
- onMouseEnter: (e) => {
1256
- e.currentTarget.style.color = "var(--mantine-color-slate-1)";
1257
- },
1258
- onMouseLeave: (e) => {
1259
- e.currentTarget.style.color = "";
1260
- },
1261
- children: child.label
1262
- },
1263
- child.id
1264
- ))
1265
- ] }, item.id);
1266
- }) });
1267
- }
1268
-
1269
- // ui/organism/Footer/index.tsx
1270
- var import_jsx_runtime31 = require("react/jsx-runtime");
1271
- function SdFooter({ company, utilityLinks, policyLinks }) {
1272
- const visibleUtility = filterAndSort(utilityLinks);
1389
+ function SdFooter({ company, navItems, policyLinks, description }) {
1390
+ const visibleNav = filterAndSort(navItems);
1273
1391
  const visiblePolicy = filterAndSort(policyLinks);
1274
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Box, { children: [
1275
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Grid, { style: { "--grid-gutter": "48px" }, align: "flex-start", children: [
1276
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Grid.Col, { span: { base: 12, md: 3 }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(FooterBrand, {}) }),
1277
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Grid.Col, { span: { base: 12, md: 9 }, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(FooterNav, { items: visibleUtility != null ? visibleUtility : [] }) })
1392
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Box, { component: "footer", py: "xl", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(SdContainer, { children: [
1393
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Grid, { style: { "--grid-gutter": "48px" }, children: [
1394
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Grid.Col, { span: { base: 12, md: 4 }, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Stack, { gap: "md", children: [
1395
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Logo, { size: "sm" }),
1396
+ description && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SdText.Body, { c: "slate.4", fz: "sm", children: description })
1397
+ ] }) }),
1398
+ visibleNav.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Grid.Col, { span: { base: 12, md: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Grid, { style: { "--grid-gutter": "24px" }, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(FooterNavColumns, { items: visibleNav }) }) })
1278
1399
  ] }),
1279
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Divider, {}),
1280
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(FooterContact, { company }),
1281
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Divider, {}),
1282
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core29.Group, { justify: "space-between", wrap: "wrap", gap: "xs", children: [
1283
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(SdText.Sub, { c: "slate.5", children: [
1400
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Divider, {}),
1401
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(FooterCompanyInfo, { company }),
1402
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_core28.Group, { justify: "space-between", wrap: "wrap", gap: "xs", mt: "md", children: [
1403
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(SdText.Sub, { c: "slate.5", children: [
1284
1404
  "\xA9 ",
1285
1405
  company.copyrightYear,
1286
1406
  " ",
1287
1407
  company.name,
1288
1408
  ". All rights reserved."
1289
1409
  ] }),
1290
- visiblePolicy.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core29.Group, { gap: "lg", children: visiblePolicy.map((item) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1291
- import_core29.Anchor,
1410
+ visiblePolicy.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_core28.Group, { gap: "lg", children: visiblePolicy.map((item) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1411
+ import_core28.Anchor,
1292
1412
  {
1293
1413
  href: item.href,
1294
1414
  fz: "xs",
1295
- c: item.highlight ? "primary.6" : "slate.5",
1415
+ fw: item.highlight ? 700 : 400,
1416
+ c: item.highlight ? "white" : "slate.5",
1296
1417
  underline: "never",
1297
1418
  children: item.label
1298
1419
  },
1299
1420
  item.id
1300
1421
  )) })
1301
1422
  ] })
1302
- ] });
1423
+ ] }) });
1303
1424
  }
1304
1425
 
1305
1426
  // ui/organism/FeatureSection.tsx
1306
- var import_core30 = require("@mantine/core");
1307
- var import_jsx_runtime32 = require("react/jsx-runtime");
1308
- function SdFeatureSection(_a) {
1309
- var _b = _a, {
1427
+ var import_core29 = require("@mantine/core");
1428
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1429
+ function SdFeatureSection(_a4) {
1430
+ var _b = _a4, {
1310
1431
  label,
1311
1432
  title,
1312
1433
  description,
@@ -1321,8 +1442,8 @@ function SdFeatureSection(_a) {
1321
1442
  "cols",
1322
1443
  "py"
1323
1444
  ]);
1324
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core30.Stack, { gap: "xl", children: [
1325
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1445
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_core29.Stack, { gap: "xl", children: [
1446
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1326
1447
  SdTextBox.Section,
1327
1448
  {
1328
1449
  label,
@@ -1333,15 +1454,15 @@ function SdFeatureSection(_a) {
1333
1454
  align: "center"
1334
1455
  }
1335
1456
  ),
1336
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdFeatures, { items, cols })
1457
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SdFeatures, { items, cols })
1337
1458
  ] }) }));
1338
1459
  }
1339
1460
 
1340
1461
  // ui/organism/TimelineSection.tsx
1341
- var import_core31 = require("@mantine/core");
1342
- var import_jsx_runtime33 = require("react/jsx-runtime");
1343
- function SdTimelineSection(_a) {
1344
- var _b = _a, {
1462
+ var import_core30 = require("@mantine/core");
1463
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1464
+ function SdTimelineSection(_a4) {
1465
+ var _b = _a4, {
1345
1466
  label,
1346
1467
  title,
1347
1468
  description,
@@ -1354,8 +1475,8 @@ function SdTimelineSection(_a) {
1354
1475
  "items",
1355
1476
  "py"
1356
1477
  ]);
1357
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core31.Stack, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
1358
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1478
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core30.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_core30.Stack, __spreadProps(__spreadValues({ py, gap: "md" }, boxProps), { children: [
1479
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1359
1480
  SdTextBox.Section,
1360
1481
  {
1361
1482
  label,
@@ -1363,15 +1484,15 @@ function SdTimelineSection(_a) {
1363
1484
  description
1364
1485
  }
1365
1486
  ),
1366
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core31.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdTimeline, { items }) })
1487
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_core30.Center, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(SdTimeline, { items }) })
1367
1488
  ] })) });
1368
1489
  }
1369
1490
 
1370
1491
  // ui/organism/StepsSection.tsx
1371
- var import_core32 = require("@mantine/core");
1372
- var import_jsx_runtime34 = require("react/jsx-runtime");
1373
- function SdStepsSection(_a) {
1374
- var _b = _a, {
1492
+ var import_core31 = require("@mantine/core");
1493
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1494
+ function SdStepsSection(_a4) {
1495
+ var _b = _a4, {
1375
1496
  label,
1376
1497
  title,
1377
1498
  description,
@@ -1384,18 +1505,18 @@ function SdStepsSection(_a) {
1384
1505
  "items",
1385
1506
  "py"
1386
1507
  ]);
1387
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core32.Stack, { gap: "xl", children: [
1388
- (label || title || description) && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdTextBox.Section, { label, title, description }),
1389
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdSteps.Bubble, { items })
1508
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdContainer, __spreadProps(__spreadValues({ py }, boxProps), { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_core31.Stack, { gap: "xl", children: [
1509
+ (label || title || description) && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdTextBox.Section, { label, title, description }),
1510
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SdSteps.Bubble, { items })
1390
1511
  ] }) }));
1391
1512
  }
1392
1513
 
1393
1514
  // ui/organism/ErrorView.tsx
1394
- var import_core33 = require("@mantine/core");
1395
- var import_jsx_runtime35 = require("react/jsx-runtime");
1515
+ var import_core32 = require("@mantine/core");
1516
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1396
1517
  function StatusCode({ code }) {
1397
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1398
- import_core33.Text,
1518
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1519
+ import_core32.Text,
1399
1520
  {
1400
1521
  fz: 160,
1401
1522
  fw: 900,
@@ -1408,19 +1529,15 @@ function StatusCode({ code }) {
1408
1529
  );
1409
1530
  }
1410
1531
  function Page({ error, onReset, onHome }) {
1411
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { align: "center", gap: "lg", ta: "center", children: [
1412
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(StatusCode, { code: "500" }),
1413
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { gap: "sm", align: "center", children: [
1414
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
1415
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(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." }),
1416
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(SdText.Sub, { children: [
1417
- "\uC624\uB958 \uCF54\uB4DC: ",
1418
- error.digest
1419
- ] })
1532
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core32.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core32.Stack, { align: "center", gap: "lg", ta: "center", children: [
1533
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StatusCode, { code: "500" }),
1534
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core32.Stack, { gap: "sm", align: "center", children: [
1535
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdTitle.Section, { children: "\uC11C\uBC84\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4" }),
1536
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Body, { maw: 480, children: "\uC608\uAE30\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694." })
1420
1537
  ] }),
1421
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { gap: "sm", justify: "center", children: [
1422
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
1423
- onHome && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
1538
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core32.Group, { gap: "sm", justify: "center", children: [
1539
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdButton.Primary, { onClick: onReset, children: "\uB2E4\uC2DC \uC2DC\uB3C4" }),
1540
+ onHome && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdButton.Ghost, { onClick: onHome, children: "\uD648\uC73C\uB85C" })
1424
1541
  ] })
1425
1542
  ] }) }) });
1426
1543
  }
@@ -1432,15 +1549,15 @@ function NotFound({
1432
1549
  },
1433
1550
  onBack = () => window.history.back()
1434
1551
  }) {
1435
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core33.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { align: "center", gap: "lg", ta: "center", children: [
1436
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(StatusCode, { code: "404" }),
1437
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Stack, { gap: "sm", align: "center", children: [
1438
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTitle.Section, { children: title }),
1439
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdText.Body, { maw: 480, children: description })
1552
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_core32.Center, { mih: "60vh", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core32.Stack, { align: "center", gap: "lg", ta: "center", children: [
1553
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(StatusCode, { code: "404" }),
1554
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core32.Stack, { gap: "sm", align: "center", children: [
1555
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdTitle.Section, { children: title }),
1556
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdText.Body, { maw: 480, children: description })
1440
1557
  ] }),
1441
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core33.Group, { gap: "sm", justify: "center", children: [
1442
- onHome && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
1443
- onBack && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
1558
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_core32.Group, { gap: "sm", justify: "center", children: [
1559
+ onHome && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdButton.Primary, { onClick: onHome, children: "\uD648\uC73C\uB85C" }),
1560
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SdButton.Ghost, { onClick: onBack, children: "\uB4A4\uB85C \uAC00\uAE30" })
1444
1561
  ] })
1445
1562
  ] }) }) });
1446
1563
  }
@@ -1452,28 +1569,28 @@ var SdErrorView = {
1452
1569
  };
1453
1570
 
1454
1571
  // ui/template/MainLayout.tsx
1455
- var import_core34 = require("@mantine/core");
1456
- var import_jsx_runtime36 = require("react/jsx-runtime");
1572
+ var import_core33 = require("@mantine/core");
1573
+ var import_jsx_runtime34 = require("react/jsx-runtime");
1457
1574
  function MainLayout({ children, navItems, companyInfo }) {
1458
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_core34.AppShell, { header: { height: 60 }, children: [
1459
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.AppShell.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdHeader, { navItems }) }),
1460
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_core34.AppShell.Main, { children }),
1461
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(SdFooter, { company: companyInfo, utilityLinks: navItems })
1575
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_core33.AppShell, { header: { height: 60 }, children: [
1576
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core33.AppShell.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdHeader, { navItems }) }),
1577
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_core33.AppShell.Main, { children }),
1578
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SdFooter, { company: companyInfo })
1462
1579
  ] });
1463
1580
  }
1464
1581
 
1465
1582
  // ui/template/PageLayout.tsx
1466
- var import_core35 = require("@mantine/core");
1467
- var import_jsx_runtime37 = require("react/jsx-runtime");
1583
+ var import_core34 = require("@mantine/core");
1584
+ var import_jsx_runtime35 = require("react/jsx-runtime");
1468
1585
  function Content({ children }) {
1469
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdContainer, { py: "xl", children });
1586
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, { py: "xl", children });
1470
1587
  }
1471
1588
  function LayoutGap() {
1472
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Space, { h: 48 });
1589
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core34.Space, { h: 48 });
1473
1590
  }
1474
1591
  function Minimal({ label, title, description, children }) {
1475
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Plain2, { children: [
1476
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1592
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Plain2, { children: [
1593
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1477
1594
  SdTextBox.Section,
1478
1595
  {
1479
1596
  label,
@@ -1482,19 +1599,19 @@ function Minimal({ label, title, description, children }) {
1482
1599
  mb: "xl"
1483
1600
  }
1484
1601
  ),
1485
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Divider, {}),
1602
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core34.Divider, {}),
1486
1603
  children
1487
1604
  ] }) });
1488
1605
  }
1489
1606
  function Plain2({ children }) {
1490
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
1491
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(LayoutGap, {}),
1492
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Content, { children })
1607
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
1608
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(LayoutGap, {}),
1609
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Content, { children })
1493
1610
  ] });
1494
1611
  }
1495
1612
  function Image2({ image, label, title, description, children }) {
1496
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
1497
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Box, { style: {
1613
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
1614
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core34.Box, { style: {
1498
1615
  position: "relative",
1499
1616
  minHeight: "30svh",
1500
1617
  display: "flex",
@@ -1504,13 +1621,13 @@ function Image2({ image, label, title, description, children }) {
1504
1621
  backgroundPosition: "center",
1505
1622
  backgroundColor: "var(--mantine-color-slate-9)"
1506
1623
  }, children: [
1507
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { style: {
1624
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core34.Box, { style: {
1508
1625
  position: "absolute",
1509
1626
  inset: 0,
1510
1627
  background: "rgba(0, 0, 0, 0.55)"
1511
1628
  } }),
1512
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1513
- import_core35.Box,
1629
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1630
+ import_core34.Box,
1514
1631
  {
1515
1632
  py: 48,
1516
1633
  px: 40,
@@ -1522,7 +1639,7 @@ function Image2({ image, label, title, description, children }) {
1522
1639
  borderRadius: "var(--mantine-radius-md)",
1523
1640
  border: "1px solid rgba(255,255,255,0.18)"
1524
1641
  },
1525
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1642
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1526
1643
  SdTextBox.Hero,
1527
1644
  {
1528
1645
  label,
@@ -1535,12 +1652,12 @@ function Image2({ image, label, title, description, children }) {
1535
1652
  }
1536
1653
  ) })
1537
1654
  ] }),
1538
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Content, { children })
1655
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Content, { children })
1539
1656
  ] });
1540
1657
  }
1541
1658
  function Brand({ label, title, description, children }) {
1542
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
1543
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_core35.Box, { style: {
1659
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
1660
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_core34.Box, { style: {
1544
1661
  position: "relative",
1545
1662
  minHeight: "40svh",
1546
1663
  display: "flex",
@@ -1548,7 +1665,7 @@ function Brand({ label, title, description, children }) {
1548
1665
  overflow: "hidden",
1549
1666
  background: "linear-gradient(135deg, var(--mantine-color-primary-8) 0%, var(--mantine-color-primary-6) 50%, var(--mantine-color-primary-4) 100%)"
1550
1667
  }, children: [
1551
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { style: {
1668
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core34.Box, { style: {
1552
1669
  position: "absolute",
1553
1670
  top: -80,
1554
1671
  right: -80,
@@ -1558,7 +1675,7 @@ function Brand({ label, title, description, children }) {
1558
1675
  background: "rgba(255,255,255,0.06)",
1559
1676
  pointerEvents: "none"
1560
1677
  } }),
1561
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_core35.Box, { style: {
1678
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_core34.Box, { style: {
1562
1679
  position: "absolute",
1563
1680
  bottom: -60,
1564
1681
  left: -60,
@@ -1568,9 +1685,9 @@ function Brand({ label, title, description, children }) {
1568
1685
  background: "rgba(255,255,255,0.04)",
1569
1686
  pointerEvents: "none"
1570
1687
  } }),
1571
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SdTextBox.Hero, { label, title, description, ta: "center", align: "center", maw: 640, mx: "auto", pt: 80, pb: 64 }) })
1688
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, { style: { position: "relative", zIndex: 1, width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdTextBox.Hero, { label, title, description, ta: "center", align: "center", maw: 640, mx: "auto", pt: 80, pb: 64 }) })
1572
1689
  ] }),
1573
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Content, { children })
1690
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Content, { children })
1574
1691
  ] });
1575
1692
  }
1576
1693
  var PageLayout = {
@@ -1585,7 +1702,7 @@ var PageLayout = {
1585
1702
  };
1586
1703
 
1587
1704
  // ui/theme.ts
1588
- var import_core36 = require("@mantine/core");
1705
+ var import_core35 = require("@mantine/core");
1589
1706
  var primary = [
1590
1707
  "#e7f0fb",
1591
1708
  "#c8dcf4",
@@ -1659,7 +1776,7 @@ var indigo = [
1659
1776
  "#3730a3",
1660
1777
  "#312e81"
1661
1778
  ];
1662
- var theme = (0, import_core36.createTheme)({
1779
+ var theme = (0, import_core35.createTheme)({
1663
1780
  /* ---- Color ---- */
1664
1781
  colors: { primary, secondary, slate, cyan, indigo, dark: slate },
1665
1782
  primaryColor: "primary",
@@ -1671,20 +1788,20 @@ var theme = (0, import_core36.createTheme)({
1671
1788
  fontFamily: "'Noto Sans KR', ui-sans-serif, system-ui, sans-serif",
1672
1789
  fontWeight: "700",
1673
1790
  sizes: {
1674
- h1: { fontSize: (0, import_core36.rem)(48), lineHeight: "1.1", fontWeight: "900" },
1675
- h2: { fontSize: (0, import_core36.rem)(36), lineHeight: "1.1", fontWeight: "900" },
1676
- h3: { fontSize: (0, import_core36.rem)(28), lineHeight: "1.15", fontWeight: "700" },
1677
- h4: { fontSize: (0, import_core36.rem)(20), lineHeight: "1.3", fontWeight: "700" },
1678
- h5: { fontSize: (0, import_core36.rem)(16), lineHeight: "1.4", fontWeight: "700" },
1679
- h6: { fontSize: (0, import_core36.rem)(14), lineHeight: "1.4", fontWeight: "700" }
1791
+ h1: { fontSize: (0, import_core35.rem)(48), lineHeight: "1.1", fontWeight: "900" },
1792
+ h2: { fontSize: (0, import_core35.rem)(36), lineHeight: "1.1", fontWeight: "900" },
1793
+ h3: { fontSize: (0, import_core35.rem)(28), lineHeight: "1.15", fontWeight: "700" },
1794
+ h4: { fontSize: (0, import_core35.rem)(20), lineHeight: "1.3", fontWeight: "700" },
1795
+ h5: { fontSize: (0, import_core35.rem)(16), lineHeight: "1.4", fontWeight: "700" },
1796
+ h6: { fontSize: (0, import_core35.rem)(14), lineHeight: "1.4", fontWeight: "700" }
1680
1797
  }
1681
1798
  },
1682
1799
  fontSizes: {
1683
- xs: (0, import_core36.rem)(14),
1684
- sm: (0, import_core36.rem)(16),
1685
- md: (0, import_core36.rem)(18),
1686
- lg: (0, import_core36.rem)(20),
1687
- xl: (0, import_core36.rem)(22)
1800
+ xs: (0, import_core35.rem)(14),
1801
+ sm: (0, import_core35.rem)(16),
1802
+ md: (0, import_core35.rem)(18),
1803
+ lg: (0, import_core35.rem)(20),
1804
+ xl: (0, import_core35.rem)(22)
1688
1805
  },
1689
1806
  lineHeights: {
1690
1807
  xs: "1.4",
@@ -1695,18 +1812,18 @@ var theme = (0, import_core36.createTheme)({
1695
1812
  },
1696
1813
  defaultRadius: "md",
1697
1814
  radius: {
1698
- xs: (0, import_core36.rem)(6),
1699
- sm: (0, import_core36.rem)(8),
1700
- md: (0, import_core36.rem)(10),
1701
- lg: (0, import_core36.rem)(14),
1702
- xl: (0, import_core36.rem)(18)
1815
+ xs: (0, import_core35.rem)(6),
1816
+ sm: (0, import_core35.rem)(8),
1817
+ md: (0, import_core35.rem)(10),
1818
+ lg: (0, import_core35.rem)(14),
1819
+ xl: (0, import_core35.rem)(18)
1703
1820
  },
1704
1821
  spacing: {
1705
- xs: (0, import_core36.rem)(8),
1706
- sm: (0, import_core36.rem)(12),
1707
- md: (0, import_core36.rem)(16),
1708
- lg: (0, import_core36.rem)(24),
1709
- xl: (0, import_core36.rem)(32)
1822
+ xs: (0, import_core35.rem)(8),
1823
+ sm: (0, import_core35.rem)(12),
1824
+ md: (0, import_core35.rem)(16),
1825
+ lg: (0, import_core35.rem)(24),
1826
+ xl: (0, import_core35.rem)(32)
1710
1827
  },
1711
1828
  shadows: {
1712
1829
  xs: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
@@ -1804,7 +1921,16 @@ var theme = (0, import_core36.createTheme)({
1804
1921
  PageLayout,
1805
1922
  SdBadge,
1806
1923
  SdButton,
1924
+ SdButtonCancel,
1925
+ SdButtonDelete,
1926
+ SdButtonGhost,
1927
+ SdButtonOutline,
1928
+ SdButtonPrimary,
1929
+ SdButtonSecondary,
1930
+ SdButtonWhite,
1807
1931
  SdClients,
1932
+ SdClientsGrid,
1933
+ SdClientsMarquee,
1808
1934
  SdContainer,
1809
1935
  SdCta,
1810
1936
  SdErrorView,
@@ -1815,19 +1941,34 @@ var theme = (0, import_core36.createTheme)({
1815
1941
  SdHeader,
1816
1942
  SdInput,
1817
1943
  SdMap,
1944
+ SdMapSingle,
1945
+ SdMapTabs,
1818
1946
  SdModal,
1819
1947
  SdNumberIcon,
1820
1948
  SdPricingCard,
1821
1949
  SdQuote,
1950
+ SdSkeleton,
1951
+ SdSkeletonAvatar,
1952
+ SdSkeletonCard,
1953
+ SdSkeletonImage,
1954
+ SdSkeletonText,
1955
+ SdSkeletonTitle,
1822
1956
  SdSolution,
1823
1957
  SdSolutionCard,
1824
1958
  SdSteps,
1825
1959
  SdStepsSection,
1826
1960
  SdTable,
1827
1961
  SdTabs,
1962
+ SdTabsOutline,
1963
+ SdTabsPills,
1964
+ SdTabsUnderline,
1828
1965
  SdTestimonial,
1829
1966
  SdText,
1830
1967
  SdTextBox,
1968
+ SdTextBoxCard,
1969
+ SdTextBoxHero,
1970
+ SdTextBoxSection,
1971
+ SdTextBoxSub,
1831
1972
  SdTimeline,
1832
1973
  SdTimelineSection,
1833
1974
  SdTitle,