sales-frontend-components 0.0.72 → 0.0.74

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.esm.js CHANGED
@@ -1,16 +1,17 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { useController } from 'react-hook-form';
3
- import { CheckboxButton, Checkbox, DatePicker, DateRangePicker, Accordion, Radio, Table, Button, FormField, Select, Tab, Icon, useModalState, Modal, SegmentGroup, ModalUtils, FormCore, RadioGroup } from 'sales-frontend-design-system';
3
+ import { CheckboxButton, Checkbox, DatePicker, DateRangePicker, Accordion, Radio, Table, Button, FormField, Select, Tab, useModalState, Modal, SegmentGroup, ModalUtils, Icon, FormCore, RadioGroup, useDropDown, List, ListItem } from 'sales-frontend-design-system';
4
4
  import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
5
5
  import { useSearchOccupationQuery, useSearchModalAddressQuery, useSearchVehicleQuery } from 'sales-frontend-api/method';
6
+ import { IconMainUiSearch, IconGraphicsBankHsbc, IconGraphicsBankKebHana, IconGraphicsBankScJeil, IconGraphicsBankGyeongnam, IconGraphicsBankGwangju, IconGraphicsBankKukmin, IconGraphicsBankKiup, IconGraphicsBankJiyeokNonghyeop, IconGraphicsBankNhNonghyeop, IconGraphicsBankDaegu, IconGraphicsBankBusan, IconGraphicsBankSanlim, IconGraphicsBankSaneop, IconGraphicsBankSaemaulGeumgo, IconGraphicsBankSuhyeop, IconGraphicsBankSinhan, IconGraphicsBankSinhyeop, IconGraphicsBankOehwan, IconGraphicsBankWoori, IconGraphicsBankPost, IconGraphicsBankJeochuk, IconGraphicsBankJeonbuk, IconGraphicsBankJeju, IconGraphicsBankKakaoBank, IconGraphicsBankKBank, IconGraphicsBankHankookCity, IconGraphicsStockDbGeumyungTujajeungkwon, IconGraphicsStockKbJeungkwon, IconGraphicsStockNhWooriTujajeungkwon, IconGraphicsStockNhTujajeungkwon, IconGraphicsStockSkJeungkwon, IconGraphicsStockGyoboJeungkwon, IconGraphicsStockDaesinJeungkwon, IconGraphicsStockMeritzJeungkwon, IconGraphicsStockMiraeAssetJeungkwon, IconGraphicsStockBugukJeungkwon, IconGraphicsStockSamsungJeungkwon, IconGraphicsStockSinyeongJeungkwon, IconGraphicsStockSinhanTujajeungkwon, IconGraphicsStockYuantaJeungkwon, IconGraphicsStockYujinTujajeungkwon, IconGraphicsStockKiwoomJeungkwon, IconGraphicsStockHanaGeumyungTujajeungkwon, IconGraphicsStockHiTujajeungkwon, IconGraphicsStockHankookJeungkwonGeumyung, IconGraphicsStockHankookTujajeungkwon, IconGraphicsStockHanwhaTujajeungkwon, IconGraphicsStockHyundaiChaJeungkwon, IconGraphicsStockHochulEopsum, IconIllustGrade, IconIllustJob, IconSubUiArrowRight, IconIllustVehicle } from 'sales-frontend-assets';
6
7
  import styles from './modal/pre-standard/job-search-modal/job-search-modal.module.scss';
7
8
  import styles$1 from './step-indicator/step-indicator.module.scss';
8
9
  import styles$2 from './camera/camera.module.scss';
9
10
  import styles$3 from './modal/standard/address-search/select-address.module.scss';
10
11
  import styles$4 from './modal/standard/bank-stock-search/bank-stock-search-modal.module.scss';
11
- import { IconGraphicsBankHsbc, IconGraphicsBankKebHana, IconGraphicsBankScJeil, IconGraphicsBankGyeongnam, IconGraphicsBankGwangju, IconGraphicsBankKukmin, IconGraphicsBankKiup, IconGraphicsBankJiyeokNonghyeop, IconGraphicsBankNhNonghyeop, IconGraphicsBankDaegu, IconGraphicsBankBusan, IconGraphicsBankSanlim, IconGraphicsBankSaneop, IconGraphicsBankSaemaulGeumgo, IconGraphicsBankSuhyeop, IconGraphicsBankSinhan, IconGraphicsBankSinhyeop, IconGraphicsBankOehwan, IconGraphicsBankWoori, IconGraphicsBankPost, IconGraphicsBankJeochuk, IconGraphicsBankJeonbuk, IconGraphicsBankJeju, IconGraphicsBankKakaoBank, IconGraphicsBankKBank, IconGraphicsBankHankookCity, IconGraphicsStockDbGeumyungTujajeungkwon, IconGraphicsStockKbJeungkwon, IconGraphicsStockNhWooriTujajeungkwon, IconGraphicsStockNhTujajeungkwon, IconGraphicsStockSkJeungkwon, IconGraphicsStockGyoboJeungkwon, IconGraphicsStockDaesinJeungkwon, IconGraphicsStockMeritzJeungkwon, IconGraphicsStockMiraeAssetJeungkwon, IconGraphicsStockBugukJeungkwon, IconGraphicsStockSamsungJeungkwon, IconGraphicsStockSinyeongJeungkwon, IconGraphicsStockSinhanTujajeungkwon, IconGraphicsStockYuantaJeungkwon, IconGraphicsStockYujinTujajeungkwon, IconGraphicsStockKiwoomJeungkwon, IconGraphicsStockHanaGeumyungTujajeungkwon, IconGraphicsStockHiTujajeungkwon, IconGraphicsStockHankookJeungkwonGeumyung, IconGraphicsStockHankookTujajeungkwon, IconGraphicsStockHanwhaTujajeungkwon, IconGraphicsStockHyundaiChaJeungkwon, IconGraphicsStockHochulEopsum } from 'sales-frontend-assets';
12
12
  import styles$5 from './modal/pre-standard/job-vehicle-search-modal/job-vehicle-search-modal.module.scss';
13
13
  import styles$6 from './modal/pre-standard/vehicle-search-modal/vehicle-search-modal.module.scss';
14
+ import styles$7 from './modal/standard/customer-search/customer-search.module.scss';
14
15
 
15
16
  const FormCheckboxButton = ({
16
17
  name,
@@ -56,12 +57,17 @@ const FormDatePicker = ({
56
57
  ...props
57
58
  }) => {
58
59
  const { field, fieldState } = useController({ name, control, disabled, defaultValue });
59
- const [initialDate, setInitialDate] = React.useState();
60
+ const [selected, setSelected] = React.useState();
60
61
  React.useEffect(() => {
61
62
  if (field.value) {
62
- setInitialDate(field.value);
63
+ setSelected(field.value);
63
64
  }
64
65
  }, [defaultValue]);
66
+ React.useEffect(() => {
67
+ if (field.value !== selected) {
68
+ setSelected(field.value);
69
+ }
70
+ }, [field.value]);
65
71
  return /* @__PURE__ */ jsx(
66
72
  DatePicker,
67
73
  {
@@ -70,7 +76,7 @@ const FormDatePicker = ({
70
76
  ...props,
71
77
  ...field,
72
78
  id: field.name,
73
- defaultValue: initialDate,
79
+ defaultValue: selected,
74
80
  error: fieldState.invalid,
75
81
  onValueChange: field.onChange
76
82
  }
@@ -86,12 +92,18 @@ const FormDateRangePicker = ({
86
92
  ...props
87
93
  }) => {
88
94
  const { field, fieldState } = useController({ name, control, disabled, defaultValue });
89
- const [initialDate, setInitialDate] = React.useState();
95
+ const [selected, setSelected] = React.useState();
90
96
  React.useEffect(() => {
91
97
  if (field.value) {
92
- setInitialDate(field.value);
98
+ setSelected(field.value);
93
99
  }
94
100
  }, [defaultValue]);
101
+ React.useEffect(() => {
102
+ if (selected && field.value.startDate.getTime() === selected.startDate?.getTime() && field.value.endDate.getTime() === selected.endDate?.getTime()) {
103
+ return;
104
+ }
105
+ setSelected(field.value);
106
+ }, [field.value]);
95
107
  return /* @__PURE__ */ jsx(
96
108
  DateRangePicker,
97
109
  {
@@ -100,13 +112,9 @@ const FormDateRangePicker = ({
100
112
  ...props,
101
113
  ...field,
102
114
  id: field.name,
103
- defaultValue: initialDate,
115
+ defaultValue: selected,
104
116
  error: fieldState.invalid,
105
- onValueChange: (selected) => {
106
- if (field.value !== selected) {
107
- field.onChange(selected);
108
- }
109
- }
117
+ onValueChange: field.onChange
110
118
  }
111
119
  }
112
120
  );
@@ -208,7 +216,7 @@ function requireBind () {
208
216
  var bindExports = requireBind();
209
217
  var classNames = /*@__PURE__*/getDefaultExportFromCjs(bindExports);
210
218
 
211
- const highlightOnSearchKeyword = (originalText, targetString) => {
219
+ const highlightOnSearchKeyword$1 = (originalText, targetString) => {
212
220
  if (originalText?.includes(targetString)) {
213
221
  const replacedText = [];
214
222
  const splitText = originalText.split(targetString);
@@ -223,22 +231,22 @@ const highlightOnSearchKeyword = (originalText, targetString) => {
223
231
  return originalText;
224
232
  };
225
233
 
226
- const cx$9 = classNames.bind(styles);
234
+ const cx$a = classNames.bind(styles);
227
235
  function JobSearchCategory({ filteredJobs, onJobSelect, searchTerm }) {
228
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cx$9("category-section"), children: [
229
- /* @__PURE__ */ jsxs("p", { className: cx$9("result-title"), children: [
236
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cx$a("category-section"), children: [
237
+ /* @__PURE__ */ jsxs("p", { className: cx$a("result-title"), children: [
230
238
  "\uCD1D ",
231
239
  /* @__PURE__ */ jsx("span", { className: "text-primary", children: filteredJobs.length }),
232
240
  "\uAC74\uC758 \uAC80\uC0C9\uACB0\uACFC"
233
241
  ] }),
234
- /* @__PURE__ */ jsx(Accordion.Root, { children: /* @__PURE__ */ jsx(Radio.Root, { name: "job-selection", size: "small", className: cx$9("job-radio-root"), onToggle: () => {
242
+ /* @__PURE__ */ jsx(Accordion.Root, { children: /* @__PURE__ */ jsx(Radio.Root, { name: "job-selection", size: "small", className: cx$a("job-radio-root"), onToggle: () => {
235
243
  }, children: filteredJobs.map((job, index) => /* @__PURE__ */ jsxs(
236
244
  Accordion.Item,
237
245
  {
238
246
  id: `item-${job.occupationIndustryCode}-${index}-accordion`,
239
247
  children: [
240
248
  /* @__PURE__ */ jsx(Accordion.HeaderDiv, { children: /* @__PURE__ */ jsx("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsxs(Radio.Item, { size: "small", value: job.occupationIndustryCode, onChange: () => onJobSelect(job), children: [
241
- highlightOnSearchKeyword(job.occupationIndustryName, searchTerm),
249
+ highlightOnSearchKeyword$1(job.occupationIndustryName, searchTerm),
242
250
  "(",
243
251
  job.occupationIndustryCode,
244
252
  ")"
@@ -271,23 +279,23 @@ function JobSearchCategory({ filteredJobs, onJobSelect, searchTerm }) {
271
279
  ] }) });
272
280
  }
273
281
 
274
- const cx$8 = classNames.bind(styles);
282
+ const cx$9 = classNames.bind(styles);
275
283
  function JobSearchFavorite({ filteredJobs, onJobSelect }) {
276
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cx$8("popular-jobs"), children: [
284
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cx$9("popular-jobs"), children: [
277
285
  /* @__PURE__ */ jsx("p", { children: "\uB9CE\uC774 \uCC3E\uB294 \uC9C1\uC885" }),
278
- /* @__PURE__ */ jsx(Accordion.Root, { children: /* @__PURE__ */ jsx(Radio.Root, { name: "job-selection", size: "small", className: cx$8("job-radio-root"), children: filteredJobs.map((job, index) => /* @__PURE__ */ jsxs(
286
+ /* @__PURE__ */ jsx(Accordion.Root, { children: /* @__PURE__ */ jsx(Radio.Root, { name: "job-selection", size: "small", className: cx$9("job-radio-root"), children: filteredJobs.map((job, index) => /* @__PURE__ */ jsxs(
279
287
  Accordion.Item,
280
288
  {
281
289
  id: `item-${job.occupationIndustryCode}-${index}`,
282
- className: cx$8("accordion-item"),
290
+ className: cx$9("accordion-item"),
283
291
  children: [
284
- /* @__PURE__ */ jsx(Accordion.HeaderDiv, { className: cx$8("accordion-header-item"), children: /* @__PURE__ */ jsxs(
292
+ /* @__PURE__ */ jsx(Accordion.HeaderDiv, { className: cx$9("accordion-header-item"), children: /* @__PURE__ */ jsxs(
285
293
  Radio.Item,
286
294
  {
287
295
  size: "small",
288
296
  value: job.occupationIndustryCode,
289
297
  onChange: () => onJobSelect(job),
290
- className: cx$8("radio-item"),
298
+ className: cx$9("radio-item"),
291
299
  children: [
292
300
  job.occupationIndustryName,
293
301
  "(",
@@ -304,15 +312,15 @@ function JobSearchFavorite({ filteredJobs, onJobSelect }) {
304
312
  ] }) });
305
313
  }
306
314
 
307
- const cx$7 = classNames.bind(styles);
315
+ const cx$8 = classNames.bind(styles);
308
316
  function JobSearchResult({ filteredJobs, onJobSelect, searchTerm }) {
309
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cx$7("popular-jobs"), children: [
310
- /* @__PURE__ */ jsxs("p", { className: cx$7("result-title"), children: [
317
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cx$8("popular-jobs"), children: [
318
+ /* @__PURE__ */ jsxs("p", { className: cx$8("result-title"), children: [
311
319
  "\uCD1D ",
312
320
  /* @__PURE__ */ jsx("span", { className: "text-primary", children: filteredJobs.length }),
313
321
  "\uAC74\uC758 \uAC80\uC0C9\uACB0\uACFC"
314
322
  ] }),
315
- /* @__PURE__ */ jsx(Accordion.Root, { children: /* @__PURE__ */ jsx(Radio.Root, { name: "job-selection", size: "small", className: cx$7("job-radio-root"), children: filteredJobs.map((job) => /* @__PURE__ */ jsxs(
323
+ /* @__PURE__ */ jsx(Accordion.Root, { children: /* @__PURE__ */ jsx(Radio.Root, { name: "job-selection", size: "small", className: cx$8("job-radio-root"), children: filteredJobs.map((job) => /* @__PURE__ */ jsxs(
316
324
  Accordion.Item,
317
325
  {
318
326
  id: `item-${job.occupationIndustryCode}`,
@@ -326,7 +334,7 @@ function JobSearchResult({ filteredJobs, onJobSelect, searchTerm }) {
326
334
  onChange: () => {
327
335
  onJobSelect(job);
328
336
  },
329
- children: highlightOnSearchKeyword(job.occupationIndustryName, searchTerm)
337
+ children: highlightOnSearchKeyword$1(job.occupationIndustryName, searchTerm)
330
338
  }
331
339
  ) }) }),
332
340
  /* @__PURE__ */ jsx(Accordion.Content, { variant: "text", children: /* @__PURE__ */ jsx(Table, { variant: "horizontal", children: /* @__PURE__ */ jsxs("tbody", { children: [
@@ -358,7 +366,7 @@ function JobSearchResult({ filteredJobs, onJobSelect, searchTerm }) {
358
366
  }
359
367
 
360
368
  const { TextField } = FormField;
361
- const cx$6 = classNames.bind(styles);
369
+ const cx$7 = classNames.bind(styles);
362
370
  const { Option } = Select;
363
371
  function JobSearch({
364
372
  activeTab,
@@ -395,7 +403,7 @@ function JobSearch({
395
403
  }
396
404
  ),
397
405
  /* @__PURE__ */ jsxs("div", { children: [
398
- activeTab === "jobName" && /* @__PURE__ */ jsxs("div", { className: cx$6("favorite-jobs-section"), children: [
406
+ activeTab === "jobName" && /* @__PURE__ */ jsxs("div", { className: cx$7("favorite-jobs-section"), children: [
399
407
  /* @__PURE__ */ jsx(
400
408
  TextField,
401
409
  {
@@ -406,7 +414,7 @@ function JobSearch({
406
414
  className: styles.searchInput,
407
415
  size: "medium",
408
416
  rootProps: {
409
- endElement: /* @__PURE__ */ jsx(Icon, { name: "sub-ui/search", onClick: () => setSearchTerm(searchInput) }),
417
+ endElement: /* @__PURE__ */ jsx(IconMainUiSearch, { onClick: () => setSearchTerm(searchInput) }),
410
418
  onClear: () => {
411
419
  setSearchTerm("");
412
420
  setSearchInput("");
@@ -417,8 +425,8 @@ function JobSearch({
417
425
  !searchTerm && /* @__PURE__ */ jsx(JobSearchFavorite, { filteredJobs, onJobSelect }),
418
426
  searchTerm && /* @__PURE__ */ jsx(JobSearchResult, { filteredJobs, onJobSelect, searchTerm })
419
427
  ] }),
420
- activeTab === "jobCode" && /* @__PURE__ */ jsxs("div", { className: cx$6("select-jobs-section"), children: [
421
- /* @__PURE__ */ jsxs("div", { className: cx$6("category-section"), children: [
428
+ activeTab === "jobCode" && /* @__PURE__ */ jsxs("div", { className: cx$7("select-jobs-section"), children: [
429
+ /* @__PURE__ */ jsxs("div", { className: cx$7("category-section"), children: [
422
430
  /* @__PURE__ */ jsx(
423
431
  Select,
424
432
  {
@@ -800,7 +808,7 @@ const FormTextField = ({
800
808
  );
801
809
  };
802
810
 
803
- const cx$5 = classNames.bind(styles$1);
811
+ const cx$6 = classNames.bind(styles$1);
804
812
  const StepIndicator = ({
805
813
  items,
806
814
  onClickItem,
@@ -835,26 +843,26 @@ const StepIndicator = ({
835
843
  ModalUtils.alert("\uC774\uC804 \uB2E8\uACC4\uB97C \uBAA8\uB450 \uC644\uB8CC\uD574\uC57C \uC120\uD0DD\uD55C \uB2E8\uACC4\uB85C\n\uC774\uB3D9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.", "\uC774\uC804 \uB2E8\uACC4\uB97C \uBA3C\uC800 \uC9C4\uD589\uD574\uC8FC\uC138\uC694");
836
844
  }
837
845
  };
838
- return /* @__PURE__ */ jsxs("div", { className: cx$5("stepper-layout", { loading: isLoading }), children: [
839
- /* @__PURE__ */ jsx("div", { className: cx$5("stepper"), children: steps.map((item, idx) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
846
+ return /* @__PURE__ */ jsxs("div", { className: cx$6("stepper-layout", { loading: isLoading }), children: [
847
+ /* @__PURE__ */ jsx("div", { className: cx$6("stepper"), children: steps.map((item, idx) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
840
848
  /* @__PURE__ */ jsx(
841
849
  "div",
842
850
  {
843
- className: cx$5(
851
+ className: cx$6(
844
852
  "circle",
845
853
  { completed: item.isCompleted ?? false },
846
854
  { active: defaultValue === item.value || current === idx }
847
855
  ),
848
856
  onClick: () => handleClickStep?.(item),
849
- children: item.isCompleted ? /* @__PURE__ */ jsx("span", { className: cx$5("completed-icon") }) : idx + 1
857
+ children: item.isCompleted ? /* @__PURE__ */ jsx("span", { className: cx$6("completed-icon") }) : idx + 1
850
858
  }
851
859
  ),
852
- idx < steps.length - 1 && Array.from({ length: dotCount }).map((_, dotIdx) => /* @__PURE__ */ jsx("span", { className: cx$5("dot") }, `dot-${idx}-${dotIdx}`))
860
+ idx < steps.length - 1 && Array.from({ length: dotCount }).map((_, dotIdx) => /* @__PURE__ */ jsx("span", { className: cx$6("dot") }, `dot-${idx}-${dotIdx}`))
853
861
  ] }, `num-${idx}`)) }),
854
- /* @__PURE__ */ jsx("ul", { className: cx$5("step-labels"), children: steps.map((item, idx) => /* @__PURE__ */ jsx(
862
+ /* @__PURE__ */ jsx("ul", { className: cx$6("step-labels"), children: steps.map((item, idx) => /* @__PURE__ */ jsx(
855
863
  "li",
856
864
  {
857
- className: cx$5(
865
+ className: cx$6(
858
866
  { completed: steps[idx < 1 ? idx : idx - 1]?.isCompleted ?? false },
859
867
  { active: defaultValue === item.value || current === idx }
860
868
  ),
@@ -866,7 +874,7 @@ const StepIndicator = ({
866
874
  ] });
867
875
  };
868
876
 
869
- const cx$4 = classNames.bind(styles$2);
877
+ const cx$5 = classNames.bind(styles$2);
870
878
  function Attachment({
871
879
  photos,
872
880
  onAddPhoto,
@@ -883,14 +891,14 @@ function Attachment({
883
891
  };
884
892
  const renderPhotoSingle = () => {
885
893
  if (photos.length === 0) {
886
- return /* @__PURE__ */ jsx("div", { className: cx$4("single-photo-item", "add-photo-item"), children: /* @__PURE__ */ jsxs("button", { className: cx$4("add-photo-button-single"), onClick: handleAddPhoto, children: [
894
+ return /* @__PURE__ */ jsx("div", { className: cx$5("single-photo-item", "add-photo-item"), children: /* @__PURE__ */ jsxs("button", { className: cx$5("add-photo-button-single"), onClick: handleAddPhoto, children: [
887
895
  /* @__PURE__ */ jsx(Icon, { name: "illust/camera" }),
888
896
  /* @__PURE__ */ jsx("span", { children: buttonText || "\uC0AC\uC9C4 \uCCA8\uBD80\uD558\uAE30" })
889
897
  ] }) });
890
898
  }
891
- return photos.map((photo) => /* @__PURE__ */ jsxs("div", { className: cx$4("single-photo-item"), children: [
892
- /* @__PURE__ */ jsx("div", { className: cx$4("photo-placeholder"), children: /* @__PURE__ */ jsx("img", { src: photo.src, alt: photo.name, className: cx$4("photo-image") }) }),
893
- /* @__PURE__ */ jsx("button", { className: cx$4("remove-button"), onClick: () => handleRemovePhoto(photo.id), "aria-label": "\uC0AC\uC9C4 \uC0AD\uC81C", children: "\xD7" })
899
+ return photos.map((photo) => /* @__PURE__ */ jsxs("div", { className: cx$5("single-photo-item"), children: [
900
+ /* @__PURE__ */ jsx("div", { className: cx$5("photo-placeholder"), children: /* @__PURE__ */ jsx("img", { src: photo.src, alt: photo.name, className: cx$5("photo-image") }) }),
901
+ /* @__PURE__ */ jsx("button", { className: cx$5("remove-button"), onClick: () => handleRemovePhoto(photo.id), "aria-label": "\uC0AC\uC9C4 \uC0AD\uC81C", children: "\xD7" })
894
902
  ] }, photo.id));
895
903
  };
896
904
  const renderPhotoGrid = () => {
@@ -898,12 +906,12 @@ function Attachment({
898
906
  const gridItems = [];
899
907
  if (photos.length < maxPhotos) {
900
908
  gridItems.push(
901
- /* @__PURE__ */ jsx("div", { className: cx$4("photo-item", "add-photo-item"), children: /* @__PURE__ */ jsxs("button", { className: cx$4("add-photo-button"), onClick: handleAddPhoto, children: [
909
+ /* @__PURE__ */ jsx("div", { className: cx$5("photo-item", "add-photo-item"), children: /* @__PURE__ */ jsxs("button", { className: cx$5("add-photo-button"), onClick: handleAddPhoto, children: [
902
910
  /* @__PURE__ */ jsx(Icon, { name: "illust/camera" }),
903
911
  /* @__PURE__ */ jsx("span", { children: buttonText || "\uCCA8\uBD80\uD558\uAE30" }),
904
- /* @__PURE__ */ jsxs("span", { className: cx$4("photo-count"), children: [
912
+ /* @__PURE__ */ jsxs("span", { className: cx$5("photo-count"), children: [
905
913
  "(",
906
- /* @__PURE__ */ jsx("span", { className: cx$4("photo-count-number"), children: photos.length }),
914
+ /* @__PURE__ */ jsx("span", { className: cx$5("photo-count-number"), children: photos.length }),
907
915
  "/",
908
916
  maxPhotos,
909
917
  ")"
@@ -913,9 +921,9 @@ function Attachment({
913
921
  }
914
922
  photos.forEach((photo) => {
915
923
  gridItems.push(
916
- /* @__PURE__ */ jsxs("div", { className: cx$4("photo-item"), children: [
917
- /* @__PURE__ */ jsx("div", { className: cx$4("photo-placeholder"), children: /* @__PURE__ */ jsx("img", { src: photo.src, alt: photo.name, className: cx$4("photo-image") }) }),
918
- /* @__PURE__ */ jsx("button", { className: cx$4("remove-button"), onClick: () => handleRemovePhoto(photo.id), "aria-label": "\uC0AC\uC9C4 \uC0AD\uC81C", children: "\xD7" })
924
+ /* @__PURE__ */ jsxs("div", { className: cx$5("photo-item"), children: [
925
+ /* @__PURE__ */ jsx("div", { className: cx$5("photo-placeholder"), children: /* @__PURE__ */ jsx("img", { src: photo.src, alt: photo.name, className: cx$5("photo-image") }) }),
926
+ /* @__PURE__ */ jsx("button", { className: cx$5("remove-button"), onClick: () => handleRemovePhoto(photo.id), "aria-label": "\uC0AC\uC9C4 \uC0AD\uC81C", children: "\xD7" })
919
927
  ] }, photo.id)
920
928
  );
921
929
  });
@@ -926,9 +934,9 @@ function Attachment({
926
934
  return null;
927
935
  }
928
936
  if (type === "single") {
929
- return /* @__PURE__ */ jsx("div", { className: cx$4("photo-single"), children: renderPhotoSingle() });
937
+ return /* @__PURE__ */ jsx("div", { className: cx$5("photo-single"), children: renderPhotoSingle() });
930
938
  }
931
- return /* @__PURE__ */ jsx("div", { className: cx$4("photo-grid", { linear: type === "linear" }), children: renderPhotoGrid() });
939
+ return /* @__PURE__ */ jsx("div", { className: cx$5("photo-grid", { linear: type === "linear" }), children: renderPhotoGrid() });
932
940
  }
933
941
 
934
942
  const maxImageSize = 3 * 1024 * 1024;
@@ -1375,12 +1383,12 @@ function useCanvasPaint(paintProps = {}) {
1375
1383
 
1376
1384
  const testSignatureBase64Data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABkCAYAAACoy2Z3AAAQAElEQVR4AeydV6g2ORnHj733smvBiliws9jbhYoFREVQsYIFVBBRUBQRvbCgKIgFCyqoCCqiXiioN/ZesKEXYlkVXV11Xdde/z+/L/u95z0zSeadlmT+h+RkJvMkeZ5/kudJm3kveeQ/I1AvAncX67+S/+8B/glKM6X7uzIbwofI7YxA3QjYgNRdf1vl/p4S/Dz5L8qfLT/UfVkJLpSfymE8LjtVZs7HCNSCgA1ILTVlPkHg4/r3Z/nPy19XPteh4En7ICW4sjwzl48qHOMwQP9RBsw6hhoP0h0dKbGdEagZARuQmmuvfd6fLhF/Kv9veRT1gxVeUT7HMUN5nwjvKn95+YfKf0IeA6RglIOfqyiHS8jnun+IEHr8pXRtZwSqR8AGpPoqbE6Ar0miv8pjMN6q8Mbyue30t6J9vjxKmqWtx+n6q/JTOWYy8JXDz67BgJ/LTcWE8zECpSCQ0xFK4XWPD982gsBLJMfv5VHM+HN0zYxBQbY7V5S3l2dZ6zUKp3bMWuAtd6nqn2LABkMg2LWNgA1I2/VbqnTvFmP/kkcpv0zhNeQPcT9SolvIM0v5rsKpXTAcuctmyMPMI9fQTM2v8zMCiyJgA7Io3JstjKUolpcYmaNkOUJ76D4A6X8oJK8vj/HAiOhyUjfUcDCDYpmK/rSJmcekaDuzahGgwVfLvBkvFoEPiTNOGqHs8WyGX1txl5Y/xGF4vqWEN5Knzd5aIe9/KJjUYdTgd8iMA8NxrUm5cGZGoBIE6IyVsGo2K0DgXeIRBfxIhShWBQc7Nqw/otTkw5LQnXX9c/k5HKeq4Jtltdz84c/9Jxct0zWJgDvAGtXaXpm/kUgo4CcrHONYCnqeMsBosJH+CF3P5cJJL/ge0g8wHIG/uXhzvkagCgSGdJwqBDKTiyDA+xi7Cvg6B5bKhvNXlBaFjGcp6HW6n9sx48BADSnnLyKGx6HplMzOCLSJgA1Im/U6h1SPV6bsRTBi563uQxUpeyNvUV4oYzac76brpdwHVRD8D2n3f1IaeL2SQrv6EbAEEyIwpCNNWKyzqgiBq4tXlP57FB6yCc7y1quVFiWMZ6P6Gbpf2nGy6lGZhWJk+FQJ/F41M43JjMDmELAB2VyVZwuMsWDG8QelQJEqyHYYHE5eke4spXqB/FruIhWMQcg5WcXSFjzTL66mdHbtIsBeFu1i1xPXrsQzSEZHmSFbZ1k5Aoy+MR4YkWOiJG44xXQf0TDLeLvCNV0wHDlLTxeIUQzHUHmVzK5wBGgHDGh2DQXXnOzbZ504G5F9VCL3NiARcDb46AeSmc7FhwJ1meX+Jiq+cosCvoyuPye/pmOzGxlyDAd8YuwOfROe9PZlIsCSZWgHtM1cLjEitOlc+k3T2YBsuvovFv5puqKz3UphjuOtcjol/gpKwFduFazqguGAnxxGGJXCP2EOvWnqQCAYjpwlyz6JONzR92zF+PKKtgEpr06W5IiNcQzH2zIL/YnoULp8tFCXRbhwnDjXcMA0x4eZeXBt3wYC/M4LbXmM4dhFwktZu2j0XNuA9ADTeHQ4zsrR3BxRmdJjOG6WQ7wQTTAcQ44TYziQwyPMhSpp5mJ48ZQZJIaD49ZTFsdS1pT5NZmXDUiT1dor1Mf0hM425Dgrs40ho3sVMavj44kojSGGAwNowzFrtSyaOfVJO2bvinodUzhtaUz6Tae1AdlG9QfD8ZAB4j5GtLQP9jt0WYTjmO3NxUmu0mBfBNqSDKDYtxuBAAp/6AwytAPawr5nKRNjNIKl7SZFQWxX+vYlP8RwsC9CJ3t/QfCwHk0nz22vQWHknsQqSFSz0oNAmHXQNntITkTntoMheZ4oZMsRuR3yaMsgVSg7HYKR2pAZBwaDdE8sSN6fiRcMR+56NCdwkMGGQ8A14pht0JYJc0SivfxahG4HAmFuZwMyN8LL588v89Hh6EA5pYcZB0tWOfRL0bBcxe9/5JTHDAV5OYmTQ2+aOhDgZVZmHtRtiuPzRAAdOu16urZbAAHAXqAYF7EAArdTGRiO2yrMccFwlDTjgG+MAaPInLaJvCiNIRvqlFGZ3xy74YXWnC8DhGWqs0egRHvrSv6lrkjHnUEgp5OeofZVqQicL8a+I48yVRB1pRoOjhZjEHKXq86VlGyAKrBrCAFmnjkvtEJHe59iuZKl0i4I79oV6bgzCNiAnMGixiuO4zJ64nc0Uvy/VwR0uNJmHGLriKUKZIE/7mMeWuhuHCPys+oQ4KOdtOUcnfQFSZczOxFZlrtpDxXtjLJ6Hjs6p7JqR6lV/tkwZtSeku/HIqAjPEFhae4XYgilkaMMmJ0gR+4MRVnbVYIAswl+NiDFLh/rpA3cK0V4wPNv9KS5e0+8o4WADYhAqMw9U/yidFOfbICGzsZ7E0pSnEMZ3CCTKy9XZQJVGdlrxS/tNKWHoHm2aPlYp4JZ3DnKlXIUHHP0Id54Pxbpm1MIpCruFJX/l4IAG8xvymDmHaIptW7DrCNn/8LLVarIql0/87Tl5/Y/vvgJdLTlN1wcM9/F13uyzpkd9SRtO5qKaVvCNqSjozE6Si3fhCOPTy1UbJYqcmYdXq4qtAInYouBQaothzaw5Am7u0g++pmCY45ZyLEI35xCwAbkFA4l/2cExlQ/xeOzRFDqJzuQgY6Z0968XKWKbNhhPFJ7XnwoM2eGOgdMfHCzK1/acFf8puNyOvSmAVpR+BcdHR2hdFMjNRo8I6Q3r8hrX9GsHefIQHo6KHK0droKucBgjGfmBka1e9pqyniwZ5fa35sTh74ZT6ofzslTsXnbgJRZNXS0l2ewxqwj9xMPGdlNRsK5epYg+FpqKlPoMBx9HTeVvuTnGI8pFE8L/RQsYpvgoR1wanDtOsXYd/EAj13xm41roWG2VHkvkjA03lhHE8kRBgalW+KsA974BAn8wWvMcxR5raWKGF9jnjFboA7xUxiPMbyUkJbf6UhhQZspqR18GeA6PG36hx3xm42yASmn6hmh1TzrAElGaCnjBx0Khc7Y2rerUJbuU9Tw0VFYvkzVMe2+tFn0PSQCbVnBCXfLEzEbjnBjX7/yeVEJhZoarTJKQ+mWOOsARWSAP65jHoXRartLKcsYLi094zRgzvIldKUuXcZmRJ9sqbLGyNJqRx6DyZJp+ez0FzMKLHWvA9ZRAhgPrs/4k1cYDgxMqQrjJMf5MX8UaQ4GIjvIMXg4KOEKiajnnBkF7abUU4MBNk6Dhevd8P67N1u+tgFZp/ZRpEyRz0oUj+KAttRZB+v9KWWBokCGFg0H1YfCvCoXCR/qEix2PfGxpBimFMax9Es+A4vUTBp++O5V6cYDPjkNBv5c73rqj3a9G7fJaxuQ5audDTqMB40wVvqr9LBUxfEC8UbHSrWfd4quBkUhNg9yuQoTI7Ffl2HWklK4qXZyEOMzJMrBgj0i5LnmDOXPleVnezKmPvtmKD1JFoterKCUAliMkY0UhOFIfSIaxUwne2GhmKAMMW4x9oIMT4kRVf4sR2GykUxdomx2xWX0mjNrIQ1thrBEzwyUusbHDCFYgUOuzCXJer8IM8yq+T2SCEnbj2xAlqnfN6oYOhmdSJe97it6UnKdYDxSp6xQKiXLIIhHu4uUQ0xhUte/FE3XZ/ZRpvsGRaTHHDjTVvCxzdxjiVa4yalnZEHRrsDeZEX+JpITM2zaQ4Sk3Uc5DaBd6ZeRjE83sAkeKw2Fg7K4W4xo5WcovpTxYGSdetN4ZTHSxWdQxH7ECJzoVzfsyAfjGjM8JCF9ysBAt7b/cAYDGI8aZEmJwl4lsvTRxdpDX5om4mnoTQhSoBCvEE8YhpRC/ZXoSq8HlFpK8T1QcjAaU9CsYw2fOu0TECXTNdr+nRKQLlXPF4iuK72ii3J8EfrhCY7AogXjEcREFgZI4X4/pH4/sh/Z+n2qQbcu/1zy8VsXOXsYvANy/bmYmCjflPFgjZ7Z06cmKq/UbJg9xN7z2FeYGA2wQbGkNo3BGAxz3p1YAx9+bAk5guc3aWJ87GMRo63pGQMkMOjj+WF9D1qNn96AtIpUnlxh1pFat2Ykg8LgRFZezutQodhiMw8URUrWdTifvtRYX0GpMEKl1DBLwWhQx8TFPEucJc46eFkuGMA7xwTYe0abCFjsPWrilrruE4T6pv77njcXH+sUzQk7s0B0nJxZB58rYSQzMzujss85Yoq8LSuKIQDyXgOncVAusVnKfp4MJGIGep9+zvsvKPNgMJDjAbpHISoY5F45iLo+YgZM346wTf3TfyIk7TyyARlfl/dVFnS41AYzy1p0yBeLvmSHUksdt9ya8WAm1ldnzCCYbQwZFNBeaAtD0vSVvxufe/1NEe4aC/jh+0/wpEcHO/L59MGp60l4R7Eaw4r+w6BCZP93L9V/sNn1xCm6bmcDMq7++BRJTofhxbuUgRnHyTSpUZSpWUUOzTTclJNLbJYwpF5RIBz5XKvffV+QwsOdFMYUoB5nO/Jjfwj/PaXK6Q8iW93BL7x3+VzmfhIh5Gdw2QeLkNT/aK2GXD9yR0eM4DjeF5MlzDpeHSMq5BmGIaYoYZPZSYnr9fBWsj9fzKGw6W9X0fVS7jwVRDsNSvI2up/CkR+f1wkycdIQf/spMl8oD+pibFE3Uwb8JIGCTsfMlHdIul5G7IrrzKTkyClALFm+QbxlEjPCogPReWJJ3q2HQ0anIl/N5RgPjpiuteSyGjAjC2ZfhHZynZH5DEn+MREHo3FdXVO+gknct5QL+aE3Uu82ibRYR3ufijn2PC6MZEbds8y9T3KT/Yga72kINfK9Fs9Me7sawy4/wbg8aTey8OvYzIPOhtIo9YhpidAGwzH3C2Y/lfDBWNDu8A9RHPWlYJQjL45mk1fwQ05jjSp8psTMFsAr1t4pGtnxXOf4q4mIAZaCbTkbkLz6fq7IaFApvH4uuhSNSKpxbJZvfclqyDr2EobjfWo9LI3SHvn9eJS7okY78uOnBcgPTzvm5dDRGedlMCkV+GAokGnX83VdZJu0sNOZMcAa0lbYIzmdtN6ARlIv98twzqjltRlFMTq7UQZdaSTMMLp4ouOlNtS70rUQx8kq5Mezjp0rEwqKNKTPTZOi+6gImPmSL/6xuucoqYJR7jtKjTINHl1wT8XV6DAYYBM8+CDX0rJcWwX+Vj7HNTEwo9HkCLtFmptKaEYxKAVd9joaL42V9eFeokIfYDz6pvObeiHqdP0ERc2G8OmogwLSo8zI75AMMECkx/N281T9lPy+K4Zor3dQWLPjU+r0T2TCYEwtC3kfkif7ThxeOCRtdWmmapjVCZ5g+Ed6/mN5OpqCXlfKRnkvg4kHfcaDZKzrErbu3yoBURYooqn7A/mRL56BRmxP5DM7fGCAdDvavUU50IaDh5+aTkqJ/WMOxRzqihE8ch0jmOCGZVvyHWOUzhYf1LmCth0Nqm0Jh0v3NSW5uXzM0ThoZDVtlMfk2X/Gst1+XGv3vC2MMnq6/zM/RAAABkxJREFUBKMuFWQ70mUTnyZEIfEOCG2H9D87Hc+7BMTdR/dD+VCSE468GACR1zNOPK0nYneGgUx4RvfINZcUGI+plm1Ts0/0zFxyLJavDchJqM85GXUsprWN8mPC6YaOytFEXTbpwvIQbwsPVUZgw7swGANC7g8BiXLZLyP9mOOcpH+9GCC/4OnTt1BcbY5BC0oX44pcc80wunDp++GvLtqTcd0xHOEPdfKeDpJ7d8RVF0Vjq47pGRl+QyJvjvDS8RNkVT+m0VctQAfztPOgmIYuD5EOgwou5BPehSHknng8dB1FTx6Fkt3l5zmTlzBvhswsWM5DDjDDWODZawx4zsvBmdwpt++Hv85Qjb96orLoMiKKrttRYXVLMC33HNelUe/nSmNHSXx2/4Hvi0aAekNJEFJ/ucySBno8sw1Gx6m00EGPJ32KPuc5+dAePyBi8sVjAHP4UZJVHAqZWR6Ywzsy7HpmFmCF7kGesUySN0tPQ/MBQ3jo+uGvoXnl0DdpRAAwR/it0NDwadw0bEZJyE0DpdNyvRVPx0cB8GNXM8s8afacKoN36gw/tH1T59T90HS7QvBCGXnsxh16HfJ59KEZzJSOzWywAms8WAfP79vQX8Aw8D81G5TFJ0LCMmTsMMh+2Rgb+GIWt/9s7vtgRNAzc5e1SP5U8iIFVVhIWMPcIkZ0MOQOp0nosKU1+qDEMHRBiaFI4H1Ic0M2PkVBOup8SFpoMRihfPKa+vQa9UC+eGRFAVLuEp6yKHNXPvhgMzsMtMBtCV4ol30nyoMfeKDecssmPfJMtUmeW+4+HUaEdrofX+U9jbNKxs304ggwqqQT7ns6M6PRsQwxe+hSVvvlhXsUCEqMNoxSGVo+fJOO9EOVPrwGPkhLPkPLP4QeXjFyoWxC5AA36gCjmsoXOtKQNuUpizKXkm+XdwYslIvnGl5Z/iKk3ndpY9dhgxw51jYeMT5XeTa2UEAdm4fT14sAnXEs93RwOjR5jfGMymiP5DeWp1h6RqGUAc8xur5nGA947Xu+dDyygBvyYFRTdQAdaZbms688+MWgMbvgUzBcE4fxIsRzjYx9eXTFs8eBnNfqeui4aRAYWinTlOpcSkGA+kch0klL4WkOPpDvXGWMQhk7CkWZKSu7iRCgTmiHzC6mOInFuzbkucYex0SQ1JMNFVcPt+Z0DgTouLQDOh1LIXOUsUaejGSvp4KRC/n48KBuRzvyOpWJ/5eCAAME9kOo6yV/b6UU+Vfjw51hNeiLLJh9Djohnh9BQgnTOYtkdo8p+MQAwjuepRp+MXKPzLcNIUD7pK7RY+xFNSRaHaIAfB2cmsulEeCHcFDCtBE6KS+AoaSX5mO3PMpHabARzDFO+AoePjGAu/S+bhMBNtWpd9pnmxJWIhWdbiVWXWxlCOyuT9N5dz3rzYz+UfBDxIIegxA2tnfz7LqmvaI02Ic4a0hBpq0OgdA2GCzst4WSDjFUB+yUDNMhp8zPeW0TAU68MPqnPe139tg99BiEsRvbS6Mek6nGZ7w9jqLGmKO4l8aTMik77GOAYWgbDBaW5sflZSJAJWWSmswIGIFWENiTg895oKgx5ugEFPiSnjIp2/sYexVT+i0VVzqP5s8IGAEjYAQKRMAGpMBKMUtGwAgYgRoQsAE5pJacxggYASNgBI5sQNwIjIARMAJG4CAEbEAOgs2JjIARWAkBF1sQAjYgBVWGWTECRsAI1ISADUhNtWVejYARMAIFIWADUlBlLMGKyzACRsAITIWADchUSDofI2AEjMDGELAB2ViFW1wjYATWQqC9cm1A2qtTS2QEjIARWAQBG5BFYHYhRsAIGIH2ELABaa9OW5XIchkBI1AYAjYghVWI2TECRsAI1IKADUgtNWU+jYARMAJrIdBTrg1IDzCONgJGwAgYgTgCNiBxfPzUCBgBI2AEehCwAekBxtFGYDoEnJMRaBMBG5A269VSGQEjYARmR8AGZHaIXYARMAJGoE0EajAgbSJvqYyAETAClSNgA1J5BZp9I2AEjMBaCNiArIW8yzUCNSBgHo1ABAEbkAg4fmQEjIARMAL9CNiA9GPjJ0bACBgBIxBBwAYkAs74R87BCBgBI9AuAjYg7datJTMCRsAIzIqADcis8DpzI2AE1kLA5c6PwP8AAAD//+3/3TsAAAAGSURBVAMAJI6e9smFlTAAAAAASUVORK5CYII=";
1377
1385
 
1378
- const cx$3 = classNames.bind(styles$3);
1379
- const { InputBox, Input } = FormCore;
1386
+ const cx$4 = classNames.bind(styles$3);
1387
+ const { InputBox: InputBox$1, Input: Input$1 } = FormCore;
1380
1388
  const AddressSearchInitialText = () => {
1381
1389
  return /* @__PURE__ */ jsxs("div", { children: [
1382
- /* @__PURE__ */ jsx("p", { className: cx$3("guide-title"), children: "\uC774\uB807\uAC8C \uAC80\uC0C9\uD574 \uBCF4\uC138\uC694." }),
1383
- /* @__PURE__ */ jsxs("ul", { className: cx$3("guide"), children: [
1390
+ /* @__PURE__ */ jsx("p", { className: cx$4("guide-title"), children: "\uC774\uB807\uAC8C \uAC80\uC0C9\uD574 \uBCF4\uC138\uC694." }),
1391
+ /* @__PURE__ */ jsxs("ul", { className: cx$4("guide"), children: [
1384
1392
  /* @__PURE__ */ jsx("li", { children: "\uB3C4\uB85C\uBA85/\uC9C0\uBA85\uACFC \uAC74\uBB3C\uBC88\uD638\uB97C \uD568\uAED8 \uC785\uB825\uD574\uC8FC\uC138\uC694" }),
1385
1393
  /* @__PURE__ */ jsx("li", { children: "\uC608) 63\uB85C 50, \uC5EC\uC758\uB3C4\uB3D9 60" }),
1386
1394
  /* @__PURE__ */ jsx("li", { children: "\uC9C0\uBA85\uC740 \uB3D9/\uC74D/\uBA74/\uB9AC\uB85C \uC785\uB825\uD574\uC8FC\uC138\uC694" }),
@@ -1404,7 +1412,7 @@ const AddressSearchResult = ({
1404
1412
  setFilterList(filterList2);
1405
1413
  }, [addressSearchList, searchKeyword]);
1406
1414
  return /* @__PURE__ */ jsxs("div", { children: [
1407
- /* @__PURE__ */ jsxs("p", { className: cx$3("guide-title"), children: [
1415
+ /* @__PURE__ */ jsxs("p", { className: cx$4("guide-title"), children: [
1408
1416
  "\uCD1D ",
1409
1417
  /* @__PURE__ */ jsx("span", { className: "text-primary", children: filterList.length }),
1410
1418
  "\uAC74\uC758 \uAC80\uC0C9\uACB0\uACFC"
@@ -1415,20 +1423,20 @@ const AddressSearchResult = ({
1415
1423
  items: filterList.map((item) => ({
1416
1424
  value: item.address,
1417
1425
  select: item.address === selectedAddress?.address && item.zipCode === selectedAddress?.zipCode,
1418
- label: /* @__PURE__ */ jsxs("div", { className: cx$3("search-result"), children: [
1419
- /* @__PURE__ */ jsxs("div", { className: cx$3("zipcode"), children: [
1426
+ label: /* @__PURE__ */ jsxs("div", { className: cx$4("search-result"), children: [
1427
+ /* @__PURE__ */ jsxs("div", { className: cx$4("zipcode"), children: [
1420
1428
  " ",
1421
- highlightOnSearchKeyword(item.zipCode, searchKeyword)
1429
+ highlightOnSearchKeyword$1(item.zipCode, searchKeyword)
1422
1430
  ] }),
1423
- /* @__PURE__ */ jsx("div", { className: cx$3("divider") }),
1424
- /* @__PURE__ */ jsxs("div", { className: cx$3("address-info"), children: [
1425
- /* @__PURE__ */ jsx("span", { className: cx$3("address"), children: highlightOnSearchKeyword(item.address, searchKeyword) }),
1426
- /* @__PURE__ */ jsx("span", { className: cx$3("old-address"), children: highlightOnSearchKeyword(item.oldAddress, searchKeyword) })
1431
+ /* @__PURE__ */ jsx("div", { className: cx$4("divider") }),
1432
+ /* @__PURE__ */ jsxs("div", { className: cx$4("address-info"), children: [
1433
+ /* @__PURE__ */ jsx("span", { className: cx$4("address"), children: highlightOnSearchKeyword$1(item.address, searchKeyword) }),
1434
+ /* @__PURE__ */ jsx("span", { className: cx$4("old-address"), children: highlightOnSearchKeyword$1(item.oldAddress, searchKeyword) })
1427
1435
  ] })
1428
1436
  ] }),
1429
1437
  id: item.address
1430
1438
  })),
1431
- className: cx$3("radio-group"),
1439
+ className: cx$4("radio-group"),
1432
1440
  name: "address-search",
1433
1441
  size: "medium",
1434
1442
  defaultValue: "",
@@ -1462,7 +1470,7 @@ const AddressSearchDetailInput = ({
1462
1470
  /* @__PURE__ */ jsxs("div", { children: [
1463
1471
  /* @__PURE__ */ jsx(FormField.Label, { id: "detail", style: { width: "90px" }, children: "\uC0C1\uC138\uC8FC\uC18C" }),
1464
1472
  /* @__PURE__ */ jsx(
1465
- Input,
1473
+ Input$1,
1466
1474
  {
1467
1475
  placeholder: "\uC0C1\uC138\uC8FC\uC18C \uC785\uB825",
1468
1476
  onChange: onDetailChange,
@@ -1500,25 +1508,17 @@ function AddressComponent({ isOpen, onClose, setValue }) {
1500
1508
  /* @__PURE__ */ jsxs(Modal.Content, { children: [
1501
1509
  /* @__PURE__ */ jsx(Modal.Header, { headerTitle: "\uC8FC\uC18C \uAC80\uC0C9", showCloseButton: true }),
1502
1510
  /* @__PURE__ */ jsxs(Modal.Body, { children: [
1503
- /* @__PURE__ */ jsx(
1504
- InputBox,
1511
+ /* @__PURE__ */ jsx(InputBox$1, { clearable: true, endElement: /* @__PURE__ */ jsx(IconMainUiSearch, { onClick: search }), onClear: onAddressSearchClear, children: /* @__PURE__ */ jsx(
1512
+ Input$1,
1505
1513
  {
1506
- clearable: true,
1507
- endElement: /* @__PURE__ */ jsx(Icon, { name: "sub-ui/search", onClick: search }),
1508
- onClear: onAddressSearchClear,
1509
- children: /* @__PURE__ */ jsx(
1510
- Input,
1511
- {
1512
- ...addressSearchStep !== "detail-input" && { autoFocus: true },
1513
- onChange: onSearch,
1514
- onKeyUp,
1515
- value: searchInput,
1516
- placeholder: "\uC9C0\uBC88, \uB3C4\uB85C\uBA85, \uAC74\uBB3C\uBA85, \uC6B0\uD3B8\uBC88\uD638 \uC785\uB825",
1517
- size: "large"
1518
- }
1519
- )
1514
+ ...addressSearchStep !== "detail-input" && { autoFocus: true },
1515
+ onChange: onSearch,
1516
+ onKeyUp,
1517
+ value: searchInput,
1518
+ placeholder: "\uC9C0\uBC88, \uB3C4\uB85C\uBA85, \uAC74\uBB3C\uBA85, \uC6B0\uD3B8\uBC88\uD638 \uC785\uB825",
1519
+ size: "large"
1520
1520
  }
1521
- ),
1521
+ ) }),
1522
1522
  addressSearchStep === "initial" && /* @__PURE__ */ jsx(AddressSearchInitialText, {}),
1523
1523
  addressSearchStep === "search-result" && /* @__PURE__ */ jsx(
1524
1524
  AddressSearchResult,
@@ -1769,20 +1769,20 @@ function BankStockSearchModal({ open, onClose, onSelect }) {
1769
1769
  ] });
1770
1770
  }
1771
1771
 
1772
- const cx$2 = classNames.bind(styles$5);
1772
+ const cx$3 = classNames.bind(styles$5);
1773
1773
  const JobVehicleSearchGrade = ({ riskGrade, hospitalizationGrade }) => {
1774
- return /* @__PURE__ */ jsxs("div", { className: cx$2("grade-section"), children: [
1775
- /* @__PURE__ */ jsxs("div", { className: cx$2("icon-title"), children: [
1776
- /* @__PURE__ */ jsx(Icon, { name: "illust/grade" }),
1774
+ return /* @__PURE__ */ jsxs("div", { className: cx$3("grade-section"), children: [
1775
+ /* @__PURE__ */ jsxs("div", { className: cx$3("icon-title"), children: [
1776
+ /* @__PURE__ */ jsx(IconIllustGrade, {}),
1777
1777
  /* @__PURE__ */ jsx("span", { className: "typo-title5 text-body", children: "\uB4F1\uAE09" })
1778
1778
  ] }),
1779
1779
  /* @__PURE__ */ jsx("p", { className: "typo-body2 text-body_3", children: "\uC9C1\uC885, \uC6B4\uC804 \uC5EC\uBD80 \uC120\uD0DD\uC2DC \uC790\uB3D9\uC73C\uB85C \uC0B0\uC815\uB429\uB2C8\uB2E4." }),
1780
- /* @__PURE__ */ jsxs("div", { className: cx$2("grade-list"), children: [
1781
- /* @__PURE__ */ jsxs("div", { className: cx$2("grade"), children: [
1780
+ /* @__PURE__ */ jsxs("div", { className: cx$3("grade-list"), children: [
1781
+ /* @__PURE__ */ jsxs("div", { className: cx$3("grade"), children: [
1782
1782
  /* @__PURE__ */ jsx("span", { children: "\uC704\uD5D8\uB4F1\uAE09" }),
1783
1783
  /* @__PURE__ */ jsx("span", { className: "text-primary typo-subtitle3", children: riskGrade || "-" })
1784
1784
  ] }),
1785
- /* @__PURE__ */ jsxs("div", { className: cx$2("grade"), children: [
1785
+ /* @__PURE__ */ jsxs("div", { className: cx$3("grade"), children: [
1786
1786
  /* @__PURE__ */ jsx("span", { children: "\uC785\uC6D0\uB4F1\uAE09" }),
1787
1787
  /* @__PURE__ */ jsx("span", { className: "text-primary typo-subtitle3", children: hospitalizationGrade || "-" })
1788
1788
  ] })
@@ -1790,11 +1790,11 @@ const JobVehicleSearchGrade = ({ riskGrade, hospitalizationGrade }) => {
1790
1790
  ] });
1791
1791
  };
1792
1792
 
1793
- const cx$1 = classNames.bind(styles$6);
1793
+ const cx$2 = classNames.bind(styles$6);
1794
1794
  function VehicleSearch({ vehicles, onVehicleSelect }) {
1795
- return /* @__PURE__ */ jsxs("div", { className: cx$1("vehicle-search-section"), children: [
1795
+ return /* @__PURE__ */ jsxs("div", { className: cx$2("vehicle-search-section"), children: [
1796
1796
  /* @__PURE__ */ jsx("p", { children: "\uC6B4\uC804 \uCC28\uC885" }),
1797
- /* @__PURE__ */ jsx(Radio.Root, { name: "vehicle-selection", size: "small", className: cx$1("vehicle-radio-root"), children: vehicles.map((vehicle, index) => /* @__PURE__ */ jsxs(
1797
+ /* @__PURE__ */ jsx(Radio.Root, { name: "vehicle-selection", size: "small", className: cx$2("vehicle-radio-root"), children: vehicles.map((vehicle, index) => /* @__PURE__ */ jsxs(
1798
1798
  Radio.Item,
1799
1799
  {
1800
1800
  id: `item-${vehicle.integrationCodeValue}`,
@@ -1808,7 +1808,7 @@ function VehicleSearch({ vehicles, onVehicleSelect }) {
1808
1808
  onVehicleSelect(selected);
1809
1809
  }
1810
1810
  },
1811
- className: cx$1("item"),
1811
+ className: cx$2("item"),
1812
1812
  children: [
1813
1813
  vehicle.integrationCodeValueName,
1814
1814
  "(",
@@ -1856,7 +1856,7 @@ const useJobVehicleSearch = () => {
1856
1856
  };
1857
1857
  };
1858
1858
 
1859
- const cx = classNames.bind(styles$5);
1859
+ const cx$1 = classNames.bind(styles$5);
1860
1860
  function useJobVehicleSearchModal() {
1861
1861
  const {
1862
1862
  selectedVehicle,
@@ -1902,19 +1902,19 @@ function useJobVehicleSearchModal() {
1902
1902
  /* @__PURE__ */ jsx(Modal.Overlay, {}),
1903
1903
  /* @__PURE__ */ jsxs(Modal.Content, { style: { height: "697px" }, children: [
1904
1904
  /* @__PURE__ */ jsx(Modal.Header, { headerTitle: "\uC9C1\uC885\xB7\uC6B4\uC804\uCC28\uC885 \uAC80\uC0C9", showCloseButton: true }),
1905
- /* @__PURE__ */ jsx(Modal.Body, { className: cx("job-vehicle-search-modal"), raw: true, children: /* @__PURE__ */ jsxs(Fragment, { children: [
1906
- /* @__PURE__ */ jsxs("div", { className: cx("left-panel"), children: [
1907
- /* @__PURE__ */ jsxs("div", { className: cx("card-section"), children: [
1905
+ /* @__PURE__ */ jsx(Modal.Body, { className: cx$1("job-vehicle-search-modal"), raw: true, children: /* @__PURE__ */ jsxs(Fragment, { children: [
1906
+ /* @__PURE__ */ jsxs("div", { className: cx$1("left-panel"), children: [
1907
+ /* @__PURE__ */ jsxs("div", { className: cx$1("card-section"), children: [
1908
1908
  /* @__PURE__ */ jsxs(
1909
1909
  "div",
1910
1910
  {
1911
- className: cx("card-menu", { "card-selected": rightPanelView === "jobSearch" }),
1911
+ className: cx$1("card-menu", { "card-selected": rightPanelView === "jobSearch" }),
1912
1912
  onClick: () => setRightPanelView("jobSearch"),
1913
1913
  children: [
1914
- /* @__PURE__ */ jsxs("div", { className: cx("card-title"), children: [
1915
- /* @__PURE__ */ jsx(Icon, { name: "illust/job", className: cx("card-icon") }),
1916
- /* @__PURE__ */ jsx("span", { className: cx("card-text", "typo-title5", "text-body"), children: "\uC9C1\uC885" }),
1917
- /* @__PURE__ */ jsx(Icon, { name: "sub-ui/arrow/right" })
1914
+ /* @__PURE__ */ jsxs("div", { className: cx$1("card-title"), children: [
1915
+ /* @__PURE__ */ jsx(IconIllustJob, { className: cx$1("card-icon") }),
1916
+ /* @__PURE__ */ jsx("span", { className: cx$1("card-text", "typo-title5", "text-body"), children: "\uC9C1\uC885" }),
1917
+ /* @__PURE__ */ jsx(IconSubUiArrowRight, {})
1918
1918
  ] }),
1919
1919
  /* @__PURE__ */ jsx("div", { className: "typo-body2 text-body_2", children: selectedJob ? selectedJob.occupationIndustryName : "\uBBF8\uC120\uD0DD" })
1920
1920
  ]
@@ -1923,13 +1923,13 @@ function useJobVehicleSearchModal() {
1923
1923
  /* @__PURE__ */ jsxs(
1924
1924
  "div",
1925
1925
  {
1926
- className: cx("card-menu", { "card-selected": rightPanelView === "vehicleSelection" }),
1926
+ className: cx$1("card-menu", { "card-selected": rightPanelView === "vehicleSelection" }),
1927
1927
  onClick: () => setRightPanelView("vehicleSelection"),
1928
1928
  children: [
1929
- /* @__PURE__ */ jsxs("div", { className: cx("card-title"), children: [
1930
- /* @__PURE__ */ jsx(Icon, { name: "illust/vehicle", className: cx("card-icon") }),
1931
- /* @__PURE__ */ jsx("span", { className: cx("card-text", "typo-title5", "text-body"), children: "\uC6B4\uC804 \uC5EC\uBD80\xB7\uCC28\uC885" }),
1932
- /* @__PURE__ */ jsx(Icon, { name: "sub-ui/arrow/right" })
1929
+ /* @__PURE__ */ jsxs("div", { className: cx$1("card-title"), children: [
1930
+ /* @__PURE__ */ jsx(IconIllustVehicle, { className: cx$1("card-icon") }),
1931
+ /* @__PURE__ */ jsx("span", { className: cx$1("card-text", "typo-title5", "text-body"), children: "\uC6B4\uC804 \uC5EC\uBD80\xB7\uCC28\uC885" }),
1932
+ /* @__PURE__ */ jsx(IconSubUiArrowRight, {})
1933
1933
  ] }),
1934
1934
  /* @__PURE__ */ jsxs("div", { className: "typo-body2 text-body_2", children: [
1935
1935
  selectedVehicle?.integrationCodeValueName,
@@ -1941,7 +1941,7 @@ function useJobVehicleSearchModal() {
1941
1941
  ] }),
1942
1942
  /* @__PURE__ */ jsx(JobVehicleSearchGrade, { riskGrade, hospitalizationGrade })
1943
1943
  ] }),
1944
- /* @__PURE__ */ jsx("div", { className: cx("right-panel"), children: rightPanelView === "jobSearch" ? JobSearch : VehicleSearch })
1944
+ /* @__PURE__ */ jsx("div", { className: cx$1("right-panel"), children: rightPanelView === "jobSearch" ? JobSearch : VehicleSearch })
1945
1945
  ] }) }),
1946
1946
  /* @__PURE__ */ jsx(Modal.Footer, { style: { marginTop: 0 }, children: /* @__PURE__ */ jsx(Button, { variant: "primary", size: "medium", appearance: "filled", width: "full", onClick: validate, children: "\uD655\uC778" }) })
1947
1947
  ] })
@@ -1961,5 +1961,144 @@ const JobSearchModal = ({ onClose }) => {
1961
1961
  ] });
1962
1962
  };
1963
1963
 
1964
- export { Attachment, BankStockSearchModal, FormCheckbox, FormCheckboxButton, FormDatePicker, FormDateRangePicker, FormSearchJobField, FormSegmentGroup, FormSelect, FormTextField, JobSearchModal, StepIndicator, resize, testSignatureBase64Data, useAddressComponent, useBankStockSearch, useCamera, useCanvasPaint, useJobVehicleSearchModal, useSearchAddress };
1964
+ const mockCustomers = [
1965
+ { customerId: "1", customerName: "\uAE40\uD55C\uD654", birthDate: "1999.01.01", genderCode: "\uB0A8\uC131" },
1966
+ {
1967
+ customerId: "2",
1968
+ customerName: "\uAE40\uD55C\uD654\uC0DD\uBA85",
1969
+ birthDate: "1989.01.01",
1970
+ genderCode: "\uC5EC\uC131",
1971
+ baseAddress: "\uC11C\uC6B8\uC2DC \uB9C8\uD3EC\uAD6C"
1972
+ },
1973
+ {
1974
+ customerId: "3",
1975
+ customerName: "\uAE40\uD55C\uD654\uC190\uD574\uBCF4\uD5D8",
1976
+ birthDate: "1999.01.01",
1977
+ genderCode: "\uB0A8\uC131",
1978
+ baseAddress: "\uC11C\uC6B8\uC2DC \uB9C8\uD3EC\uAD6C"
1979
+ }
1980
+ ];
1981
+ const useCustomerSearch = (onSelect) => {
1982
+ const { triggerRef, isOpen, setIsOpen, DropDown } = useDropDown();
1983
+ const [searchKeyword, setSearchKeyword] = useState("");
1984
+ const [searchInput, setSearchInput] = useState("");
1985
+ const [customerList, setCustomerList] = useState([]);
1986
+ const [selectedCustomer, setSelectedCustomer] = useState(null);
1987
+ const search = () => {
1988
+ if (searchInput.length >= 2) {
1989
+ setSearchKeyword(searchInput);
1990
+ const filtered = mockCustomers.filter((c) => c.customerName?.toLowerCase().includes(searchInput.toLowerCase()));
1991
+ setCustomerList(filtered);
1992
+ setIsOpen(true);
1993
+ } else {
1994
+ setCustomerList([]);
1995
+ setSearchKeyword("");
1996
+ setIsOpen(false);
1997
+ }
1998
+ };
1999
+ const onKeyUp = (e) => {
2000
+ if (e.key === "Enter") {
2001
+ search();
2002
+ }
2003
+ };
2004
+ const onSearchInputChange = (e) => {
2005
+ setSearchInput(e.target.value);
2006
+ if (e.target.value.length < 2) {
2007
+ setCustomerList([]);
2008
+ setSearchKeyword("");
2009
+ setIsOpen(false);
2010
+ }
2011
+ };
2012
+ const onClear = () => {
2013
+ setSearchInput("");
2014
+ setSearchKeyword("");
2015
+ setCustomerList([]);
2016
+ setSelectedCustomer(null);
2017
+ setIsOpen(false);
2018
+ };
2019
+ const handleSelectItem = (customer) => {
2020
+ setSelectedCustomer(customer);
2021
+ setSearchInput(customer.customerName || "");
2022
+ setCustomerList([]);
2023
+ setIsOpen(false);
2024
+ if (onSelect) {
2025
+ onSelect(customer);
2026
+ }
2027
+ };
2028
+ return {
2029
+ triggerRef,
2030
+ isOpen,
2031
+ DropDown,
2032
+ searchInput,
2033
+ customerList,
2034
+ searchKeyword,
2035
+ onSearchInputChange,
2036
+ onKeyUp,
2037
+ search,
2038
+ onClear,
2039
+ handleSelectItem,
2040
+ selectedCustomer
2041
+ };
2042
+ };
2043
+
2044
+ const cx = classNames.bind(styles$7);
2045
+ const highlightOnSearchKeyword = (originalText, targetString) => {
2046
+ if (!targetString || !originalText?.includes(targetString)) {
2047
+ return originalText;
2048
+ }
2049
+ const replacedText = [];
2050
+ const splitText = originalText.split(targetString);
2051
+ for (let i = 0; i < splitText.length; i++) {
2052
+ replacedText.push(splitText[i] || "");
2053
+ if (i < splitText.length - 1) {
2054
+ replacedText.push(
2055
+ /* @__PURE__ */ jsx("span", { className: "text-primary", children: targetString }, i)
2056
+ );
2057
+ }
2058
+ }
2059
+ return replacedText;
2060
+ };
2061
+ const { InputBox, Input } = FormCore;
2062
+ const CustomerSearch = ({ onSelect }) => {
2063
+ const {
2064
+ triggerRef,
2065
+ isOpen,
2066
+ DropDown,
2067
+ searchInput,
2068
+ customerList,
2069
+ searchKeyword,
2070
+ onSearchInputChange,
2071
+ onKeyUp,
2072
+ search,
2073
+ onClear,
2074
+ handleSelectItem
2075
+ } = useCustomerSearch(onSelect);
2076
+ return /* @__PURE__ */ jsxs("div", { className: cx("container"), children: [
2077
+ /* @__PURE__ */ jsx("div", { className: cx("search-bar"), children: /* @__PURE__ */ jsx(InputBox, { endElement: /* @__PURE__ */ jsx(IconMainUiSearch, { onClick: search }), onClear, clearable: true, children: /* @__PURE__ */ jsx(
2078
+ Input,
2079
+ {
2080
+ onChange: onSearchInputChange,
2081
+ onKeyUp,
2082
+ value: searchInput,
2083
+ placeholder: "\uACE0\uAC1D\uBA85\uC744 \uB450 \uAE00\uC790 \uC774\uC0C1 \uC785\uB825\uD574\uC8FC\uC138\uC694.",
2084
+ size: "large",
2085
+ ref: triggerRef
2086
+ }
2087
+ ) }) }),
2088
+ isOpen && /* @__PURE__ */ jsx(DropDown, { children: /* @__PURE__ */ jsx("div", { className: cx("result-container"), children: customerList.length > 0 && /* @__PURE__ */ jsx(List, { rootProps: { style: { width: "100%" } }, children: customerList.map((customer) => /* @__PURE__ */ jsx(ListItem, { onClick: () => handleSelectItem(customer), selectable: true, children: /* @__PURE__ */ jsxs("div", { className: cx("customer-item"), children: [
2089
+ /* @__PURE__ */ jsx("div", { className: cx("name"), children: highlightOnSearchKeyword(customer.customerName || "", searchKeyword) }),
2090
+ /* @__PURE__ */ jsxs("div", { className: cx("details"), children: [
2091
+ /* @__PURE__ */ jsx("span", { children: customer.birthDate }),
2092
+ /* @__PURE__ */ jsx("span", { className: cx("separator"), children: "|" }),
2093
+ /* @__PURE__ */ jsx("span", { children: customer.genderCode }),
2094
+ customer.baseAddress && /* @__PURE__ */ jsxs(Fragment, { children: [
2095
+ /* @__PURE__ */ jsx("span", { className: cx("separator"), children: "|" }),
2096
+ /* @__PURE__ */ jsx("span", { children: customer.baseAddress })
2097
+ ] })
2098
+ ] })
2099
+ ] }) }, customer.customerId)) }) }) })
2100
+ ] });
2101
+ };
2102
+
2103
+ export { Attachment, BankStockSearchModal, CustomerSearch, FormCheckbox, FormCheckboxButton, FormDatePicker, FormDateRangePicker, FormSearchJobField, FormSegmentGroup, FormSelect, FormTextField, JobSearchModal, StepIndicator, resize, testSignatureBase64Data, useAddressComponent, useBankStockSearch, useCamera, useCanvasPaint, useJobVehicleSearchModal, useSearchAddress };
1965
2104
  //# sourceMappingURL=index.esm.js.map