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