@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.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:
|
|
113
|
-
alt:
|
|
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(
|
|
133
|
-
var _b =
|
|
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(
|
|
140
|
-
var _b =
|
|
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(
|
|
144
|
-
var _b =
|
|
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,
|
|
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(
|
|
209
|
-
var _b =
|
|
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(
|
|
230
|
-
var _b =
|
|
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(
|
|
251
|
-
var _b =
|
|
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(
|
|
286
|
-
var _b =
|
|
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(
|
|
290
|
-
var _b =
|
|
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(
|
|
322
|
-
var _b =
|
|
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(
|
|
326
|
-
var _b =
|
|
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(
|
|
367
|
-
var _b =
|
|
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(
|
|
376
|
-
var _b =
|
|
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(
|
|
396
|
-
var props = __objRest(
|
|
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(
|
|
402
|
-
var props = __objRest(
|
|
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(
|
|
408
|
-
var props = __objRest(
|
|
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(
|
|
414
|
-
var props = __objRest(
|
|
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/
|
|
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(
|
|
436
|
-
var _b =
|
|
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,
|
|
458
|
-
label && /* @__PURE__ */ (0,
|
|
459
|
-
/* @__PURE__ */ (0,
|
|
460
|
-
description && /* @__PURE__ */ (0,
|
|
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
|
|
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
|
|
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,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
|
499
|
-
var
|
|
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
|
|
503
|
-
((_b = acc[
|
|
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,
|
|
508
|
-
|
|
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,
|
|
618
|
+
title: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(SdTitle.Sub, { children: [
|
|
511
619
|
year,
|
|
512
620
|
"\uB144"
|
|
513
621
|
] }),
|
|
514
|
-
children: /* @__PURE__ */ (0,
|
|
515
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
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,
|
|
533
|
-
/* @__PURE__ */ (0,
|
|
534
|
-
/* @__PURE__ */ (0,
|
|
535
|
-
!isLast && /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
545
|
-
/* @__PURE__ */ (0,
|
|
546
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
568
|
-
/* @__PURE__ */ (0,
|
|
569
|
-
/* @__PURE__ */ (0,
|
|
570
|
-
i < items.length - 1 && /* @__PURE__ */ (0,
|
|
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,
|
|
573
|
-
/* @__PURE__ */ (0,
|
|
574
|
-
i < items.length - 1 && /* @__PURE__ */ (0,
|
|
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,
|
|
580
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
594
|
-
var
|
|
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,
|
|
597
|
-
item.avatar && /* @__PURE__ */ (0,
|
|
598
|
-
!item.avatar && /* @__PURE__ */ (0,
|
|
599
|
-
/* @__PURE__ */ (0,
|
|
600
|
-
/* @__PURE__ */ (0,
|
|
601
|
-
/* @__PURE__ */ (0,
|
|
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(
|
|
609
|
-
var _b =
|
|
610
|
-
return /* @__PURE__ */ (0,
|
|
611
|
-
item.rating && /* @__PURE__ */ (0,
|
|
612
|
-
/* @__PURE__ */ (0,
|
|
613
|
-
/* @__PURE__ */ (0,
|
|
614
|
-
item.lines.map((line, i) => /* @__PURE__ */ (0,
|
|
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,
|
|
724
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AuthorRow, { item })
|
|
617
725
|
] }) }));
|
|
618
726
|
}
|
|
619
|
-
function Strip2(
|
|
620
|
-
var _b =
|
|
621
|
-
return /* @__PURE__ */ (0,
|
|
622
|
-
item.rating && /* @__PURE__ */ (0,
|
|
623
|
-
/* @__PURE__ */ (0,
|
|
624
|
-
/* @__PURE__ */ (0,
|
|
625
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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
|
|
751
|
+
var import_core19 = require("@mantine/core");
|
|
644
752
|
var import_icons_react3 = require("@tabler/icons-react");
|
|
645
|
-
var
|
|
646
|
-
function Default(
|
|
647
|
-
var _b =
|
|
648
|
-
var
|
|
649
|
-
return /* @__PURE__ */ (0,
|
|
650
|
-
|
|
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,
|
|
656
|
-
/* @__PURE__ */ (0,
|
|
657
|
-
/* @__PURE__ */ (0,
|
|
658
|
-
/* @__PURE__ */ (0,
|
|
659
|
-
item.isPopular && /* @__PURE__ */ (0,
|
|
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,
|
|
769
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Sub, { children: item.description })
|
|
662
770
|
] }),
|
|
663
|
-
/* @__PURE__ */ (0,
|
|
664
|
-
/* @__PURE__ */ (0,
|
|
665
|
-
item.period && /* @__PURE__ */ (0,
|
|
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,
|
|
671
|
-
/* @__PURE__ */ (0,
|
|
672
|
-
/* @__PURE__ */ (0,
|
|
673
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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(
|
|
697
|
-
var _b =
|
|
698
|
-
var
|
|
699
|
-
return /* @__PURE__ */ (0,
|
|
700
|
-
|
|
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,
|
|
706
|
-
/* @__PURE__ */ (0,
|
|
707
|
-
/* @__PURE__ */ (0,
|
|
708
|
-
/* @__PURE__ */ (0,
|
|
709
|
-
item.isPopular && /* @__PURE__ */ (0,
|
|
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,
|
|
819
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SdText.Body, { c: "primary.1", children: item.description })
|
|
712
820
|
] }),
|
|
713
|
-
/* @__PURE__ */ (0,
|
|
714
|
-
/* @__PURE__ */ (0,
|
|
715
|
-
item.period && /* @__PURE__ */ (0,
|
|
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,
|
|
721
|
-
/* @__PURE__ */ (0,
|
|
722
|
-
/* @__PURE__ */ (0,
|
|
723
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
748
|
-
(item, i) => item.isPopular ? /* @__PURE__ */ (0,
|
|
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
|
|
762
|
-
var
|
|
763
|
-
function Default2(
|
|
764
|
-
var _b =
|
|
765
|
-
return /* @__PURE__ */ (0,
|
|
766
|
-
/* @__PURE__ */ (0,
|
|
767
|
-
/* @__PURE__ */ (0,
|
|
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(
|
|
771
|
-
var _b =
|
|
772
|
-
return /* @__PURE__ */ (0,
|
|
773
|
-
/* @__PURE__ */ (0,
|
|
774
|
-
/* @__PURE__ */ (0,
|
|
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(
|
|
778
|
-
var _b =
|
|
779
|
-
return /* @__PURE__ */ (0,
|
|
780
|
-
/* @__PURE__ */ (0,
|
|
781
|
-
label && /* @__PURE__ */ (0,
|
|
782
|
-
/* @__PURE__ */ (0,
|
|
783
|
-
description && /* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
799
|
-
var
|
|
800
|
-
function Banner(
|
|
801
|
-
var _b =
|
|
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,
|
|
819
|
-
|
|
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,
|
|
826
|
-
/* @__PURE__ */ (0,
|
|
827
|
-
label && /* @__PURE__ */ (0,
|
|
828
|
-
/* @__PURE__ */ (0,
|
|
829
|
-
description && /* @__PURE__ */ (0,
|
|
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,
|
|
832
|
-
/* @__PURE__ */ (0,
|
|
833
|
-
secondaryLabel && /* @__PURE__ */ (0,
|
|
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(
|
|
848
|
-
var _b =
|
|
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,
|
|
866
|
-
|
|
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,
|
|
874
|
-
/* @__PURE__ */ (0,
|
|
875
|
-
label && /* @__PURE__ */ (0,
|
|
876
|
-
/* @__PURE__ */ (0,
|
|
877
|
-
description && /* @__PURE__ */ (0,
|
|
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,
|
|
880
|
-
/* @__PURE__ */ (0,
|
|
881
|
-
secondaryLabel && /* @__PURE__ */ (0,
|
|
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(
|
|
888
|
-
var _b =
|
|
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,
|
|
906
|
-
|
|
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,
|
|
916
|
-
/* @__PURE__ */ (0,
|
|
917
|
-
label && /* @__PURE__ */ (0,
|
|
918
|
-
/* @__PURE__ */ (0,
|
|
919
|
-
description && /* @__PURE__ */ (0,
|
|
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,
|
|
922
|
-
/* @__PURE__ */ (0,
|
|
923
|
-
secondaryLabel && /* @__PURE__ */ (0,
|
|
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
|
|
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
|
|
1052
|
+
var import_core22 = require("@mantine/core");
|
|
945
1053
|
var import_link2 = __toESM(require("next/link"));
|
|
946
|
-
var
|
|
947
|
-
function SolutionCardItem(
|
|
948
|
-
var _b =
|
|
949
|
-
var
|
|
950
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
953
|
-
/* @__PURE__ */ (0,
|
|
954
|
-
/* @__PURE__ */ (0,
|
|
955
|
-
item.href ? /* @__PURE__ */ (0,
|
|
956
|
-
(
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
981
|
-
/* @__PURE__ */ (0,
|
|
982
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
987
|
-
var
|
|
988
|
-
return /* @__PURE__ */ (0,
|
|
989
|
-
i > 0 && /* @__PURE__ */ (0,
|
|
990
|
-
/* @__PURE__ */ (0,
|
|
991
|
-
item.icon && /* @__PURE__ */ (0,
|
|
992
|
-
/* @__PURE__ */ (0,
|
|
993
|
-
/* @__PURE__ */ (0,
|
|
994
|
-
/* @__PURE__ */ (0,
|
|
995
|
-
/* @__PURE__ */ (0,
|
|
996
|
-
item.href ? /* @__PURE__ */ (0,
|
|
997
|
-
|
|
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
|
-
(
|
|
1113
|
+
(_a4 = item.ctaLabel) != null ? _a4 : "\uC790\uC138\uD788 \uBCF4\uAE30",
|
|
1006
1114
|
" \u2192"
|
|
1007
1115
|
]
|
|
1008
1116
|
}
|
|
1009
|
-
) : /* @__PURE__ */ (0,
|
|
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
|
|
1034
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
1065
|
-
/* @__PURE__ */ (0,
|
|
1066
|
-
/* @__PURE__ */ (0,
|
|
1067
|
-
|
|
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,
|
|
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
|
|
1097
|
-
var
|
|
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,
|
|
1100
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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(
|
|
1122
|
-
var _b =
|
|
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,
|
|
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
|
|
1237
|
+
var _a4, _b, _c;
|
|
1128
1238
|
const mapped = addresses.filter((a) => a.embbedUrl);
|
|
1129
|
-
const [active, setActive] = (0, import_react2.useState)((_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,
|
|
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,
|
|
1134
|
-
/* @__PURE__ */ (0,
|
|
1135
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
1148
|
-
var
|
|
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,
|
|
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,
|
|
1153
|
-
|
|
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,
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
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
|
|
1305
|
+
var import_core27 = require("@mantine/core");
|
|
1179
1306
|
var import_hooks = require("@mantine/hooks");
|
|
1180
|
-
var
|
|
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,
|
|
1185
|
-
/* @__PURE__ */ (0,
|
|
1186
|
-
/* @__PURE__ */ (0,
|
|
1187
|
-
/* @__PURE__ */ (0,
|
|
1188
|
-
/* @__PURE__ */ (0,
|
|
1189
|
-
loginFlag && /* @__PURE__ */ (0,
|
|
1190
|
-
/* @__PURE__ */ (0,
|
|
1191
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1196
|
-
visibleTopItems.map((item) => /* @__PURE__ */ (0,
|
|
1197
|
-
loginFlag && /* @__PURE__ */ (0,
|
|
1198
|
-
/* @__PURE__ */ (0,
|
|
1199
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
1206
|
-
var
|
|
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
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
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
|
-
|
|
1225
|
-
|
|
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)(
|
|
1230
|
-
"
|
|
1231
|
-
|
|
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)(
|
|
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
|
-
|
|
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,
|
|
1275
|
-
/* @__PURE__ */ (0,
|
|
1276
|
-
/* @__PURE__ */ (0,
|
|
1277
|
-
|
|
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,
|
|
1280
|
-
/* @__PURE__ */ (0,
|
|
1281
|
-
/* @__PURE__ */ (0,
|
|
1282
|
-
|
|
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,
|
|
1291
|
-
|
|
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
|
-
|
|
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
|
|
1307
|
-
var
|
|
1308
|
-
function SdFeatureSection(
|
|
1309
|
-
var _b =
|
|
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,
|
|
1325
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1457
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SdFeatures, { items, cols })
|
|
1337
1458
|
] }) }));
|
|
1338
1459
|
}
|
|
1339
1460
|
|
|
1340
1461
|
// ui/organism/TimelineSection.tsx
|
|
1341
|
-
var
|
|
1342
|
-
var
|
|
1343
|
-
function SdTimelineSection(
|
|
1344
|
-
var _b =
|
|
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,
|
|
1358
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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
|
|
1372
|
-
var
|
|
1373
|
-
function SdStepsSection(
|
|
1374
|
-
var _b =
|
|
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,
|
|
1388
|
-
(label || title || description) && /* @__PURE__ */ (0,
|
|
1389
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
1395
|
-
var
|
|
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,
|
|
1398
|
-
|
|
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,
|
|
1412
|
-
/* @__PURE__ */ (0,
|
|
1413
|
-
/* @__PURE__ */ (0,
|
|
1414
|
-
/* @__PURE__ */ (0,
|
|
1415
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1422
|
-
/* @__PURE__ */ (0,
|
|
1423
|
-
onHome && /* @__PURE__ */ (0,
|
|
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,
|
|
1436
|
-
/* @__PURE__ */ (0,
|
|
1437
|
-
/* @__PURE__ */ (0,
|
|
1438
|
-
/* @__PURE__ */ (0,
|
|
1439
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1442
|
-
onHome && /* @__PURE__ */ (0,
|
|
1443
|
-
onBack && /* @__PURE__ */ (0,
|
|
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
|
|
1456
|
-
var
|
|
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,
|
|
1459
|
-
/* @__PURE__ */ (0,
|
|
1460
|
-
/* @__PURE__ */ (0,
|
|
1461
|
-
/* @__PURE__ */ (0,
|
|
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
|
|
1467
|
-
var
|
|
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,
|
|
1586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(SdContainer, { py: "xl", children });
|
|
1470
1587
|
}
|
|
1471
1588
|
function LayoutGap() {
|
|
1472
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
1476
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
1491
|
-
/* @__PURE__ */ (0,
|
|
1492
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
1497
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
1513
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
1543
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
1675
|
-
h2: { fontSize: (0,
|
|
1676
|
-
h3: { fontSize: (0,
|
|
1677
|
-
h4: { fontSize: (0,
|
|
1678
|
-
h5: { fontSize: (0,
|
|
1679
|
-
h6: { fontSize: (0,
|
|
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,
|
|
1684
|
-
sm: (0,
|
|
1685
|
-
md: (0,
|
|
1686
|
-
lg: (0,
|
|
1687
|
-
xl: (0,
|
|
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,
|
|
1699
|
-
sm: (0,
|
|
1700
|
-
md: (0,
|
|
1701
|
-
lg: (0,
|
|
1702
|
-
xl: (0,
|
|
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,
|
|
1706
|
-
sm: (0,
|
|
1707
|
-
md: (0,
|
|
1708
|
-
lg: (0,
|
|
1709
|
-
xl: (0,
|
|
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,
|