@hivcd-printshop/design-system 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +55 -3
- package/dist/index.d.ts +55 -3
- package/dist/index.js +471 -307
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +465 -307
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/ChevronDown-XSALXCW4.svg +0 -3
- package/dist/Exclamation-IUYZYYC4.svg +0 -4
- package/dist/RadioSelected-DOLVV7ZM.svg +0 -4
- package/dist/RadioUnselected-QN74EU46.svg +0 -3
package/dist/index.mjs
CHANGED
|
@@ -153,6 +153,111 @@ var IconGoBack = ({ className, stroke }) => {
|
|
|
153
153
|
}
|
|
154
154
|
);
|
|
155
155
|
};
|
|
156
|
+
var IconCompass = ({ className, fill }) => {
|
|
157
|
+
return /* @__PURE__ */ jsx(
|
|
158
|
+
"svg",
|
|
159
|
+
{
|
|
160
|
+
className,
|
|
161
|
+
width: "16",
|
|
162
|
+
height: "16",
|
|
163
|
+
viewBox: "0 0 16 16",
|
|
164
|
+
fill: "none",
|
|
165
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
166
|
+
children: /* @__PURE__ */ jsx(
|
|
167
|
+
"path",
|
|
168
|
+
{
|
|
169
|
+
fillRule: "evenodd",
|
|
170
|
+
clipRule: "evenodd",
|
|
171
|
+
d: "M12.5731 7.37945C12.2964 5.32806 10.668 3.70356 8.6166 3.42688V0H7.37945V3.42688C5.32806 3.70356 3.70356 5.32806 3.42688 7.37945H0V8.62055H3.42688C3.70356 10.6719 5.32806 12.2964 7.37945 12.5731V16H8.6166V12.5731C10.668 12.2964 12.2964 10.6719 12.5731 8.62055H16V7.37945H12.5731ZM7.37945 11.3241C6.01186 11.0672 4.93281 9.98814 4.67589 8.62055H7.37945V11.3241ZM7.4664 5.51383C7.41897 5.81423 7.39131 6.14229 7.37945 6.50988V7.37945H4.67589C4.89328 6.22925 5.68775 5.28458 6.75099 4.86166C6.9921 4.73122 7.07905 4.67589 7.19763 4.41502L7.67984 4.57312C7.58498 4.90119 7.51779 5.21344 7.4664 5.51383ZM9.24506 11.1383C9.00395 11.2727 8.917 11.3241 8.79842 11.5889L8.31621 11.4269C8.41107 11.1028 8.47826 10.7905 8.52965 10.4901C8.57312 10.2134 8.60474 9.91304 8.6166 9.58103V8.62055H11.3202C11.1067 9.77075 10.3083 10.7154 9.24506 11.1383ZM8.6166 7.37945V4.67984C9.98419 4.93281 11.0672 6.01186 11.3202 7.37945H8.6166Z",
|
|
172
|
+
fill: fill || "#121212"
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
};
|
|
178
|
+
var IconRadioSelected = ({
|
|
179
|
+
className,
|
|
180
|
+
stroke,
|
|
181
|
+
fill
|
|
182
|
+
}) => {
|
|
183
|
+
return /* @__PURE__ */ jsxs(
|
|
184
|
+
"svg",
|
|
185
|
+
{
|
|
186
|
+
className,
|
|
187
|
+
width: "16",
|
|
188
|
+
height: "16",
|
|
189
|
+
viewBox: "0 0 16 16",
|
|
190
|
+
fill: "none",
|
|
191
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
192
|
+
children: [
|
|
193
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#121212" }),
|
|
194
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "4", fill: fill || "#121212" })
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
);
|
|
198
|
+
};
|
|
199
|
+
var IconRadioUnselected = ({
|
|
200
|
+
className,
|
|
201
|
+
stroke
|
|
202
|
+
}) => {
|
|
203
|
+
return /* @__PURE__ */ jsx(
|
|
204
|
+
"svg",
|
|
205
|
+
{
|
|
206
|
+
className,
|
|
207
|
+
width: "16",
|
|
208
|
+
height: "16",
|
|
209
|
+
viewBox: "0 0 16 16",
|
|
210
|
+
fill: "none",
|
|
211
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
212
|
+
children: /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#B4B9C2" })
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
};
|
|
216
|
+
var IconExclamation = ({ className, fill }) => {
|
|
217
|
+
return /* @__PURE__ */ jsxs(
|
|
218
|
+
"svg",
|
|
219
|
+
{
|
|
220
|
+
className,
|
|
221
|
+
width: "12",
|
|
222
|
+
height: "12",
|
|
223
|
+
viewBox: "0 0 12 12",
|
|
224
|
+
fill: "none",
|
|
225
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
226
|
+
children: [
|
|
227
|
+
/* @__PURE__ */ jsx(
|
|
228
|
+
"path",
|
|
229
|
+
{
|
|
230
|
+
d: "M6.41438 7.18735H5.57954L5.50175 3.10938H6.49218L6.41438 7.18735ZM5.40001 8.3313C5.39801 8.23061 5.42395 8.13738 5.47781 8.05161C5.53167 7.96583 5.60448 7.89777 5.69624 7.84743C5.79 7.79708 5.89174 7.77191 6.00145 7.77191C6.10718 7.77191 6.20592 7.79708 6.29768 7.84743C6.38945 7.89777 6.46226 7.96583 6.51612 8.05161C6.57197 8.13738 6.5999 8.23061 6.5999 8.3313C6.5999 8.43199 6.57197 8.52522 6.51612 8.611C6.46226 8.69677 6.38945 8.76483 6.29768 8.81518C6.20592 8.86552 6.10718 8.89069 6.00145 8.89069C5.89174 8.89069 5.79 8.86552 5.69624 8.81518C5.60448 8.76483 5.53167 8.69677 5.47781 8.611C5.42395 8.52522 5.39801 8.43199 5.40001 8.3313Z",
|
|
231
|
+
fill: fill || "#505865"
|
|
232
|
+
}
|
|
233
|
+
),
|
|
234
|
+
/* @__PURE__ */ jsx("circle", { cx: "6", cy: "6", r: "4.5", stroke: fill || "#505865" })
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
};
|
|
239
|
+
var IconClose = ({ className, stroke }) => {
|
|
240
|
+
return /* @__PURE__ */ jsx(
|
|
241
|
+
"svg",
|
|
242
|
+
{
|
|
243
|
+
className,
|
|
244
|
+
width: "16",
|
|
245
|
+
height: "16",
|
|
246
|
+
viewBox: "0 0 16 16",
|
|
247
|
+
fill: "none",
|
|
248
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
249
|
+
children: /* @__PURE__ */ jsx(
|
|
250
|
+
"path",
|
|
251
|
+
{
|
|
252
|
+
d: "M4 4L12 12M12 4L4 12",
|
|
253
|
+
stroke: stroke || "#6d7683",
|
|
254
|
+
strokeWidth: "1.5",
|
|
255
|
+
strokeLinecap: "round"
|
|
256
|
+
}
|
|
257
|
+
)
|
|
258
|
+
}
|
|
259
|
+
);
|
|
260
|
+
};
|
|
156
261
|
|
|
157
262
|
// src/components/BackButton/BackButton.tsx
|
|
158
263
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
@@ -241,8 +346,8 @@ var MultiColumn = Object.assign(MultiColumnMain, {
|
|
|
241
346
|
// src/components/Column/Column.tsx
|
|
242
347
|
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
243
348
|
var Column = ({ className, children, header }) => {
|
|
244
|
-
return /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5
|
|
245
|
-
header && /* @__PURE__ */ jsx5("h1", { className: cn("text-
|
|
349
|
+
return /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 py-3", className), children: [
|
|
350
|
+
header && /* @__PURE__ */ jsx5("h1", { className: cn("text-body1-medium text-primary"), children: header }),
|
|
246
351
|
children
|
|
247
352
|
] });
|
|
248
353
|
};
|
|
@@ -279,70 +384,87 @@ var ColumnSubTitle = ({
|
|
|
279
384
|
as: Tag2 = "h2"
|
|
280
385
|
}) => {
|
|
281
386
|
return /* @__PURE__ */ jsxs4(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
|
|
282
|
-
/* @__PURE__ */ jsx9("span", { className: cn("text-
|
|
387
|
+
/* @__PURE__ */ jsx9("span", { className: cn("text-body1-medium text-primary"), children }),
|
|
283
388
|
action && /* @__PURE__ */ jsx9("span", { className: "flex shrink-0 items-center", children: action })
|
|
284
389
|
] });
|
|
285
390
|
};
|
|
286
391
|
|
|
287
|
-
// src/components/
|
|
392
|
+
// src/components/Column/ColumnDescription.tsx
|
|
288
393
|
import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
394
|
+
var ColumnDescription = ({
|
|
395
|
+
className,
|
|
396
|
+
children,
|
|
397
|
+
bullet = true
|
|
398
|
+
}) => {
|
|
399
|
+
return /* @__PURE__ */ jsxs5("div", { className: cn("flex items-start gap-3", className), children: [
|
|
400
|
+
bullet && /* @__PURE__ */ jsx10("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ jsx10(IconCompass, { className: "size-4" }) }),
|
|
401
|
+
/* @__PURE__ */ jsx10("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
|
|
402
|
+
] });
|
|
403
|
+
};
|
|
404
|
+
var ColumnDescriptionList = ({ className, children }) => {
|
|
405
|
+
return /* @__PURE__ */ jsx10("div", { className: cn("flex flex-col gap-4", className), children });
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
// src/components/Form/BasicFormField.tsx
|
|
409
|
+
import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
289
410
|
var BasicFormField = ({
|
|
290
411
|
children,
|
|
291
412
|
isDanger,
|
|
292
413
|
dangerText,
|
|
293
414
|
className
|
|
294
415
|
}) => {
|
|
295
|
-
return /* @__PURE__ */
|
|
416
|
+
return /* @__PURE__ */ jsxs6("div", { className: cn("flex flex-col gap-1.5", className), children: [
|
|
296
417
|
children,
|
|
297
|
-
isDanger && dangerText && /* @__PURE__ */
|
|
418
|
+
isDanger && dangerText && /* @__PURE__ */ jsx11("span", { className: "text-caption-book text-danger", children: dangerText })
|
|
298
419
|
] });
|
|
299
420
|
};
|
|
300
421
|
var getInputStyles = (isDanger, additionalClass) => {
|
|
301
422
|
return cn(
|
|
302
|
-
|
|
423
|
+
// 디자인 스펙: 높이 41px, 좌우 12px / 상하 10px 패딩
|
|
424
|
+
"w-full h-[41px] px-3 py-2.5",
|
|
303
425
|
"box-border border border-gray02 focus:outline-none focus:border-black",
|
|
304
|
-
"bg-white
|
|
426
|
+
"bg-white transition-colors",
|
|
305
427
|
ColumnTextStyle,
|
|
306
428
|
"text-primary placeholder:text-quaternary",
|
|
307
429
|
isDanger && "border-danger",
|
|
308
|
-
//
|
|
430
|
+
// 경고 시 빨간 테두리 (#E42939)
|
|
309
431
|
additionalClass
|
|
310
432
|
// 각 인풋별 추가 스타일 (예: textarea의 h-30)
|
|
311
433
|
);
|
|
312
434
|
};
|
|
313
435
|
|
|
314
436
|
// src/components/Form/FormText.tsx
|
|
315
|
-
import { jsx as
|
|
437
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
316
438
|
var FormText = ({ className, isDanger, dangerText, ...props }) => {
|
|
317
|
-
return /* @__PURE__ */
|
|
439
|
+
return /* @__PURE__ */ jsx12(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx12("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
|
|
318
440
|
};
|
|
319
441
|
|
|
320
442
|
// src/components/Form/FormTextArea.tsx
|
|
321
|
-
import { jsx as
|
|
443
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
322
444
|
var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
|
|
323
|
-
return /* @__PURE__ */
|
|
445
|
+
return /* @__PURE__ */ jsx13(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx13(
|
|
324
446
|
"textarea",
|
|
325
447
|
{
|
|
326
|
-
className: getInputStyles(isDanger, "resize-none h-30 py-2.5 " + (className || "")),
|
|
448
|
+
className: getInputStyles(isDanger, "resize-none h-30 px-4 py-2.5 " + (className || "")),
|
|
327
449
|
...props
|
|
328
450
|
}
|
|
329
451
|
) });
|
|
330
452
|
};
|
|
331
453
|
|
|
332
454
|
// src/components/Form/FormNumber.tsx
|
|
333
|
-
import { jsx as
|
|
455
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
334
456
|
var FormNumber = ({ className, isDanger, dangerText, ...props }) => {
|
|
335
|
-
return /* @__PURE__ */
|
|
457
|
+
return /* @__PURE__ */ jsx14(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx14("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
|
|
336
458
|
};
|
|
337
459
|
|
|
338
460
|
// src/components/Form/FormPassword.tsx
|
|
339
|
-
import { jsx as
|
|
461
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
340
462
|
var FormPassword = ({ className, isDanger, dangerText, ...props }) => {
|
|
341
|
-
return /* @__PURE__ */
|
|
463
|
+
return /* @__PURE__ */ jsx15(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx15("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
|
|
342
464
|
};
|
|
343
465
|
|
|
344
466
|
// src/components/Form/FormTel.tsx
|
|
345
|
-
import { jsx as
|
|
467
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
346
468
|
var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
347
469
|
const handlePhoneChange = (e) => {
|
|
348
470
|
const rawValue = e.target.value.replace(/[^0-9]/g, "");
|
|
@@ -354,7 +476,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
|
354
476
|
e.target.value = formattedValue;
|
|
355
477
|
if (onChange) onChange(e);
|
|
356
478
|
};
|
|
357
|
-
return /* @__PURE__ */
|
|
479
|
+
return /* @__PURE__ */ jsx16(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx16(
|
|
358
480
|
"input",
|
|
359
481
|
{
|
|
360
482
|
type: "tel",
|
|
@@ -368,7 +490,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
|
368
490
|
|
|
369
491
|
// src/components/Form/FormColor.tsx
|
|
370
492
|
import { useState } from "react";
|
|
371
|
-
import { jsx as
|
|
493
|
+
import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
372
494
|
var FormColor = ({
|
|
373
495
|
className,
|
|
374
496
|
isDanger,
|
|
@@ -386,7 +508,7 @@ var FormColor = ({
|
|
|
386
508
|
setInternalColor(e.target.value);
|
|
387
509
|
onChange?.(e);
|
|
388
510
|
};
|
|
389
|
-
return /* @__PURE__ */
|
|
511
|
+
return /* @__PURE__ */ jsx17(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs7(
|
|
390
512
|
"label",
|
|
391
513
|
{
|
|
392
514
|
className: getInputStyles(
|
|
@@ -395,7 +517,7 @@ var FormColor = ({
|
|
|
395
517
|
"flex items-center gap-2 relative focus-within:border-black focus-within:hover:bg-white" + (className || "")
|
|
396
518
|
),
|
|
397
519
|
children: [
|
|
398
|
-
/* @__PURE__ */
|
|
520
|
+
/* @__PURE__ */ jsx17("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ jsx17(
|
|
399
521
|
"input",
|
|
400
522
|
{
|
|
401
523
|
type: "color",
|
|
@@ -405,7 +527,7 @@ var FormColor = ({
|
|
|
405
527
|
...props
|
|
406
528
|
}
|
|
407
529
|
) }),
|
|
408
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ jsx17("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
|
|
409
531
|
]
|
|
410
532
|
}
|
|
411
533
|
) });
|
|
@@ -413,12 +535,11 @@ var FormColor = ({
|
|
|
413
535
|
|
|
414
536
|
// src/components/Form/FormFile.tsx
|
|
415
537
|
import { useState as useState2 } from "react";
|
|
416
|
-
import { jsx as
|
|
538
|
+
import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
417
539
|
var FormFile = ({
|
|
418
540
|
className,
|
|
419
541
|
isDanger,
|
|
420
542
|
dangerText,
|
|
421
|
-
placeholder = "\uD30C\uC77C\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694",
|
|
422
543
|
fileUrl,
|
|
423
544
|
filename,
|
|
424
545
|
onChange,
|
|
@@ -475,32 +596,31 @@ var FormFile = ({
|
|
|
475
596
|
}
|
|
476
597
|
};
|
|
477
598
|
const displayFileName = selectedFile?.name || (fileUrl ? fileUrl.split("/").pop() : null);
|
|
478
|
-
return /* @__PURE__ */
|
|
599
|
+
return /* @__PURE__ */ jsx18(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs8(
|
|
479
600
|
"div",
|
|
480
601
|
{
|
|
481
602
|
className: getInputStyles(
|
|
482
603
|
isDanger,
|
|
483
|
-
|
|
604
|
+
// 디자인 스펙: 파일 전 상태는 우측 정렬("파일 첨부"만), 파일 후 상태는 좌우 배치
|
|
605
|
+
cn(
|
|
606
|
+
"flex items-center gap-2",
|
|
607
|
+
displayFileName ? "justify-between" : "justify-end",
|
|
608
|
+
className
|
|
609
|
+
)
|
|
484
610
|
),
|
|
485
611
|
children: [
|
|
486
|
-
/* @__PURE__ */
|
|
487
|
-
"
|
|
612
|
+
displayFileName && /* @__PURE__ */ jsx18(
|
|
613
|
+
"span",
|
|
488
614
|
{
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
onClick: handleDownload,
|
|
494
|
-
className: "w-full underline text-primary cursor-pointer hover:text-black transition-colors",
|
|
495
|
-
title: `${displayFileName} \uB2E4\uC6B4\uB85C\uB4DC`,
|
|
496
|
-
children: displayFileName
|
|
497
|
-
}
|
|
498
|
-
) : /* @__PURE__ */ jsx17("span", { className: "w-full", children: placeholder })
|
|
615
|
+
onClick: handleDownload,
|
|
616
|
+
className: "text-body3-book text-primary truncate max-w-[200px] cursor-pointer",
|
|
617
|
+
title: `${displayFileName} \uB2E4\uC6B4\uB85C\uB4DC`,
|
|
618
|
+
children: displayFileName
|
|
499
619
|
}
|
|
500
620
|
),
|
|
501
|
-
/* @__PURE__ */
|
|
502
|
-
/* @__PURE__ */
|
|
503
|
-
/* @__PURE__ */
|
|
621
|
+
/* @__PURE__ */ jsxs8("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
|
|
622
|
+
/* @__PURE__ */ jsx18("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
|
|
623
|
+
/* @__PURE__ */ jsx18("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
|
|
504
624
|
] })
|
|
505
625
|
]
|
|
506
626
|
}
|
|
@@ -508,7 +628,7 @@ var FormFile = ({
|
|
|
508
628
|
};
|
|
509
629
|
|
|
510
630
|
// src/components/Form/FormCheckBox.tsx
|
|
511
|
-
import { jsx as
|
|
631
|
+
import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
512
632
|
var FormCheckBox = ({
|
|
513
633
|
isChecked,
|
|
514
634
|
setIsChecked,
|
|
@@ -517,19 +637,18 @@ var FormCheckBox = ({
|
|
|
517
637
|
textStyle,
|
|
518
638
|
...props
|
|
519
639
|
}) => {
|
|
520
|
-
return /* @__PURE__ */
|
|
640
|
+
return /* @__PURE__ */ jsxs9(
|
|
521
641
|
"label",
|
|
522
642
|
{
|
|
523
643
|
className: cn(
|
|
524
|
-
"w-fit h-fit
|
|
644
|
+
"group w-fit h-fit",
|
|
525
645
|
"flex items-center gap-1",
|
|
526
|
-
"hover:bg-gray00 active:bg-gray01 transition-colors",
|
|
527
646
|
"cursor-pointer select-none",
|
|
528
647
|
// 💡 1. 텍스트 드래그 방지 추가
|
|
529
648
|
className
|
|
530
649
|
),
|
|
531
650
|
children: [
|
|
532
|
-
/* @__PURE__ */
|
|
651
|
+
/* @__PURE__ */ jsx19(
|
|
533
652
|
"input",
|
|
534
653
|
{
|
|
535
654
|
type: "checkbox",
|
|
@@ -539,20 +658,29 @@ var FormCheckBox = ({
|
|
|
539
658
|
...props
|
|
540
659
|
}
|
|
541
660
|
),
|
|
542
|
-
/* @__PURE__ */
|
|
661
|
+
/* @__PURE__ */ jsx19(
|
|
543
662
|
"div",
|
|
544
663
|
{
|
|
545
664
|
className: cn(
|
|
546
|
-
"w-
|
|
547
|
-
"
|
|
548
|
-
"flex items-center justify-center transition-colors duration-200",
|
|
549
|
-
// 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
|
|
550
|
-
"peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
|
|
665
|
+
"flex items-center justify-center w-5 h-5 shrink-0 rounded transition-colors",
|
|
666
|
+
"group-hover:bg-gray00 group-active:bg-gray01"
|
|
551
667
|
),
|
|
552
|
-
children:
|
|
668
|
+
children: /* @__PURE__ */ jsx19(
|
|
669
|
+
"div",
|
|
670
|
+
{
|
|
671
|
+
className: cn(
|
|
672
|
+
"w-[15px] h-[15px]",
|
|
673
|
+
"box-border border border-black",
|
|
674
|
+
"flex items-center justify-center transition-colors duration-200",
|
|
675
|
+
// 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
|
|
676
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
|
|
677
|
+
),
|
|
678
|
+
children: isChecked && /* @__PURE__ */ jsx19(IconCheck, {})
|
|
679
|
+
}
|
|
680
|
+
)
|
|
553
681
|
}
|
|
554
|
-
)
|
|
555
|
-
children && /* @__PURE__ */
|
|
682
|
+
),
|
|
683
|
+
children && /* @__PURE__ */ jsx19("span", { className: cn("text-body3-book text-primary", textStyle), children })
|
|
556
684
|
]
|
|
557
685
|
}
|
|
558
686
|
);
|
|
@@ -562,19 +690,20 @@ var FormCheckBox = ({
|
|
|
562
690
|
import { useEffect, useRef, useState as useState3 } from "react";
|
|
563
691
|
|
|
564
692
|
// src/components/Form/SelectBoxOption.tsx
|
|
565
|
-
import { jsx as
|
|
693
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
566
694
|
var SelectBoxOption = ({
|
|
567
695
|
label,
|
|
568
696
|
onClick,
|
|
569
697
|
// selectedLabel,
|
|
570
698
|
className
|
|
571
699
|
}) => {
|
|
572
|
-
return /* @__PURE__ */
|
|
700
|
+
return /* @__PURE__ */ jsx20(
|
|
573
701
|
"li",
|
|
574
702
|
{
|
|
575
703
|
onClick,
|
|
576
704
|
className: cn(
|
|
577
|
-
"w-full
|
|
705
|
+
"w-full p-3 shrink-0",
|
|
706
|
+
// 디자인 스펙: 12px 패딩
|
|
578
707
|
"flex items-center justify-start",
|
|
579
708
|
// "box-border border-b border-gray02",
|
|
580
709
|
"text-body3-book text-primary",
|
|
@@ -590,7 +719,7 @@ var SelectBoxOption = ({
|
|
|
590
719
|
};
|
|
591
720
|
|
|
592
721
|
// src/components/Form/FormSelectBox.tsx
|
|
593
|
-
import { jsx as
|
|
722
|
+
import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
594
723
|
var FormSelectBox = ({
|
|
595
724
|
options,
|
|
596
725
|
value,
|
|
@@ -613,8 +742,8 @@ var FormSelectBox = ({
|
|
|
613
742
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
614
743
|
};
|
|
615
744
|
}, []);
|
|
616
|
-
return /* @__PURE__ */
|
|
617
|
-
/* @__PURE__ */
|
|
745
|
+
return /* @__PURE__ */ jsx21(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs10("div", { ref: containerRef, className: "relative w-full", children: [
|
|
746
|
+
/* @__PURE__ */ jsxs10(
|
|
618
747
|
"div",
|
|
619
748
|
{
|
|
620
749
|
tabIndex: 0,
|
|
@@ -622,8 +751,8 @@ var FormSelectBox = ({
|
|
|
622
751
|
isDanger,
|
|
623
752
|
cn(
|
|
624
753
|
"flex items-center justify-between cursor-pointer select-none",
|
|
625
|
-
isOpen && "border-
|
|
626
|
-
//
|
|
754
|
+
isOpen && "border-gray08",
|
|
755
|
+
// 열려있을 때 테두리 #3A414C 고정 (디자인 스펙)
|
|
627
756
|
className
|
|
628
757
|
)
|
|
629
758
|
),
|
|
@@ -634,8 +763,8 @@ var FormSelectBox = ({
|
|
|
634
763
|
setIsOpen((prev) => !prev);
|
|
635
764
|
},
|
|
636
765
|
children: [
|
|
637
|
-
/* @__PURE__ */
|
|
638
|
-
/* @__PURE__ */
|
|
766
|
+
/* @__PURE__ */ jsx21("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
|
|
767
|
+
/* @__PURE__ */ jsx21(
|
|
639
768
|
IconChevronDownXS,
|
|
640
769
|
{
|
|
641
770
|
className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
|
|
@@ -645,17 +774,17 @@ var FormSelectBox = ({
|
|
|
645
774
|
]
|
|
646
775
|
}
|
|
647
776
|
),
|
|
648
|
-
isOpen && /* @__PURE__ */
|
|
777
|
+
isOpen && /* @__PURE__ */ jsx21(
|
|
649
778
|
"ul",
|
|
650
779
|
{
|
|
651
780
|
className: cn(
|
|
652
781
|
"absolute top-full left-0 right-0 z-10",
|
|
653
782
|
// 💡 Input 바로 아래에 띄움
|
|
654
783
|
"box-border border border-gray02 bg-white flex flex-col",
|
|
655
|
-
"max-h-50 overflow-y-auto
|
|
656
|
-
//
|
|
784
|
+
"max-h-50 overflow-y-auto"
|
|
785
|
+
// 항목이 너무 많으면 스크롤 생성 (디자인 스펙: 그림자 없음)
|
|
657
786
|
),
|
|
658
|
-
children: options.map((option) => /* @__PURE__ */
|
|
787
|
+
children: options.map((option) => /* @__PURE__ */ jsx21(
|
|
659
788
|
SelectBoxOption,
|
|
660
789
|
{
|
|
661
790
|
label: option,
|
|
@@ -672,7 +801,7 @@ var FormSelectBox = ({
|
|
|
672
801
|
};
|
|
673
802
|
|
|
674
803
|
// src/components/TextButton/TextButton.tsx
|
|
675
|
-
import { Fragment, jsx as
|
|
804
|
+
import { Fragment, jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
676
805
|
var TextButton = ({
|
|
677
806
|
children,
|
|
678
807
|
icon,
|
|
@@ -682,15 +811,15 @@ var TextButton = ({
|
|
|
682
811
|
className,
|
|
683
812
|
...props
|
|
684
813
|
}) => {
|
|
685
|
-
const content = /* @__PURE__ */
|
|
686
|
-
icon && iconPosition === "left" && /* @__PURE__ */
|
|
687
|
-
/* @__PURE__ */
|
|
688
|
-
icon && iconPosition === "right" && /* @__PURE__ */
|
|
814
|
+
const content = /* @__PURE__ */ jsxs11(Fragment, { children: [
|
|
815
|
+
icon && iconPosition === "left" && /* @__PURE__ */ jsx22("span", { className: "flex shrink-0 items-center", children: icon }),
|
|
816
|
+
/* @__PURE__ */ jsx22("span", { className: cn(underline && "underline underline-offset-2"), children }),
|
|
817
|
+
icon && iconPosition === "right" && /* @__PURE__ */ jsx22("span", { className: "flex shrink-0 items-center", children: icon })
|
|
689
818
|
] });
|
|
690
819
|
const classes = cn(
|
|
691
820
|
"inline-flex w-fit items-center gap-1 px-1 -mx-1",
|
|
692
821
|
"text-caption-book",
|
|
693
|
-
alert ? "text-danger" : "text-
|
|
822
|
+
alert ? "text-danger" : "text-secondary",
|
|
694
823
|
"hover:bg-gray00 active:bg-gray01 transition-colors",
|
|
695
824
|
alert ? "hover:text-danger" : "hover:text-primary",
|
|
696
825
|
"cursor-pointer select-none",
|
|
@@ -700,15 +829,15 @@ var TextButton = ({
|
|
|
700
829
|
);
|
|
701
830
|
if (props.href !== void 0) {
|
|
702
831
|
const { href, ...rest } = props;
|
|
703
|
-
return /* @__PURE__ */
|
|
832
|
+
return /* @__PURE__ */ jsx22("a", { href, className: classes, ...rest, children: content });
|
|
704
833
|
}
|
|
705
834
|
const buttonProps = props;
|
|
706
|
-
return /* @__PURE__ */
|
|
835
|
+
return /* @__PURE__ */ jsx22("button", { type: "button", className: classes, ...buttonProps, children: content });
|
|
707
836
|
};
|
|
708
837
|
|
|
709
838
|
// src/components/Dropdown/Dropdown.tsx
|
|
710
839
|
import { useEffect as useEffect2, useRef as useRef2, useState as useState4 } from "react";
|
|
711
|
-
import { jsx as
|
|
840
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
712
841
|
var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
713
842
|
const [isOpen, setIsOpen] = useState4(false);
|
|
714
843
|
const containerRef = useRef2(null);
|
|
@@ -723,8 +852,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
723
852
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
724
853
|
};
|
|
725
854
|
}, []);
|
|
726
|
-
return /* @__PURE__ */
|
|
727
|
-
/* @__PURE__ */
|
|
855
|
+
return /* @__PURE__ */ jsxs12("div", { ref: containerRef, className: "relative", children: [
|
|
856
|
+
/* @__PURE__ */ jsxs12(
|
|
728
857
|
"div",
|
|
729
858
|
{
|
|
730
859
|
className: cn(
|
|
@@ -737,8 +866,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
737
866
|
),
|
|
738
867
|
onClick: () => setIsOpen((prev) => !prev),
|
|
739
868
|
children: [
|
|
740
|
-
/* @__PURE__ */
|
|
741
|
-
/* @__PURE__ */
|
|
869
|
+
/* @__PURE__ */ jsx23("p", { children: selectedLabel }),
|
|
870
|
+
/* @__PURE__ */ jsx23(
|
|
742
871
|
IconChevronDownXS,
|
|
743
872
|
{
|
|
744
873
|
className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
|
|
@@ -748,7 +877,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
748
877
|
]
|
|
749
878
|
}
|
|
750
879
|
),
|
|
751
|
-
isOpen && /* @__PURE__ */
|
|
880
|
+
isOpen && /* @__PURE__ */ jsx23("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ jsx23(
|
|
752
881
|
SelectBoxOption,
|
|
753
882
|
{
|
|
754
883
|
label,
|
|
@@ -764,7 +893,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
764
893
|
};
|
|
765
894
|
|
|
766
895
|
// src/components/ListView/List.tsx
|
|
767
|
-
import { jsx as
|
|
896
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
768
897
|
function List({
|
|
769
898
|
className,
|
|
770
899
|
label1,
|
|
@@ -777,7 +906,7 @@ function List({
|
|
|
777
906
|
children,
|
|
778
907
|
...props
|
|
779
908
|
}) {
|
|
780
|
-
return /* @__PURE__ */
|
|
909
|
+
return /* @__PURE__ */ jsxs13(
|
|
781
910
|
"li",
|
|
782
911
|
{
|
|
783
912
|
className: cn(
|
|
@@ -792,11 +921,11 @@ function List({
|
|
|
792
921
|
...props,
|
|
793
922
|
onClick,
|
|
794
923
|
children: [
|
|
795
|
-
/* @__PURE__ */
|
|
796
|
-
/* @__PURE__ */
|
|
797
|
-
/* @__PURE__ */
|
|
924
|
+
/* @__PURE__ */ jsxs13("section", { className: cn("flex items-center gap-4"), children: [
|
|
925
|
+
/* @__PURE__ */ jsx24("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
|
|
926
|
+
/* @__PURE__ */ jsx24("div", { className: cn("flex items-center gap-2"), children })
|
|
798
927
|
] }),
|
|
799
|
-
/* @__PURE__ */
|
|
928
|
+
/* @__PURE__ */ jsx24(
|
|
800
929
|
"label",
|
|
801
930
|
{
|
|
802
931
|
className: cn(
|
|
@@ -808,41 +937,60 @@ function List({
|
|
|
808
937
|
children: label2 ? label2 : "-"
|
|
809
938
|
}
|
|
810
939
|
),
|
|
811
|
-
/* @__PURE__ */
|
|
940
|
+
/* @__PURE__ */ jsx24("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
|
|
812
941
|
]
|
|
813
942
|
}
|
|
814
943
|
);
|
|
815
944
|
}
|
|
816
945
|
|
|
817
946
|
// src/components/Modal/Modal.tsx
|
|
818
|
-
import { jsx as
|
|
819
|
-
var ModalBase = ({ isVisible, header, children, className }) => {
|
|
947
|
+
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
948
|
+
var ModalBase = ({ isVisible, header, children, className, onClose }) => {
|
|
820
949
|
if (!isVisible) return null;
|
|
821
|
-
return /* @__PURE__ */
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
950
|
+
return /* @__PURE__ */ jsxs14("div", { className: cn("fixed inset-0 z-50"), children: [
|
|
951
|
+
/* @__PURE__ */ jsx25(
|
|
952
|
+
"div",
|
|
953
|
+
{
|
|
954
|
+
"aria-hidden": true,
|
|
955
|
+
onClick: onClose,
|
|
956
|
+
className: cn("fixed inset-0 z-1000 bg-black/10", onClose && "cursor-pointer")
|
|
957
|
+
}
|
|
958
|
+
),
|
|
959
|
+
/* @__PURE__ */ jsx25("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsxs14(
|
|
960
|
+
"main",
|
|
961
|
+
{
|
|
962
|
+
role: "dialog",
|
|
963
|
+
"aria-modal": "true",
|
|
964
|
+
className: cn(
|
|
965
|
+
"relative w-110 pt-8 h-fit pointer-events-auto",
|
|
966
|
+
"flex flex-col items-center",
|
|
967
|
+
"border border-gray02",
|
|
968
|
+
"bg-white shadow-[0px_0px_30px_0px_rgba(0,0,0,0.08)]",
|
|
969
|
+
className
|
|
970
|
+
),
|
|
971
|
+
children: [
|
|
972
|
+
onClose && /* @__PURE__ */ jsx25(
|
|
973
|
+
"button",
|
|
974
|
+
{
|
|
975
|
+
type: "button",
|
|
976
|
+
onClick: onClose,
|
|
977
|
+
"aria-label": "\uB2EB\uAE30",
|
|
978
|
+
className: cn(
|
|
979
|
+
"absolute right-3 top-3 flex size-8 items-center justify-center",
|
|
980
|
+
"text-tertiary transition-colors hover:bg-gray00 active:bg-gray01 cursor-pointer"
|
|
981
|
+
),
|
|
982
|
+
children: /* @__PURE__ */ jsx25(IconClose, {})
|
|
983
|
+
}
|
|
834
984
|
),
|
|
835
|
-
children:
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
}
|
|
842
|
-
) });
|
|
985
|
+
/* @__PURE__ */ jsx25("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
|
|
986
|
+
children
|
|
987
|
+
]
|
|
988
|
+
}
|
|
989
|
+
) })
|
|
990
|
+
] });
|
|
843
991
|
};
|
|
844
992
|
var Contents = ({ children, className }) => {
|
|
845
|
-
return /* @__PURE__ */
|
|
993
|
+
return /* @__PURE__ */ jsx25(
|
|
846
994
|
"div",
|
|
847
995
|
{
|
|
848
996
|
className: cn(
|
|
@@ -859,7 +1007,7 @@ var CTAs2 = ({ children, className, row = false }) => {
|
|
|
859
1007
|
if (!children) return null;
|
|
860
1008
|
return (
|
|
861
1009
|
// CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
|
|
862
|
-
/* @__PURE__ */
|
|
1010
|
+
/* @__PURE__ */ jsx25(
|
|
863
1011
|
"div",
|
|
864
1012
|
{
|
|
865
1013
|
className: cn(
|
|
@@ -878,9 +1026,9 @@ var Modal = Object.assign(ModalBase, {
|
|
|
878
1026
|
});
|
|
879
1027
|
|
|
880
1028
|
// src/components/Modal/ModalText.tsx
|
|
881
|
-
import { jsx as
|
|
1029
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
882
1030
|
var ModalText = ({ children, className }) => {
|
|
883
|
-
return /* @__PURE__ */
|
|
1031
|
+
return /* @__PURE__ */ jsx26(
|
|
884
1032
|
"div",
|
|
885
1033
|
{
|
|
886
1034
|
className: cn(
|
|
@@ -896,14 +1044,14 @@ var ModalText = ({ children, className }) => {
|
|
|
896
1044
|
};
|
|
897
1045
|
|
|
898
1046
|
// src/components/createPost/CategorySegment.tsx
|
|
899
|
-
import { jsx as
|
|
1047
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
900
1048
|
var CategorySegment = ({
|
|
901
1049
|
selected = false,
|
|
902
1050
|
label,
|
|
903
1051
|
className,
|
|
904
1052
|
onClick
|
|
905
1053
|
}) => {
|
|
906
|
-
return /* @__PURE__ */
|
|
1054
|
+
return /* @__PURE__ */ jsx27(
|
|
907
1055
|
"div",
|
|
908
1056
|
{
|
|
909
1057
|
className: cn(
|
|
@@ -923,7 +1071,7 @@ var CategorySegment = ({
|
|
|
923
1071
|
};
|
|
924
1072
|
|
|
925
1073
|
// src/components/createPost/CategorySegmentedControl.tsx
|
|
926
|
-
import { jsx as
|
|
1074
|
+
import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
927
1075
|
var categorySegments = {
|
|
928
1076
|
info: ["\uACF5\uC6A9 \uBB3C\uD488", "\uC77C\uBC18 \uAE30\uC790\uC7AC", "\uD2B9\uC218 \uAE30\uC790\uC7AC"],
|
|
929
1077
|
archive: ["\uD504\uB9B0\uD2B8\uC2E4", "\uD64D\uC775\uC2DC\uB514"],
|
|
@@ -937,8 +1085,8 @@ var CategorySegmentedControl = ({
|
|
|
937
1085
|
className
|
|
938
1086
|
}) => {
|
|
939
1087
|
const segments = categorySegments[variable];
|
|
940
|
-
return /* @__PURE__ */
|
|
941
|
-
/* @__PURE__ */
|
|
1088
|
+
return /* @__PURE__ */ jsxs15("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
|
|
1089
|
+
/* @__PURE__ */ jsx28(
|
|
942
1090
|
"div",
|
|
943
1091
|
{
|
|
944
1092
|
className: cn(
|
|
@@ -951,7 +1099,7 @@ var CategorySegmentedControl = ({
|
|
|
951
1099
|
children: variable === "infoTag" ? "\uD0DC\uADF8 \uC120\uD0DD" : "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
|
|
952
1100
|
}
|
|
953
1101
|
),
|
|
954
|
-
segments.map((label) => /* @__PURE__ */
|
|
1102
|
+
segments.map((label) => /* @__PURE__ */ jsx28(
|
|
955
1103
|
CategorySegment,
|
|
956
1104
|
{
|
|
957
1105
|
label,
|
|
@@ -964,9 +1112,9 @@ var CategorySegmentedControl = ({
|
|
|
964
1112
|
};
|
|
965
1113
|
|
|
966
1114
|
// src/components/createPost/TitleInput.tsx
|
|
967
|
-
import { jsx as
|
|
1115
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
968
1116
|
var TitleInput = ({ title, onChange, className }) => {
|
|
969
|
-
return /* @__PURE__ */
|
|
1117
|
+
return /* @__PURE__ */ jsx29(
|
|
970
1118
|
"input",
|
|
971
1119
|
{
|
|
972
1120
|
type: "text",
|
|
@@ -986,9 +1134,9 @@ var TitleInput = ({ title, onChange, className }) => {
|
|
|
986
1134
|
};
|
|
987
1135
|
|
|
988
1136
|
// src/components/notice/NoticeBadge.tsx
|
|
989
|
-
import { jsx as
|
|
1137
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
990
1138
|
var NoticeBadge = ({ variable, className, onClick }) => {
|
|
991
|
-
return /* @__PURE__ */
|
|
1139
|
+
return /* @__PURE__ */ jsx30(
|
|
992
1140
|
"button",
|
|
993
1141
|
{
|
|
994
1142
|
type: "button",
|
|
@@ -1009,7 +1157,7 @@ var NoticeBadge = ({ variable, className, onClick }) => {
|
|
|
1009
1157
|
};
|
|
1010
1158
|
|
|
1011
1159
|
// src/components/notice/NoticeBar.tsx
|
|
1012
|
-
import { jsx as
|
|
1160
|
+
import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1013
1161
|
var NoticeBar = ({
|
|
1014
1162
|
variable = "default",
|
|
1015
1163
|
badgeVariable,
|
|
@@ -1018,7 +1166,7 @@ var NoticeBar = ({
|
|
|
1018
1166
|
className,
|
|
1019
1167
|
onClick
|
|
1020
1168
|
}) => {
|
|
1021
|
-
return /* @__PURE__ */
|
|
1169
|
+
return /* @__PURE__ */ jsxs16(
|
|
1022
1170
|
"div",
|
|
1023
1171
|
{
|
|
1024
1172
|
className: cn(
|
|
@@ -1030,20 +1178,20 @@ var NoticeBar = ({
|
|
|
1030
1178
|
),
|
|
1031
1179
|
onClick,
|
|
1032
1180
|
children: [
|
|
1033
|
-
/* @__PURE__ */
|
|
1034
|
-
/* @__PURE__ */
|
|
1035
|
-
/* @__PURE__ */
|
|
1181
|
+
/* @__PURE__ */ jsxs16("section", { className: "flex items-center gap-3", children: [
|
|
1182
|
+
/* @__PURE__ */ jsx31(NoticeBadge, { variable: badgeVariable }),
|
|
1183
|
+
/* @__PURE__ */ jsx31("h1", { className: "text-head1-medium text-strong", children: title })
|
|
1036
1184
|
] }),
|
|
1037
|
-
/* @__PURE__ */
|
|
1185
|
+
/* @__PURE__ */ jsx31("p", { className: "text-body3-book text-tertiary", children: date })
|
|
1038
1186
|
]
|
|
1039
1187
|
}
|
|
1040
1188
|
);
|
|
1041
1189
|
};
|
|
1042
1190
|
|
|
1043
1191
|
// src/components/SearchBar/SearchBar.tsx
|
|
1044
|
-
import { jsx as
|
|
1192
|
+
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1045
1193
|
var SearchBar = ({ value, onChange, className }) => {
|
|
1046
|
-
return /* @__PURE__ */
|
|
1194
|
+
return /* @__PURE__ */ jsxs17(
|
|
1047
1195
|
"label",
|
|
1048
1196
|
{
|
|
1049
1197
|
className: cn(
|
|
@@ -1054,8 +1202,8 @@ var SearchBar = ({ value, onChange, className }) => {
|
|
|
1054
1202
|
className
|
|
1055
1203
|
),
|
|
1056
1204
|
children: [
|
|
1057
|
-
/* @__PURE__ */
|
|
1058
|
-
/* @__PURE__ */
|
|
1205
|
+
/* @__PURE__ */ jsx32(IconSearch, {}),
|
|
1206
|
+
/* @__PURE__ */ jsx32(
|
|
1059
1207
|
"input",
|
|
1060
1208
|
{
|
|
1061
1209
|
type: "text",
|
|
@@ -1091,20 +1239,8 @@ function useControllableState(controlled, defaultValue) {
|
|
|
1091
1239
|
return [value, setValue, isControlled];
|
|
1092
1240
|
}
|
|
1093
1241
|
|
|
1094
|
-
// src/components/SideRadioAccordion/Exclamation.svg
|
|
1095
|
-
var Exclamation_default = "./Exclamation-IUYZYYC4.svg";
|
|
1096
|
-
|
|
1097
|
-
// src/components/SideRadioAccordion/ChevronDown.svg
|
|
1098
|
-
var ChevronDown_default = "./ChevronDown-XSALXCW4.svg";
|
|
1099
|
-
|
|
1100
|
-
// src/components/SideRadioAccordion/RadioSelected.svg
|
|
1101
|
-
var RadioSelected_default = "./RadioSelected-DOLVV7ZM.svg";
|
|
1102
|
-
|
|
1103
|
-
// src/components/SideRadioAccordion/RadioUnselected.svg
|
|
1104
|
-
var RadioUnselected_default = "./RadioUnselected-QN74EU46.svg";
|
|
1105
|
-
|
|
1106
1242
|
// src/components/SideRadioAccordion/SideRadioAccordion.tsx
|
|
1107
|
-
import { jsx as
|
|
1243
|
+
import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1108
1244
|
var printColorBgClass = {
|
|
1109
1245
|
Plotter: "bg-print-plotter",
|
|
1110
1246
|
Printer: "bg-print-printer",
|
|
@@ -1148,8 +1284,8 @@ var SideRadioAccordion = forwardRef(
|
|
|
1148
1284
|
setIsOpen(next);
|
|
1149
1285
|
onOpenChange?.(next);
|
|
1150
1286
|
};
|
|
1151
|
-
return /* @__PURE__ */
|
|
1152
|
-
/* @__PURE__ */
|
|
1287
|
+
return /* @__PURE__ */ jsxs18("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
|
|
1288
|
+
/* @__PURE__ */ jsx33(
|
|
1153
1289
|
Stepper,
|
|
1154
1290
|
{
|
|
1155
1291
|
step,
|
|
@@ -1160,8 +1296,8 @@ var SideRadioAccordion = forwardRef(
|
|
|
1160
1296
|
className: cn(stickyHeader && "sticky top-0 z-10")
|
|
1161
1297
|
}
|
|
1162
1298
|
),
|
|
1163
|
-
expanded && /* @__PURE__ */
|
|
1164
|
-
radioToggleList.map((item) => /* @__PURE__ */
|
|
1299
|
+
expanded && /* @__PURE__ */ jsxs18("div", { className: "flex flex-col divide-y divide-gray02", children: [
|
|
1300
|
+
radioToggleList.map((item) => /* @__PURE__ */ jsx33(
|
|
1165
1301
|
RadioToggleItem,
|
|
1166
1302
|
{
|
|
1167
1303
|
...item,
|
|
@@ -1170,29 +1306,22 @@ var SideRadioAccordion = forwardRef(
|
|
|
1170
1306
|
},
|
|
1171
1307
|
itemKey(item)
|
|
1172
1308
|
)),
|
|
1173
|
-
quantityLimitLabel && /* @__PURE__ */
|
|
1174
|
-
TextButton2,
|
|
1175
|
-
{
|
|
1176
|
-
label: quantityLimitLabel,
|
|
1177
|
-
onClick: onClickQuantityLimit,
|
|
1178
|
-
className: "mt-2"
|
|
1179
|
-
}
|
|
1180
|
-
)
|
|
1309
|
+
quantityLimitLabel && /* @__PURE__ */ jsx33("div", { className: "px-5 py-4", children: /* @__PURE__ */ jsx33(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
|
|
1181
1310
|
] })
|
|
1182
1311
|
] });
|
|
1183
1312
|
}
|
|
1184
1313
|
);
|
|
1185
1314
|
var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
|
|
1186
|
-
const label = /* @__PURE__ */
|
|
1315
|
+
const label = /* @__PURE__ */ jsxs18("span", { children: [
|
|
1187
1316
|
step,
|
|
1188
1317
|
" | ",
|
|
1189
1318
|
title
|
|
1190
1319
|
] });
|
|
1191
|
-
const base = "w-full flex items-center justify-between px-
|
|
1320
|
+
const base = "w-full flex items-center justify-between px-5 py-2.5 text-head3-medium text-primary text-left bg-white border-b border-gray02";
|
|
1192
1321
|
if (!collapsible) {
|
|
1193
|
-
return /* @__PURE__ */
|
|
1322
|
+
return /* @__PURE__ */ jsx33("div", { className: cn(base, className), children: label });
|
|
1194
1323
|
}
|
|
1195
|
-
return /* @__PURE__ */
|
|
1324
|
+
return /* @__PURE__ */ jsxs18(
|
|
1196
1325
|
"button",
|
|
1197
1326
|
{
|
|
1198
1327
|
type: "button",
|
|
@@ -1200,14 +1329,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
|
|
|
1200
1329
|
className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
|
|
1201
1330
|
children: [
|
|
1202
1331
|
label,
|
|
1203
|
-
/* @__PURE__ */
|
|
1204
|
-
"img",
|
|
1205
|
-
{
|
|
1206
|
-
src: ChevronDown_default,
|
|
1207
|
-
alt: "",
|
|
1208
|
-
className: cn("transition-transform", isOpen && "rotate-180")
|
|
1209
|
-
}
|
|
1210
|
-
)
|
|
1332
|
+
/* @__PURE__ */ jsx33(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
|
|
1211
1333
|
]
|
|
1212
1334
|
}
|
|
1213
1335
|
);
|
|
@@ -1226,29 +1348,29 @@ var RadioToggleItem = ({
|
|
|
1226
1348
|
}) => {
|
|
1227
1349
|
const rowBg = !open ? "bg-white hover:bg-gray00" : color ? void 0 : printColor ? printColorBgClass[printColor] : "bg-gray00";
|
|
1228
1350
|
const style = open && color ? { backgroundColor: color } : void 0;
|
|
1229
|
-
return /* @__PURE__ */
|
|
1230
|
-
/* @__PURE__ */
|
|
1351
|
+
return /* @__PURE__ */ jsxs18("div", { className: "w-full", children: [
|
|
1352
|
+
/* @__PURE__ */ jsxs18(
|
|
1231
1353
|
"button",
|
|
1232
1354
|
{
|
|
1233
1355
|
type: "button",
|
|
1234
1356
|
onClick: onSelect,
|
|
1235
1357
|
style,
|
|
1236
1358
|
className: cn(
|
|
1237
|
-
"w-full flex items-center gap-1.5
|
|
1238
|
-
"text-
|
|
1359
|
+
"w-full flex items-center gap-1.5 p-3",
|
|
1360
|
+
"text-body1-regular text-secondary text-left cursor-pointer",
|
|
1239
1361
|
rowBg,
|
|
1240
1362
|
className
|
|
1241
1363
|
),
|
|
1242
1364
|
children: [
|
|
1243
|
-
/* @__PURE__ */
|
|
1244
|
-
/* @__PURE__ */
|
|
1365
|
+
/* @__PURE__ */ jsx33(Radio, { selected: open }),
|
|
1366
|
+
/* @__PURE__ */ jsx33("span", { children: title })
|
|
1245
1367
|
]
|
|
1246
1368
|
}
|
|
1247
1369
|
),
|
|
1248
|
-
open && /* @__PURE__ */
|
|
1249
|
-
/* @__PURE__ */
|
|
1250
|
-
badges && badges.length > 0 && /* @__PURE__ */
|
|
1251
|
-
labelTextButton && /* @__PURE__ */
|
|
1370
|
+
open && /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
|
|
1371
|
+
/* @__PURE__ */ jsx33("p", { className: "text-caption-regular text-secondary", children: content }),
|
|
1372
|
+
badges && badges.length > 0 && /* @__PURE__ */ jsx33("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ jsx33(Badge, { label: badge }, badge)) }),
|
|
1373
|
+
labelTextButton && /* @__PURE__ */ jsx33(
|
|
1252
1374
|
TextButton2,
|
|
1253
1375
|
{
|
|
1254
1376
|
label: labelTextButton,
|
|
@@ -1261,17 +1383,11 @@ var RadioToggleItem = ({
|
|
|
1261
1383
|
] });
|
|
1262
1384
|
};
|
|
1263
1385
|
var Radio = ({ selected = false, className }) => {
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
{
|
|
1267
|
-
src: selected ? RadioSelected_default : RadioUnselected_default,
|
|
1268
|
-
alt: "",
|
|
1269
|
-
className: cn("w-4 h-4", className)
|
|
1270
|
-
}
|
|
1271
|
-
);
|
|
1386
|
+
const Icon = selected ? IconRadioSelected : IconRadioUnselected;
|
|
1387
|
+
return /* @__PURE__ */ jsx33(Icon, { className: cn("w-6 h-6", className) });
|
|
1272
1388
|
};
|
|
1273
1389
|
var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
|
|
1274
|
-
return /* @__PURE__ */
|
|
1390
|
+
return /* @__PURE__ */ jsxs18(
|
|
1275
1391
|
"button",
|
|
1276
1392
|
{
|
|
1277
1393
|
type: "button",
|
|
@@ -1284,18 +1400,18 @@ var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
|
|
|
1284
1400
|
className
|
|
1285
1401
|
),
|
|
1286
1402
|
children: [
|
|
1287
|
-
showIcon && /* @__PURE__ */
|
|
1403
|
+
showIcon && /* @__PURE__ */ jsx33(IconExclamation, {}),
|
|
1288
1404
|
label
|
|
1289
1405
|
]
|
|
1290
1406
|
}
|
|
1291
1407
|
);
|
|
1292
1408
|
};
|
|
1293
1409
|
var Badge = ({ label, className }) => {
|
|
1294
|
-
return /* @__PURE__ */
|
|
1410
|
+
return /* @__PURE__ */ jsx33(
|
|
1295
1411
|
"div",
|
|
1296
1412
|
{
|
|
1297
1413
|
className: cn(
|
|
1298
|
-
"w-fit h-fit px-2 py-0.5 border border-gray02",
|
|
1414
|
+
"w-fit h-fit px-2 py-0.5 border border-gray02 shrink-0 whitespace-nowrap",
|
|
1299
1415
|
"text-tertiary text-caption-book",
|
|
1300
1416
|
className
|
|
1301
1417
|
),
|
|
@@ -1305,7 +1421,7 @@ var Badge = ({ label, className }) => {
|
|
|
1305
1421
|
};
|
|
1306
1422
|
|
|
1307
1423
|
// src/components/Tag/Tag.tsx
|
|
1308
|
-
import { jsx as
|
|
1424
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
1309
1425
|
var Tag = ({
|
|
1310
1426
|
className,
|
|
1311
1427
|
children,
|
|
@@ -1315,7 +1431,7 @@ var Tag = ({
|
|
|
1315
1431
|
onClick,
|
|
1316
1432
|
...props
|
|
1317
1433
|
}) => {
|
|
1318
|
-
return /* @__PURE__ */
|
|
1434
|
+
return /* @__PURE__ */ jsx34(
|
|
1319
1435
|
"button",
|
|
1320
1436
|
{
|
|
1321
1437
|
className: cn(
|
|
@@ -1334,7 +1450,7 @@ var Tag = ({
|
|
|
1334
1450
|
disabled,
|
|
1335
1451
|
style: bgColor ? { backgroundColor: bgColor, border: "none" } : void 0,
|
|
1336
1452
|
...props,
|
|
1337
|
-
children: /* @__PURE__ */
|
|
1453
|
+
children: /* @__PURE__ */ jsx34("span", { children })
|
|
1338
1454
|
}
|
|
1339
1455
|
);
|
|
1340
1456
|
};
|
|
@@ -1376,7 +1492,7 @@ var formatWeekRange = (weekStart) => {
|
|
|
1376
1492
|
};
|
|
1377
1493
|
|
|
1378
1494
|
// src/components/Timetable/WeekNavigation.tsx
|
|
1379
|
-
import { jsx as
|
|
1495
|
+
import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1380
1496
|
var weekLabel = {
|
|
1381
1497
|
thisWeek: "\uC774\uBC88 \uC8FC",
|
|
1382
1498
|
nextWeek: "\uB2E4\uC74C \uC8FC",
|
|
@@ -1387,53 +1503,62 @@ var WeekNavigation = forwardRef2(
|
|
|
1387
1503
|
const showPrev = canPrev ?? (week ? week !== "thisWeek" : true);
|
|
1388
1504
|
const showNext = canNext ?? (week ? week !== "twoWeeksLater" : true);
|
|
1389
1505
|
const text = label ?? (week ? `${weekLabel[week]} (${formatWeekRange(date)})` : formatWeekRange(date));
|
|
1390
|
-
return /* @__PURE__ */
|
|
1506
|
+
return /* @__PURE__ */ jsxs19(
|
|
1391
1507
|
"div",
|
|
1392
1508
|
{
|
|
1393
1509
|
ref,
|
|
1394
1510
|
className: cn(
|
|
1395
|
-
"flex items-
|
|
1396
|
-
"w-full h-
|
|
1397
|
-
"bg-white border border-gray02",
|
|
1398
|
-
"text-
|
|
1511
|
+
"flex items-stretch justify-between",
|
|
1512
|
+
"w-full h-12",
|
|
1513
|
+
"bg-white border-b border-gray02",
|
|
1514
|
+
"text-body1-medium text-secondary",
|
|
1399
1515
|
className
|
|
1400
1516
|
),
|
|
1401
1517
|
children: [
|
|
1402
|
-
/* @__PURE__ */
|
|
1403
|
-
/* @__PURE__ */
|
|
1404
|
-
/* @__PURE__ */
|
|
1518
|
+
/* @__PURE__ */ jsx35(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
|
|
1519
|
+
/* @__PURE__ */ jsx35("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
|
|
1520
|
+
/* @__PURE__ */ jsx35(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
|
|
1405
1521
|
]
|
|
1406
1522
|
}
|
|
1407
1523
|
);
|
|
1408
1524
|
}
|
|
1409
1525
|
);
|
|
1410
1526
|
var ArrowButton = ({ direction, visible, onClick }) => {
|
|
1527
|
+
const divider = /* @__PURE__ */ jsx35("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
|
|
1411
1528
|
if (!visible) {
|
|
1412
|
-
return /* @__PURE__ */
|
|
1529
|
+
return /* @__PURE__ */ jsxs19("div", { className: "flex items-stretch", children: [
|
|
1530
|
+
direction === "right" && divider,
|
|
1531
|
+
/* @__PURE__ */ jsx35("span", { className: "w-[42px]" }),
|
|
1532
|
+
direction === "left" && divider
|
|
1533
|
+
] });
|
|
1413
1534
|
}
|
|
1414
|
-
return /* @__PURE__ */
|
|
1415
|
-
"
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1535
|
+
return /* @__PURE__ */ jsxs19("div", { className: "flex items-stretch", children: [
|
|
1536
|
+
direction === "right" && divider,
|
|
1537
|
+
/* @__PURE__ */ jsx35(
|
|
1538
|
+
"button",
|
|
1539
|
+
{
|
|
1540
|
+
type: "button",
|
|
1541
|
+
onClick,
|
|
1542
|
+
className: cn(
|
|
1543
|
+
"flex w-[42px] items-center justify-center",
|
|
1544
|
+
"text-gray06 cursor-pointer transition-colors",
|
|
1545
|
+
"hover:bg-gray00 active:bg-gray01"
|
|
1546
|
+
),
|
|
1547
|
+
children: /* @__PURE__ */ jsx35(
|
|
1548
|
+
IconChevronDownXS,
|
|
1549
|
+
{
|
|
1550
|
+
className: direction === "left" ? "rotate-90" : "-rotate-90",
|
|
1551
|
+
stroke: "currentColor"
|
|
1552
|
+
}
|
|
1553
|
+
)
|
|
1554
|
+
}
|
|
1555
|
+
),
|
|
1556
|
+
direction === "left" && divider
|
|
1557
|
+
] });
|
|
1433
1558
|
};
|
|
1434
1559
|
|
|
1435
1560
|
// src/components/Timetable/Timetable.tsx
|
|
1436
|
-
import { jsx as
|
|
1561
|
+
import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1437
1562
|
var printColorHoverClass = {
|
|
1438
1563
|
Plotter: "hover:bg-print-plotter",
|
|
1439
1564
|
Printer: "hover:bg-print-printer",
|
|
@@ -1456,8 +1581,8 @@ var Timetable = forwardRef3(function Timetable2({
|
|
|
1456
1581
|
canNextWeek,
|
|
1457
1582
|
className
|
|
1458
1583
|
}, ref) {
|
|
1459
|
-
return /* @__PURE__ */
|
|
1460
|
-
!hideWeekNavigation && /* @__PURE__ */
|
|
1584
|
+
return /* @__PURE__ */ jsxs20("div", { ref, className: cn(fluid && "w-full", className), children: [
|
|
1585
|
+
!hideWeekNavigation && /* @__PURE__ */ jsx36(
|
|
1461
1586
|
WeekNavigation,
|
|
1462
1587
|
{
|
|
1463
1588
|
date: weekStart,
|
|
@@ -1468,7 +1593,7 @@ var Timetable = forwardRef3(function Timetable2({
|
|
|
1468
1593
|
onNextWeek
|
|
1469
1594
|
}
|
|
1470
1595
|
),
|
|
1471
|
-
/* @__PURE__ */
|
|
1596
|
+
/* @__PURE__ */ jsx36("div", { className: cn("flex", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ jsx36(
|
|
1472
1597
|
DailyTimetable,
|
|
1473
1598
|
{
|
|
1474
1599
|
date: day.date,
|
|
@@ -1481,9 +1606,9 @@ var Timetable = forwardRef3(function Timetable2({
|
|
|
1481
1606
|
] });
|
|
1482
1607
|
});
|
|
1483
1608
|
var DailyTimetable = ({ date, slots, fluid, onSelectTime, className }) => {
|
|
1484
|
-
return /* @__PURE__ */
|
|
1485
|
-
/* @__PURE__ */
|
|
1486
|
-
slots.map((slot) => /* @__PURE__ */
|
|
1609
|
+
return /* @__PURE__ */ jsxs20("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
|
|
1610
|
+
/* @__PURE__ */ jsx36("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
|
|
1611
|
+
slots.map((slot) => /* @__PURE__ */ jsx36(
|
|
1487
1612
|
TimeItem,
|
|
1488
1613
|
{
|
|
1489
1614
|
state: slot.state,
|
|
@@ -1509,17 +1634,17 @@ var TimeItem = ({
|
|
|
1509
1634
|
}) => {
|
|
1510
1635
|
const clickable = (state === "default" || state === "selected") && !!onClick;
|
|
1511
1636
|
const style = state === "default" && color ? { "--tt-hover": color } : void 0;
|
|
1512
|
-
return /* @__PURE__ */
|
|
1637
|
+
return /* @__PURE__ */ jsx36(
|
|
1513
1638
|
"div",
|
|
1514
1639
|
{
|
|
1515
1640
|
onClick: clickable ? onClick : void 0,
|
|
1516
1641
|
style,
|
|
1517
1642
|
className: cn(
|
|
1518
|
-
"h-18 flex items-center justify-center",
|
|
1643
|
+
"h-18 flex items-center justify-center border-b border-gray02",
|
|
1519
1644
|
fluid ? "w-full" : "w-18",
|
|
1520
1645
|
"text-body1-medium text-center bg-white text-primary",
|
|
1521
1646
|
state === "none" && "bg-gray00 text-transparent",
|
|
1522
|
-
state === "selected" && "bg-black text-
|
|
1647
|
+
state === "selected" && "bg-black text-white hover:cursor-pointer",
|
|
1523
1648
|
state === "disabled" && "bg-gray00 text-gray03",
|
|
1524
1649
|
state === "default" && [
|
|
1525
1650
|
"hover:cursor-pointer",
|
|
@@ -1534,11 +1659,12 @@ var TimeItem = ({
|
|
|
1534
1659
|
|
|
1535
1660
|
// src/components/TNB/TNB.tsx
|
|
1536
1661
|
import {
|
|
1662
|
+
Fragment as Fragment2,
|
|
1537
1663
|
forwardRef as forwardRef4,
|
|
1538
1664
|
useCallback as useCallback2,
|
|
1539
1665
|
useState as useState6
|
|
1540
1666
|
} from "react";
|
|
1541
|
-
import { jsx as
|
|
1667
|
+
import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1542
1668
|
function useControllableState2(controlled, defaultValue) {
|
|
1543
1669
|
const isControlled = controlled !== void 0;
|
|
1544
1670
|
const [uncontrolled, setUncontrolled] = useState6(defaultValue);
|
|
@@ -1590,8 +1716,8 @@ var TNB = forwardRef4(function TNB2({
|
|
|
1590
1716
|
setLowerValue(label);
|
|
1591
1717
|
onSelectedLowerChange?.(label);
|
|
1592
1718
|
};
|
|
1593
|
-
return /* @__PURE__ */
|
|
1594
|
-
/* @__PURE__ */
|
|
1719
|
+
return /* @__PURE__ */ jsxs21("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
|
|
1720
|
+
/* @__PURE__ */ jsx37(
|
|
1595
1721
|
UpperPart,
|
|
1596
1722
|
{
|
|
1597
1723
|
logo,
|
|
@@ -1602,7 +1728,7 @@ var TNB = forwardRef4(function TNB2({
|
|
|
1602
1728
|
linkComponent
|
|
1603
1729
|
}
|
|
1604
1730
|
),
|
|
1605
|
-
/* @__PURE__ */
|
|
1731
|
+
/* @__PURE__ */ jsx37(
|
|
1606
1732
|
LowerPart,
|
|
1607
1733
|
{
|
|
1608
1734
|
lowerPartItemList: currentLowerItemList,
|
|
@@ -1617,7 +1743,7 @@ var NavClickable = forwardRef4(function NavClickable2({ href, onClick, linkCompo
|
|
|
1617
1743
|
const ariaCurrent = current ? "page" : void 0;
|
|
1618
1744
|
if (href && !disabled) {
|
|
1619
1745
|
if (Link) {
|
|
1620
|
-
return /* @__PURE__ */
|
|
1746
|
+
return /* @__PURE__ */ jsx37(
|
|
1621
1747
|
Link,
|
|
1622
1748
|
{
|
|
1623
1749
|
href,
|
|
@@ -1629,7 +1755,7 @@ var NavClickable = forwardRef4(function NavClickable2({ href, onClick, linkCompo
|
|
|
1629
1755
|
}
|
|
1630
1756
|
);
|
|
1631
1757
|
}
|
|
1632
|
-
return /* @__PURE__ */
|
|
1758
|
+
return /* @__PURE__ */ jsx37(
|
|
1633
1759
|
"a",
|
|
1634
1760
|
{
|
|
1635
1761
|
href,
|
|
@@ -1641,7 +1767,7 @@ var NavClickable = forwardRef4(function NavClickable2({ href, onClick, linkCompo
|
|
|
1641
1767
|
}
|
|
1642
1768
|
);
|
|
1643
1769
|
}
|
|
1644
|
-
return /* @__PURE__ */
|
|
1770
|
+
return /* @__PURE__ */ jsx37(
|
|
1645
1771
|
"button",
|
|
1646
1772
|
{
|
|
1647
1773
|
type: "button",
|
|
@@ -1663,33 +1789,50 @@ var UpperPart = ({
|
|
|
1663
1789
|
linkComponent,
|
|
1664
1790
|
className
|
|
1665
1791
|
}) => {
|
|
1666
|
-
return /* @__PURE__ */
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
linkComponent,
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1792
|
+
return /* @__PURE__ */ jsxs21(
|
|
1793
|
+
"div",
|
|
1794
|
+
{
|
|
1795
|
+
className: cn(
|
|
1796
|
+
"w-full min-h-13 flex items-stretch justify-between border-b border-gray02",
|
|
1797
|
+
className
|
|
1798
|
+
),
|
|
1799
|
+
children: [
|
|
1800
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
|
|
1801
|
+
/* @__PURE__ */ jsx37("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ jsx37(NavIconButton, { ...logo, linkComponent }) }),
|
|
1802
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
|
|
1803
|
+
/* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
1804
|
+
upperPartItemList.map((item) => /* @__PURE__ */ jsxs21(Fragment2, { children: [
|
|
1805
|
+
/* @__PURE__ */ jsx37(
|
|
1806
|
+
UpperPartTab,
|
|
1807
|
+
{
|
|
1808
|
+
label: item.label,
|
|
1809
|
+
href: item.href,
|
|
1810
|
+
selected: item.label === selected,
|
|
1811
|
+
linkComponent,
|
|
1812
|
+
onClick: () => {
|
|
1813
|
+
item.onClick?.();
|
|
1814
|
+
onSelectItem(item.label);
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
),
|
|
1818
|
+
/* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
1819
|
+
] }, item.id ?? item.label))
|
|
1820
|
+
] })
|
|
1821
|
+
] }),
|
|
1822
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
|
|
1823
|
+
/* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
1824
|
+
upperPartIconList.map((icon, index) => /* @__PURE__ */ jsx37(
|
|
1825
|
+
NavIconButton,
|
|
1826
|
+
{
|
|
1827
|
+
...icon,
|
|
1828
|
+
linkComponent
|
|
1829
|
+
},
|
|
1830
|
+
icon.id ?? icon.src ?? icon.label ?? index
|
|
1831
|
+
))
|
|
1832
|
+
] })
|
|
1833
|
+
]
|
|
1834
|
+
}
|
|
1835
|
+
);
|
|
1693
1836
|
};
|
|
1694
1837
|
var UpperPartTab = ({
|
|
1695
1838
|
label,
|
|
@@ -1699,7 +1842,7 @@ var UpperPartTab = ({
|
|
|
1699
1842
|
linkComponent,
|
|
1700
1843
|
className
|
|
1701
1844
|
}) => {
|
|
1702
|
-
return /* @__PURE__ */
|
|
1845
|
+
return /* @__PURE__ */ jsxs21(
|
|
1703
1846
|
NavClickable,
|
|
1704
1847
|
{
|
|
1705
1848
|
href,
|
|
@@ -1707,11 +1850,14 @@ var UpperPartTab = ({
|
|
|
1707
1850
|
linkComponent,
|
|
1708
1851
|
current: selected,
|
|
1709
1852
|
className: cn(
|
|
1710
|
-
"inline-flex
|
|
1711
|
-
|
|
1853
|
+
"inline-flex min-h-13 flex-col items-center gap-2 pt-2.5 cursor-pointer no-underline",
|
|
1854
|
+
"transition-colors hover:bg-gray00 active:bg-gray01",
|
|
1712
1855
|
className
|
|
1713
1856
|
),
|
|
1714
|
-
children:
|
|
1857
|
+
children: [
|
|
1858
|
+
/* @__PURE__ */ jsx37("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
|
|
1859
|
+
/* @__PURE__ */ jsx37("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
|
|
1860
|
+
]
|
|
1715
1861
|
}
|
|
1716
1862
|
);
|
|
1717
1863
|
};
|
|
@@ -1719,7 +1865,7 @@ var NavIconButton = forwardRef4(
|
|
|
1719
1865
|
function NavIconButton2({ src, icon, alt, label, href, onClick, selected, badge, className, linkComponent }, forwardedRef) {
|
|
1720
1866
|
const interactive = Boolean(onClick || href);
|
|
1721
1867
|
const showBadge = badge !== void 0 && badge !== null && badge !== false;
|
|
1722
|
-
return /* @__PURE__ */
|
|
1868
|
+
return /* @__PURE__ */ jsxs21(
|
|
1723
1869
|
NavClickable,
|
|
1724
1870
|
{
|
|
1725
1871
|
ref: forwardedRef,
|
|
@@ -1729,15 +1875,15 @@ var NavIconButton = forwardRef4(
|
|
|
1729
1875
|
current: selected,
|
|
1730
1876
|
disabled: !interactive,
|
|
1731
1877
|
className: cn(
|
|
1732
|
-
"relative inline-flex h-
|
|
1878
|
+
"relative inline-flex h-13 min-w-13 items-center justify-center gap-1.5 px-3 transition-colors",
|
|
1733
1879
|
interactive && "cursor-pointer",
|
|
1734
1880
|
selected ? "bg-black text-white" : "bg-transparent hover:bg-gray00 active:bg-gray01",
|
|
1735
1881
|
className
|
|
1736
1882
|
),
|
|
1737
1883
|
children: [
|
|
1738
|
-
icon ? /* @__PURE__ */
|
|
1739
|
-
label ? /* @__PURE__ */
|
|
1740
|
-
showBadge ? /* @__PURE__ */
|
|
1884
|
+
icon ? /* @__PURE__ */ jsx37("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ jsx37("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
|
|
1885
|
+
label ? /* @__PURE__ */ jsx37("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
|
|
1886
|
+
showBadge ? /* @__PURE__ */ jsx37(
|
|
1741
1887
|
"span",
|
|
1742
1888
|
{
|
|
1743
1889
|
"aria-hidden": badge === true,
|
|
@@ -1763,24 +1909,29 @@ var LowerPart = ({
|
|
|
1763
1909
|
if (lowerPartItemList.length === 0) {
|
|
1764
1910
|
return null;
|
|
1765
1911
|
}
|
|
1766
|
-
return /* @__PURE__ */
|
|
1912
|
+
return /* @__PURE__ */ jsxs21(
|
|
1767
1913
|
"div",
|
|
1768
1914
|
{
|
|
1769
|
-
className: cn("w-full h-
|
|
1770
|
-
children:
|
|
1771
|
-
|
|
1772
|
-
{
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1915
|
+
className: cn("w-full h-[42px] pl-14 flex items-stretch border-b border-gray02", className),
|
|
1916
|
+
children: [
|
|
1917
|
+
/* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
1918
|
+
lowerPartItemList.map((item) => /* @__PURE__ */ jsxs21(Fragment2, { children: [
|
|
1919
|
+
/* @__PURE__ */ jsx37(
|
|
1920
|
+
LowerPartItemButton,
|
|
1921
|
+
{
|
|
1922
|
+
label: item.label,
|
|
1923
|
+
href: item.href,
|
|
1924
|
+
selected: item.label === selected,
|
|
1925
|
+
linkComponent,
|
|
1926
|
+
onClick: () => {
|
|
1927
|
+
item.onClick?.();
|
|
1928
|
+
onSelectItem(item.label);
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
),
|
|
1932
|
+
/* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
1933
|
+
] }, item.id ?? item.label))
|
|
1934
|
+
]
|
|
1784
1935
|
}
|
|
1785
1936
|
);
|
|
1786
1937
|
};
|
|
@@ -1792,7 +1943,7 @@ var LowerPartItemButton = ({
|
|
|
1792
1943
|
linkComponent,
|
|
1793
1944
|
className
|
|
1794
1945
|
}) => {
|
|
1795
|
-
return /* @__PURE__ */
|
|
1946
|
+
return /* @__PURE__ */ jsx37(
|
|
1796
1947
|
NavClickable,
|
|
1797
1948
|
{
|
|
1798
1949
|
href,
|
|
@@ -1800,9 +1951,9 @@ var LowerPartItemButton = ({
|
|
|
1800
1951
|
linkComponent,
|
|
1801
1952
|
current: selected,
|
|
1802
1953
|
className: cn(
|
|
1803
|
-
"inline-flex px-
|
|
1804
|
-
"hover:bg-gray00 active:bg-gray01",
|
|
1805
|
-
selected ? "text-strong
|
|
1954
|
+
"inline-flex h-full items-center justify-center px-5 text-head3-medium cursor-pointer no-underline",
|
|
1955
|
+
"transition-colors hover:bg-gray00 active:bg-gray01",
|
|
1956
|
+
selected ? "text-strong" : "text-quaternary",
|
|
1806
1957
|
className
|
|
1807
1958
|
),
|
|
1808
1959
|
children: label
|
|
@@ -1812,7 +1963,7 @@ var LowerPartItemButton = ({
|
|
|
1812
1963
|
|
|
1813
1964
|
// src/components/Toast/Toast.tsx
|
|
1814
1965
|
import { forwardRef as forwardRef5, useEffect as useEffect3, useState as useState7 } from "react";
|
|
1815
|
-
import { jsx as
|
|
1966
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
1816
1967
|
var EXIT_MS = 300;
|
|
1817
1968
|
var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
|
|
1818
1969
|
const controlled = open !== void 0;
|
|
@@ -1835,7 +1986,7 @@ var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose
|
|
|
1835
1986
|
return () => clearTimeout(timer);
|
|
1836
1987
|
}, [controlled, open, duration, onClose]);
|
|
1837
1988
|
if (!mounted) return null;
|
|
1838
|
-
const banner = /* @__PURE__ */
|
|
1989
|
+
const banner = /* @__PURE__ */ jsx38(
|
|
1839
1990
|
"div",
|
|
1840
1991
|
{
|
|
1841
1992
|
ref,
|
|
@@ -1843,7 +1994,7 @@ var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose
|
|
|
1843
1994
|
"aria-live": "polite",
|
|
1844
1995
|
className: cn(
|
|
1845
1996
|
"w-full h-fit py-2.5 bg-gray06",
|
|
1846
|
-
"font-pretendard text-white text-center font-semibold text-[17px]",
|
|
1997
|
+
"font-pretendard text-white text-center font-semibold text-[17px] leading-[1.6]",
|
|
1847
1998
|
"shadow-[0_2px_15px_rgba(0,0,0,0.18)]",
|
|
1848
1999
|
controlled && "transition-opacity duration-300",
|
|
1849
2000
|
controlled && (visible ? "opacity-100" : "opacity-0"),
|
|
@@ -1853,7 +2004,7 @@ var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose
|
|
|
1853
2004
|
}
|
|
1854
2005
|
);
|
|
1855
2006
|
if (position === "none") return banner;
|
|
1856
|
-
return /* @__PURE__ */
|
|
2007
|
+
return /* @__PURE__ */ jsx38(
|
|
1857
2008
|
"div",
|
|
1858
2009
|
{
|
|
1859
2010
|
className: cn(
|
|
@@ -1872,6 +2023,8 @@ export {
|
|
|
1872
2023
|
CategorySegmentedControl,
|
|
1873
2024
|
Column,
|
|
1874
2025
|
ColumnContentContainer,
|
|
2026
|
+
ColumnDescription,
|
|
2027
|
+
ColumnDescriptionList,
|
|
1875
2028
|
ColumnLabel,
|
|
1876
2029
|
ColumnSubTitle,
|
|
1877
2030
|
ColumnText,
|
|
@@ -1888,7 +2041,12 @@ export {
|
|
|
1888
2041
|
FormTextArea,
|
|
1889
2042
|
IconCheck,
|
|
1890
2043
|
IconChevronDownXS,
|
|
2044
|
+
IconClose,
|
|
2045
|
+
IconCompass,
|
|
2046
|
+
IconExclamation,
|
|
1891
2047
|
IconInfo,
|
|
2048
|
+
IconRadioSelected,
|
|
2049
|
+
IconRadioUnselected,
|
|
1892
2050
|
List,
|
|
1893
2051
|
Modal,
|
|
1894
2052
|
ModalText,
|