@nurihaus/web-design-system 3.7.0 → 3.8.0

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.
Files changed (137) hide show
  1. package/README.md +15 -4
  2. package/dist/ai/components.md +616 -10
  3. package/dist/ai/motion.md +429 -0
  4. package/dist/ai/tokens.md +90 -4
  5. package/dist/avatar.js +5 -3
  6. package/dist/bottom-bar.js +261 -0
  7. package/dist/bottom-nav.js +10 -57
  8. package/dist/breadcrumb.js +7 -5
  9. package/dist/callout.js +5 -3
  10. package/dist/card.js +278 -0
  11. package/dist/check-box.js +7 -5
  12. package/dist/chip-group.js +6 -4
  13. package/dist/chunk-3274.js +71 -0
  14. package/dist/chunk-345.js +72 -0
  15. package/dist/chunk-3547.js +56 -0
  16. package/dist/chunk-6459.js +107 -0
  17. package/dist/{chunk-6364.js → chunk-7335.js} +2 -67
  18. package/dist/chunk-7653.js +4 -0
  19. package/dist/chunk-910.js +17 -6
  20. package/dist/chunk-9497.js +66 -0
  21. package/dist/collapsible-menu.js +6 -4
  22. package/dist/components/badge/badge-props.d.ts +4 -4
  23. package/dist/components/badge/badge.stories.d.ts +1 -1
  24. package/dist/components/bottom-bar/base-bottom-bar.d.ts +4 -0
  25. package/dist/components/bottom-bar/bottom-bar-props.d.ts +1 -0
  26. package/dist/components/bottom-bar/bottom-bar-type.d.ts +3 -0
  27. package/dist/components/bottom-bar/bottom-bar.d.ts +6 -0
  28. package/dist/components/bottom-bar/bottom-bar.stories.d.ts +282 -0
  29. package/dist/components/button/button-type.d.ts +3 -1
  30. package/dist/components/button/button.stories.d.ts +1 -0
  31. package/dist/components/card/base-card.d.ts +3 -0
  32. package/dist/components/card/card-props.d.ts +9 -0
  33. package/dist/components/card/card-type.d.ts +8 -0
  34. package/dist/components/card/card.d.ts +5 -0
  35. package/dist/components/card/card.stories.d.ts +24 -0
  36. package/dist/components/description-list/base-description-list.d.ts +4 -0
  37. package/dist/components/description-list/description-list-props.d.ts +1 -0
  38. package/dist/components/description-list/description-list-type.d.ts +13 -0
  39. package/dist/components/description-list/description-list.d.ts +5 -0
  40. package/dist/components/description-list/description-list.stories.d.ts +20 -0
  41. package/dist/components/empty-state/base-empty-state.d.ts +4 -0
  42. package/dist/components/empty-state/empty-state-props.d.ts +10 -0
  43. package/dist/components/empty-state/empty-state-type.d.ts +14 -0
  44. package/dist/components/empty-state/empty-state.d.ts +5 -0
  45. package/dist/components/empty-state/empty-state.stories.d.ts +300 -0
  46. package/dist/components/icon/icon-paths.d.ts +4 -0
  47. package/dist/components/icon/icon.stories.d.ts +1 -1
  48. package/dist/components/list/base-list.d.ts +7 -0
  49. package/dist/components/list/list-group.d.ts +5 -0
  50. package/dist/components/list/list-group.stories.d.ts +14 -0
  51. package/dist/components/list/list-props.d.ts +2 -0
  52. package/dist/components/list/list-row.d.ts +5 -0
  53. package/dist/components/list/list-row.stories.d.ts +304 -0
  54. package/dist/components/list/list-type.d.ts +25 -0
  55. package/dist/components/media/base-media.d.ts +16 -0
  56. package/dist/components/media/media-props.d.ts +5 -0
  57. package/dist/components/media/media-thumbnail.d.ts +4 -0
  58. package/dist/components/media/media-thumbnail.stories.d.ts +34 -0
  59. package/dist/components/media/media-type.d.ts +43 -0
  60. package/dist/components/media/media-viewer.d.ts +4 -0
  61. package/dist/components/media/media-viewer.stories.d.ts +24 -0
  62. package/dist/components/message/base-message.d.ts +11 -0
  63. package/dist/components/message/message-event.d.ts +6 -0
  64. package/dist/components/message/message-props.d.ts +17 -0
  65. package/dist/components/message/message-thread.d.ts +6 -0
  66. package/dist/components/message/message-type.d.ts +21 -0
  67. package/dist/components/message/message.d.ts +5 -0
  68. package/dist/components/message/message.stories.d.ts +313 -0
  69. package/dist/components/message-composer/base-message-composer.d.ts +11 -0
  70. package/dist/components/message-composer/message-composer-props.d.ts +1 -0
  71. package/dist/components/message-composer/message-composer-type.d.ts +27 -0
  72. package/dist/components/message-composer/message-composer.d.ts +5 -0
  73. package/dist/components/message-composer/message-composer.stories.d.ts +44 -0
  74. package/dist/components/motion/motion-provider.d.ts +5 -0
  75. package/dist/components/motion/motion-type.d.ts +6 -0
  76. package/dist/components/motion/motion.d.ts +2 -0
  77. package/dist/components/motion/motion.stories.d.ts +23 -0
  78. package/dist/components/notice/base-notice.d.ts +4 -0
  79. package/dist/components/notice/notice-props.d.ts +16 -0
  80. package/dist/components/notice/notice-type.d.ts +19 -0
  81. package/dist/components/notice/notice.d.ts +5 -0
  82. package/dist/components/notice/notice.stories.d.ts +304 -0
  83. package/dist/components/radio/base-radio.d.ts +2 -1
  84. package/dist/components/radio/radio-props.d.ts +9 -1
  85. package/dist/components/radio/radio-type.d.ts +9 -0
  86. package/dist/components/radio/radio.stories.d.ts +10 -0
  87. package/dist/components/skeleton/skeleton.stories.d.ts +7 -7
  88. package/dist/components/tag/base-tag.d.ts +8 -0
  89. package/dist/components/tag/tag-props.d.ts +1 -0
  90. package/dist/components/tag/tag-type.d.ts +20 -0
  91. package/dist/components/tag/tag.d.ts +4 -0
  92. package/dist/components/tag/tag.stories.d.ts +14 -0
  93. package/dist/components/toast/toast.stories.d.ts +12 -12
  94. package/dist/components.css +1234 -171
  95. package/dist/cta-button.js +27 -14
  96. package/dist/data-table.js +5 -3
  97. package/dist/description-list.js +274 -0
  98. package/dist/drawer.js +7 -5
  99. package/dist/drop-down.js +8 -6
  100. package/dist/empty-state.js +300 -0
  101. package/dist/icon-text-badge.js +11 -9
  102. package/dist/icon-text-option-badge.js +8 -6
  103. package/dist/icon.js +7 -4
  104. package/dist/index.d.ts +28 -2
  105. package/dist/index.js +2297 -228
  106. package/dist/list-group.js +253 -0
  107. package/dist/list-row.js +302 -0
  108. package/dist/loading.js +6 -4
  109. package/dist/media-thumbnail.js +412 -0
  110. package/dist/media-viewer.js +274 -0
  111. package/dist/message-composer.js +395 -0
  112. package/dist/message-event.js +216 -0
  113. package/dist/message-thread.js +216 -0
  114. package/dist/message.js +271 -0
  115. package/dist/modal-with-double-button.js +11 -9
  116. package/dist/modal.js +9 -7
  117. package/dist/motion.js +52 -0
  118. package/dist/notice.js +342 -0
  119. package/dist/option-badge.js +11 -9
  120. package/dist/pagination.js +8 -6
  121. package/dist/radio.js +114 -30
  122. package/dist/skeleton.js +4 -2
  123. package/dist/step-progress.js +4 -2
  124. package/dist/styles.css +1124 -122
  125. package/dist/switch.js +6 -4
  126. package/dist/tabs.js +5 -3
  127. package/dist/tag.js +311 -0
  128. package/dist/text-area.js +8 -6
  129. package/dist/text-field.js +8 -6
  130. package/dist/text.js +5 -3
  131. package/dist/toast.js +12 -10
  132. package/dist/tokens/generated/index.d.ts +1 -0
  133. package/dist/tokens/generated/motion.d.ts +153 -0
  134. package/dist/tokens.css +117 -2
  135. package/dist/tokens.js +156 -1
  136. package/dist/tooltip.js +6 -4
  137. package/package.json +63 -1
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import * as __WEBPACK_EXTERNAL_MODULE_radix_ui_3bc96d1b__ from "radix-ui";
3
3
  import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
4
4
  import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_179142b8__ from "react/jsx-runtime";
5
+ import { LazyMotion as __WEBPACK_EXTERNAL_MODULE_motion_react_de020c0a_LazyMotion__, MotionConfig as __WEBPACK_EXTERNAL_MODULE_motion_react_de020c0a_MotionConfig__, domMax as __WEBPACK_EXTERNAL_MODULE_motion_react_de020c0a_domMax__ } from "motion/react";
5
6
  /******/ var __webpack_modules__ = ({
6
7
 
7
8
  /***/ 5077
@@ -268,7 +269,7 @@ var __assign = undefined && undefined.__assign || function () {
268
269
  return __assign.apply(this, arguments);
269
270
  };
270
271
 
271
- var variant = ['neutral', 'primary', 'danger', 'outlined'];
272
+ var variant = ['neutral', 'primary', 'danger', 'success', 'warning', 'outlined'];
272
273
  var sizes = ['xs', 's', 'm', 'l', 'xl'];
273
274
  var commonBadgeProps = {
274
275
  variant: {
@@ -529,6 +530,97 @@ OptionBadge.displayName = 'OptionBadge';
529
530
 
530
531
  /***/ },
531
532
 
533
+ /***/ 3577
534
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
535
+
536
+
537
+ // EXPORTS
538
+ __nuri_require__.d(__webpack_exports__, {
539
+ A: () => (/* binding */ bottom_bar)
540
+ });
541
+
542
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
543
+ var jsx_runtime_ = __nuri_require__(612);
544
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
545
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
546
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
547
+ var classNames = __nuri_require__(3274);
548
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
549
+ var getMergedProps = __nuri_require__(7335);
550
+ ;// ./components/bottom-bar/base-bottom-bar.tsx
551
+ var __assign = undefined && undefined.__assign || function () {
552
+ __assign = Object.assign || function (t) {
553
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
554
+ s = arguments[i];
555
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
556
+ }
557
+ return t;
558
+ };
559
+ return __assign.apply(this, arguments);
560
+ };
561
+ var __rest = undefined && undefined.__rest || function (s, e) {
562
+ var t = {};
563
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
564
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
565
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
566
+ }
567
+ return t;
568
+ };
569
+
570
+
571
+
572
+ var BaseBottomBar = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
573
+ var className = props.className,
574
+ restProps = __rest(props, ["className"]);
575
+ return (0,jsx_runtime_.jsx)("div", __assign({
576
+ ref: ref,
577
+ className: (0,classNames/* classNames */.x)('nuri-theme base-bottom-bar', className)
578
+ }, restProps));
579
+ });
580
+ BaseBottomBar.displayName = 'BaseBottomBar';
581
+ /* harmony default export */ const base_bottom_bar = (BaseBottomBar);
582
+ ;// ./components/bottom-bar/bottom-bar-props.ts
583
+ var bottomBarProps = {};
584
+ ;// ./components/bottom-bar/bottom-bar.tsx
585
+ var bottom_bar_assign = undefined && undefined.__assign || function () {
586
+ bottom_bar_assign = Object.assign || function (t) {
587
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
588
+ s = arguments[i];
589
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
590
+ }
591
+ return t;
592
+ };
593
+ return bottom_bar_assign.apply(this, arguments);
594
+ };
595
+ var bottom_bar_rest = undefined && undefined.__rest || function (s, e) {
596
+ var t = {};
597
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
598
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
599
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
600
+ }
601
+ return t;
602
+ };
603
+
604
+
605
+
606
+
607
+
608
+
609
+ /** 화면 아래에 붙는 바. 주 행동 버튼이나 입력 줄을 담는다. 바로 아래 자식들이 폭을 나눠 갖는다 */
610
+ var BottomBar = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
611
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, bottomBarProps),
612
+ className = _a.className,
613
+ restProps = bottom_bar_rest(_a, ["className"]);
614
+ return (0,jsx_runtime_.jsx)(base_bottom_bar, bottom_bar_assign({
615
+ ref: ref,
616
+ className: (0,classNames/* classNames */.x)(className, 'bottom-bar')
617
+ }, restProps));
618
+ });
619
+ BottomBar.displayName = 'BottomBar';
620
+ /* harmony default export */ const bottom_bar = (BottomBar);
621
+
622
+ /***/ },
623
+
532
624
  /***/ 1768
533
625
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
534
626
 
@@ -1052,27 +1144,38 @@ var CTAButton = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(f
1052
1144
  leftIcon = _a.leftIcon,
1053
1145
  rightIcon = _a.rightIcon,
1054
1146
  callout = _a.callout,
1147
+ asChild = _a.asChild,
1148
+ children = _a.children,
1149
+ loading = _a.loading,
1055
1150
  _onClick = _a.onClick,
1056
1151
  track = _a.track,
1057
1152
  trackProps = _a.trackProps,
1058
- restProps = __rest(_a, ["className", "text", "leftIcon", "rightIcon", "callout", "onClick", "track", "trackProps"]);
1153
+ restProps = __rest(_a, ["className", "text", "leftIcon", "rightIcon", "callout", "asChild", "children", "loading", "onClick", "track", "trackProps"]);
1059
1154
  var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('CTAButton', {
1060
1155
  track: track,
1061
1156
  trackProps: trackProps
1062
1157
  });
1063
- return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_button__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, __assign({
1158
+ var content = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
1159
+ children: [leftIcon, text, rightIcon, callout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_callout_callout__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {
1160
+ className: 'cta-button-callout',
1161
+ text: callout
1162
+ }) : null]
1163
+ });
1164
+ // asChild 면 넘겨받은 링크 요소 안에 버튼 글자를 넣고, 그 요소가 버튼 클래스·핸들러를 받는다
1165
+ var linkChild = asChild && /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(children) ? children : null;
1166
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_button__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, __assign({
1064
1167
  ref: ref,
1065
1168
  className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'cta-button', callout ? 'with-callout' : undefined),
1066
1169
  loadingComponent: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {}),
1170
+ asChild: linkChild !== null,
1171
+ // 링크는 로딩을 그리지 않는다. 그리면 Spinner 가 링크 자리를 차지한다
1172
+ loading: linkChild ? undefined : loading,
1067
1173
  onClick: function onClick(event) {
1068
1174
  emit('click');
1069
1175
  _onClick === null || _onClick === void 0 ? void 0 : _onClick(event);
1070
1176
  }
1071
1177
  }, restProps, {
1072
- children: [leftIcon, text, rightIcon, callout ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_callout_callout__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {
1073
- className: 'cta-button-callout',
1074
- text: callout
1075
- }) : null]
1178
+ children: linkChild ? /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(linkChild, undefined, content) : content
1076
1179
  }));
1077
1180
  });
1078
1181
  CTAButton.displayName = 'CTAButton';
@@ -1194,6 +1297,112 @@ Callout.displayName = 'Callout';
1194
1297
 
1195
1298
  /***/ },
1196
1299
 
1300
+ /***/ 329
1301
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1302
+
1303
+
1304
+ // EXPORTS
1305
+ __nuri_require__.d(__webpack_exports__, {
1306
+ A: () => (/* binding */ card)
1307
+ });
1308
+
1309
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
1310
+ var jsx_runtime_ = __nuri_require__(612);
1311
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
1312
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1313
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
1314
+ var classNames = __nuri_require__(3274);
1315
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
1316
+ var getMergedProps = __nuri_require__(7335);
1317
+ // EXTERNAL MODULE: ./components/core/composer/index.tsx
1318
+ var composer = __nuri_require__(2777);
1319
+ ;// ./components/card/base-card.tsx
1320
+ var __assign = undefined && undefined.__assign || function () {
1321
+ __assign = Object.assign || function (t) {
1322
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1323
+ s = arguments[i];
1324
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1325
+ }
1326
+ return t;
1327
+ };
1328
+ return __assign.apply(this, arguments);
1329
+ };
1330
+ var __rest = undefined && undefined.__rest || function (s, e) {
1331
+ var t = {};
1332
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
1333
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1334
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
1335
+ }
1336
+ return t;
1337
+ };
1338
+
1339
+
1340
+
1341
+
1342
+ var BaseCard = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1343
+ var _a = props.asChild,
1344
+ asChild = _a === void 0 ? false : _a,
1345
+ className = props.className,
1346
+ restProps = __rest(props, ["asChild", "className"]);
1347
+ var Comp = asChild ? composer/* default */.A : 'div';
1348
+ return (0,jsx_runtime_.jsx)(Comp, __assign({
1349
+ ref: ref,
1350
+ className: (0,classNames/* classNames */.x)('nuri-theme base-card', className)
1351
+ }, restProps));
1352
+ });
1353
+ BaseCard.displayName = 'BaseCard';
1354
+ /* harmony default export */ const base_card = (BaseCard);
1355
+ ;// ./components/card/card-props.ts
1356
+ // 크기·안쪽 여백 prop 은 두지 않는다. 카드는 한 모양이다(여백 --spacing-16).
1357
+ var variant = ['default', 'tinted'];
1358
+ var cardProps = {
1359
+ variant: {
1360
+ type: 'className',
1361
+ className: 'variant',
1362
+ values: variant,
1363
+ "default": 'default'
1364
+ }
1365
+ };
1366
+ ;// ./components/card/card.tsx
1367
+ var card_assign = undefined && undefined.__assign || function () {
1368
+ card_assign = Object.assign || function (t) {
1369
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1370
+ s = arguments[i];
1371
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1372
+ }
1373
+ return t;
1374
+ };
1375
+ return card_assign.apply(this, arguments);
1376
+ };
1377
+ var card_rest = undefined && undefined.__rest || function (s, e) {
1378
+ var t = {};
1379
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
1380
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1381
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
1382
+ }
1383
+ return t;
1384
+ };
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+
1391
+ /** 목록·홈의 카드 면. 누르는 카드는 asChild 로 링크·버튼 하나를 children 으로 준다 — 그 요소가 카드가 된다 */
1392
+ var Card = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1393
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, cardProps),
1394
+ className = _a.className,
1395
+ restProps = card_rest(_a, ["className"]);
1396
+ return (0,jsx_runtime_.jsx)(base_card, card_assign({
1397
+ ref: ref,
1398
+ className: (0,classNames/* classNames */.x)(className, 'card')
1399
+ }, restProps));
1400
+ });
1401
+ Card.displayName = 'Card';
1402
+ /* harmony default export */ const card = (Card);
1403
+
1404
+ /***/ },
1405
+
1197
1406
  /***/ 445
1198
1407
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1199
1408
 
@@ -1863,6 +2072,110 @@ var composeRefs = function composeRefs() {
1863
2072
 
1864
2073
  /***/ },
1865
2074
 
2075
+ /***/ 6143
2076
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2077
+
2078
+
2079
+ // EXPORTS
2080
+ __nuri_require__.d(__webpack_exports__, {
2081
+ A: () => (/* binding */ description_list)
2082
+ });
2083
+
2084
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
2085
+ var jsx_runtime_ = __nuri_require__(612);
2086
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
2087
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
2088
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
2089
+ var classNames = __nuri_require__(3274);
2090
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
2091
+ var getMergedProps = __nuri_require__(7335);
2092
+ ;// ./components/description-list/base-description-list.tsx
2093
+ var __assign = undefined && undefined.__assign || function () {
2094
+ __assign = Object.assign || function (t) {
2095
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2096
+ s = arguments[i];
2097
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2098
+ }
2099
+ return t;
2100
+ };
2101
+ return __assign.apply(this, arguments);
2102
+ };
2103
+ var __rest = undefined && undefined.__rest || function (s, e) {
2104
+ var t = {};
2105
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2106
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2107
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2108
+ }
2109
+ return t;
2110
+ };
2111
+
2112
+
2113
+
2114
+ var BaseDescriptionList = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2115
+ var className = props.className,
2116
+ restProps = __rest(props, ["className"]);
2117
+ return (0,jsx_runtime_.jsx)("dl", __assign({
2118
+ ref: ref,
2119
+ className: (0,classNames/* classNames */.x)('nuri-theme base-description-list', className)
2120
+ }, restProps));
2121
+ });
2122
+ BaseDescriptionList.displayName = 'BaseDescriptionList';
2123
+ /* harmony default export */ const base_description_list = (BaseDescriptionList);
2124
+ ;// ./components/description-list/description-list-props.ts
2125
+ // 크기·변형이 없다. 이름은 왼쪽, 값은 오른쪽 한 모양이다.
2126
+ var descriptionListProps = {};
2127
+ ;// ./components/description-list/description-list.tsx
2128
+ var description_list_assign = undefined && undefined.__assign || function () {
2129
+ description_list_assign = Object.assign || function (t) {
2130
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2131
+ s = arguments[i];
2132
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2133
+ }
2134
+ return t;
2135
+ };
2136
+ return description_list_assign.apply(this, arguments);
2137
+ };
2138
+ var description_list_rest = undefined && undefined.__rest || function (s, e) {
2139
+ var t = {};
2140
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2141
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2142
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2143
+ }
2144
+ return t;
2145
+ };
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+ /** 이름–값 요약. 이름은 왼쪽, 값은 오른쪽. total 줄은 구분선 아래 굵게 */
2153
+ var DescriptionList = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2154
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, descriptionListProps),
2155
+ className = _a.className,
2156
+ items = _a.items,
2157
+ restProps = description_list_rest(_a, ["className", "items"]);
2158
+ return (0,jsx_runtime_.jsx)(base_description_list, description_list_assign({
2159
+ ref: ref,
2160
+ className: (0,classNames/* classNames */.x)(className, 'description-list')
2161
+ }, restProps, {
2162
+ children: items.map(function (item) {
2163
+ return (0,jsx_runtime_.jsxs)("div", {
2164
+ className: (0,classNames/* classNames */.x)('description-list-item', item.total && 'total'),
2165
+ children: [(0,jsx_runtime_.jsx)("dt", {
2166
+ children: item.label
2167
+ }), (0,jsx_runtime_.jsx)("dd", {
2168
+ children: item.value
2169
+ })]
2170
+ }, item.id);
2171
+ })
2172
+ }));
2173
+ });
2174
+ DescriptionList.displayName = 'DescriptionList';
2175
+ /* harmony default export */ const description_list = (DescriptionList);
2176
+
2177
+ /***/ },
2178
+
1866
2179
  /***/ 6622
1867
2180
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1868
2181
 
@@ -2468,13 +2781,13 @@ Text.displayName = 'Text';
2468
2781
 
2469
2782
  /***/ },
2470
2783
 
2471
- /***/ 9896
2784
+ /***/ 5589
2472
2785
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2473
2786
 
2474
2787
 
2475
2788
  // EXPORTS
2476
2789
  __nuri_require__.d(__webpack_exports__, {
2477
- A: () => (/* binding */ base_icon)
2790
+ A: () => (/* binding */ empty_state)
2478
2791
  });
2479
2792
 
2480
2793
  // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
@@ -2483,25 +2796,149 @@ var jsx_runtime_ = __nuri_require__(612);
2483
2796
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
2484
2797
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
2485
2798
  var classNames = __nuri_require__(3274);
2486
- ;// ./components/icon/icon-paths.ts
2487
- // scripts/build-icons.mjs 가 만든다. 손으로 고치지 않는다.
2488
- // Phosphor Icons (MIT, https://phosphoricons.com) — viewBox 0 0 256 256
2489
- var iconPaths = {
2490
- house: {
2491
- regular: ['M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z'],
2492
- fill: ['M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z']
2493
- },
2494
- 'megaphone-simple': {
2495
- regular: ['M228.54,86.66l-176.06-54A16,16,0,0,0,32,48V192a16,16,0,0,0,16,16,16,16,0,0,0,4.52-.65L136,181.73V192a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16v-29.9l28.54-8.75A16.09,16.09,0,0,0,240,138V102A16.09,16.09,0,0,0,228.54,86.66ZM136,165,48,192V48l88,27Zm48,27H152V176.82L184,167Zm40-54-.11,0L152,160.08V79.92l71.89,22,.11,0v36Z'],
2496
- fill: ['M228.54,86.66l-176.06-54A16,16,0,0,0,32,48V192a16,16,0,0,0,16,16,16,16,0,0,0,4.52-.65L136,181.73V192a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16v-29.9l28.54-8.75A16.09,16.09,0,0,0,240,138V102A16.09,16.09,0,0,0,228.54,86.66ZM184,192H152V176.82L184,167Zm40-54-.11,0L152,160.08V79.91L223.89,102l.11,0v36Z']
2497
- },
2498
- 'chats-circle': {
2499
- regular: ['M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86ZM62,159.5a8.28,8.28,0,0,0-2.26.32L32,168l8.17-27.76a8,8,0,0,0-.63-6,64,64,0,1,1,26.26,26.26A8,8,0,0,0,62,159.5Zm153.79,28.73L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z'],
2500
- fill: ['M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86Zm-16.25,1.47L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z']
2501
- },
2502
- 'user-circle': {
2503
- regular: ['M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z'],
2504
- fill: ['M172,120a44,44,0,1,1-44-44A44.05,44.05,0,0,1,172,120Zm60,8A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88.09,88.09,0,0,0-91.47-87.93C77.43,41.89,39.87,81.12,40,128.25a87.65,87.65,0,0,0,22.24,58.16A79.71,79.71,0,0,1,84,165.1a4,4,0,0,1,4.83.32,59.83,59.83,0,0,0,78.28,0,4,4,0,0,1,4.83-.32,79.71,79.71,0,0,1,21.79,21.31A87.62,87.62,0,0,0,216,128Z']
2799
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
2800
+ var getMergedProps = __nuri_require__(7335);
2801
+ // EXTERNAL MODULE: ./components/icon/icon.tsx
2802
+ var icon_icon = __nuri_require__(3547);
2803
+ ;// ./components/empty-state/base-empty-state.tsx
2804
+ var __assign = undefined && undefined.__assign || function () {
2805
+ __assign = Object.assign || function (t) {
2806
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2807
+ s = arguments[i];
2808
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2809
+ }
2810
+ return t;
2811
+ };
2812
+ return __assign.apply(this, arguments);
2813
+ };
2814
+ var __rest = undefined && undefined.__rest || function (s, e) {
2815
+ var t = {};
2816
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2817
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2818
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2819
+ }
2820
+ return t;
2821
+ };
2822
+
2823
+
2824
+
2825
+ var BaseEmptyState = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2826
+ var className = props.className,
2827
+ restProps = __rest(props, ["className"]);
2828
+ return (0,jsx_runtime_.jsx)("div", __assign({
2829
+ ref: ref,
2830
+ className: (0,classNames/* classNames */.x)('nuri-theme base-empty-state', className)
2831
+ }, restProps));
2832
+ });
2833
+ BaseEmptyState.displayName = 'BaseEmptyState';
2834
+ /* harmony default export */ const base_empty_state = (BaseEmptyState);
2835
+ ;// ./components/empty-state/empty-state-props.ts
2836
+ /** 아이콘 원의 색. default 는 연보라, neutral 은 회색(오류·준비 중처럼 힘을 뺄 때) */
2837
+ var variant = ['default', 'neutral'];
2838
+ var emptyStateProps = {
2839
+ variant: {
2840
+ type: 'className',
2841
+ className: 'variant',
2842
+ values: variant,
2843
+ "default": 'default'
2844
+ }
2845
+ };
2846
+ ;// ./components/empty-state/empty-state.tsx
2847
+ var empty_state_assign = undefined && undefined.__assign || function () {
2848
+ empty_state_assign = Object.assign || function (t) {
2849
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2850
+ s = arguments[i];
2851
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2852
+ }
2853
+ return t;
2854
+ };
2855
+ return empty_state_assign.apply(this, arguments);
2856
+ };
2857
+ var empty_state_rest = undefined && undefined.__rest || function (s, e) {
2858
+ var t = {};
2859
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2860
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2861
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2862
+ }
2863
+ return t;
2864
+ };
2865
+
2866
+
2867
+
2868
+
2869
+
2870
+
2871
+
2872
+ /** 빈 목록·오류 뒤 다시 시도·찾을 수 없음·준비 중 화면 */
2873
+ var EmptyState = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2874
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, emptyStateProps),
2875
+ className = _a.className,
2876
+ icon = _a.icon,
2877
+ title = _a.title,
2878
+ description = _a.description,
2879
+ action = _a.action,
2880
+ restProps = empty_state_rest(_a, ["className", "icon", "title", "description", "action"]);
2881
+ return (0,jsx_runtime_.jsxs)(base_empty_state, empty_state_assign({
2882
+ ref: ref,
2883
+ className: (0,classNames/* classNames */.x)(className, 'empty-state')
2884
+ }, restProps, {
2885
+ children: [(0,jsx_runtime_.jsx)("span", {
2886
+ className: 'empty-state-icon',
2887
+ children: (0,jsx_runtime_.jsx)(icon_icon/* default */.A, {
2888
+ name: icon,
2889
+ size: 'xl'
2890
+ })
2891
+ }), (0,jsx_runtime_.jsx)("p", {
2892
+ className: 'empty-state-title',
2893
+ children: title
2894
+ }), description && (0,jsx_runtime_.jsx)("p", {
2895
+ className: 'empty-state-description',
2896
+ children: description
2897
+ }), action && (0,jsx_runtime_.jsx)("div", {
2898
+ className: 'empty-state-action',
2899
+ children: action
2900
+ })]
2901
+ }));
2902
+ });
2903
+ EmptyState.displayName = 'EmptyState';
2904
+ /* harmony default export */ const empty_state = (EmptyState);
2905
+
2906
+ /***/ },
2907
+
2908
+ /***/ 9896
2909
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2910
+
2911
+
2912
+ // EXPORTS
2913
+ __nuri_require__.d(__webpack_exports__, {
2914
+ A: () => (/* binding */ base_icon)
2915
+ });
2916
+
2917
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
2918
+ var jsx_runtime_ = __nuri_require__(612);
2919
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
2920
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
2921
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
2922
+ var classNames = __nuri_require__(3274);
2923
+ ;// ./components/icon/icon-paths.ts
2924
+ // scripts/build-icons.mjs 가 만든다. 손으로 고치지 않는다.
2925
+ // Phosphor Icons (MIT, https://phosphoricons.com) — viewBox 0 0 256 256
2926
+ var iconPaths = {
2927
+ house: {
2928
+ regular: ['M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z'],
2929
+ fill: ['M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z']
2930
+ },
2931
+ 'megaphone-simple': {
2932
+ regular: ['M228.54,86.66l-176.06-54A16,16,0,0,0,32,48V192a16,16,0,0,0,16,16,16,16,0,0,0,4.52-.65L136,181.73V192a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16v-29.9l28.54-8.75A16.09,16.09,0,0,0,240,138V102A16.09,16.09,0,0,0,228.54,86.66ZM136,165,48,192V48l88,27Zm48,27H152V176.82L184,167Zm40-54-.11,0L152,160.08V79.92l71.89,22,.11,0v36Z'],
2933
+ fill: ['M228.54,86.66l-176.06-54A16,16,0,0,0,32,48V192a16,16,0,0,0,16,16,16,16,0,0,0,4.52-.65L136,181.73V192a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16v-29.9l28.54-8.75A16.09,16.09,0,0,0,240,138V102A16.09,16.09,0,0,0,228.54,86.66ZM184,192H152V176.82L184,167Zm40-54-.11,0L152,160.08V79.91L223.89,102l.11,0v36Z']
2934
+ },
2935
+ 'chats-circle': {
2936
+ regular: ['M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86ZM62,159.5a8.28,8.28,0,0,0-2.26.32L32,168l8.17-27.76a8,8,0,0,0-.63-6,64,64,0,1,1,26.26,26.26A8,8,0,0,0,62,159.5Zm153.79,28.73L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z'],
2937
+ fill: ['M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86Zm-16.25,1.47L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z']
2938
+ },
2939
+ 'user-circle': {
2940
+ regular: ['M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z'],
2941
+ fill: ['M172,120a44,44,0,1,1-44-44A44.05,44.05,0,0,1,172,120Zm60,8A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88.09,88.09,0,0,0-91.47-87.93C77.43,41.89,39.87,81.12,40,128.25a87.65,87.65,0,0,0,22.24,58.16A79.71,79.71,0,0,1,84,165.1a4,4,0,0,1,4.83.32,59.83,59.83,0,0,0,78.28,0,4,4,0,0,1,4.83-.32,79.71,79.71,0,0,1,21.79,21.31A87.62,87.62,0,0,0,216,128Z']
2505
2942
  },
2506
2943
  bell: {
2507
2944
  regular: ['M221.8,175.94C216.25,166.38,208,139.33,208,104a80,80,0,1,0-160,0c0,35.34-8.26,62.38-13.81,71.94A16,16,0,0,0,48,200H88.81a40,40,0,0,0,78.38,0H208a16,16,0,0,0,13.8-24.06ZM128,216a24,24,0,0,1-22.62-16h45.24A24,24,0,0,1,128,216ZM48,184c7.7-13.24,16-43.92,16-80a64,64,0,1,1,128,0c0,36.05,8.28,66.73,16,80Z'],
@@ -2611,6 +3048,10 @@ var iconPaths = {
2611
3048
  regular: ['M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z'],
2612
3049
  fill: ['M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm45.66,85.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z']
2613
3050
  },
3051
+ circle: {
3052
+ regular: ['M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Z'],
3053
+ fill: ['M232,128A104,104,0,1,1,128,24,104.13,104.13,0,0,1,232,128Z']
3054
+ },
2614
3055
  check: {
2615
3056
  regular: ['M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z'],
2616
3057
  fill: ['M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z']
@@ -2747,22 +3188,1132 @@ BaseIcon.displayName = 'BaseIcon';
2747
3188
  /***/ 6722
2748
3189
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2749
3190
 
2750
- /* harmony export */ __nuri_require__.d(__webpack_exports__, {
2751
- /* harmony export */ u1: () => (/* binding */ iconProps)
2752
- /* harmony export */ });
2753
- /* unused harmony exports weight, sizes */
2754
- /* harmony import */ var _helpers_props_common_props__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(7298);
3191
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3192
+ /* harmony export */ u1: () => (/* binding */ iconProps)
3193
+ /* harmony export */ });
3194
+ /* unused harmony exports weight, sizes */
3195
+ /* harmony import */ var _helpers_props_common_props__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(7298);
3196
+
3197
+ /** 꺼짐은 선(regular), 켜짐·강조는 채움(fill) */
3198
+ var weight = (/* unused pure expression or super */ null && (['regular', 'fill']));
3199
+ var sizes = ['xs', 's', 'm', 'l', 'xl'];
3200
+ var iconProps = {
3201
+ size: (0,_helpers_props_common_props__WEBPACK_IMPORTED_MODULE_0__/* .sizeProp */ .lw)(sizes, 'l')
3202
+ };
3203
+
3204
+ /***/ },
3205
+
3206
+ /***/ 3547
3207
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3208
+
3209
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3210
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
3211
+ /* harmony export */ });
3212
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3213
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3214
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
3215
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(7335);
3216
+ /* harmony import */ var _base_icon__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(9896);
3217
+ /* harmony import */ var _icon_props__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(6722);
3218
+ var __assign = undefined && undefined.__assign || function () {
3219
+ __assign = Object.assign || function (t) {
3220
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3221
+ s = arguments[i];
3222
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3223
+ }
3224
+ return t;
3225
+ };
3226
+ return __assign.apply(this, arguments);
3227
+ };
3228
+ var __rest = undefined && undefined.__rest || function (s, e) {
3229
+ var t = {};
3230
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3231
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3232
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3233
+ }
3234
+ return t;
3235
+ };
3236
+
3237
+
3238
+
3239
+
3240
+
3241
+
3242
+ var Icon = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3243
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__/* .getMergedProps */ .p)(props, _icon_props__WEBPACK_IMPORTED_MODULE_5__/* .iconProps */ .u1),
3244
+ className = _a.className,
3245
+ restProps = __rest(_a, ["className"]);
3246
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_icon__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, __assign({
3247
+ ref: ref,
3248
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'icon')
3249
+ }, restProps));
3250
+ });
3251
+ Icon.displayName = 'Icon';
3252
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Icon);
3253
+
3254
+ /***/ },
3255
+
3256
+ /***/ 9497
3257
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3258
+
3259
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3260
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
3261
+ /* harmony export */ });
3262
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3263
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3264
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
3265
+ /* harmony import */ var _core_composer__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(2777);
3266
+ var __assign = undefined && undefined.__assign || function () {
3267
+ __assign = Object.assign || function (t) {
3268
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3269
+ s = arguments[i];
3270
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3271
+ }
3272
+ return t;
3273
+ };
3274
+ return __assign.apply(this, arguments);
3275
+ };
3276
+ var __rest = undefined && undefined.__rest || function (s, e) {
3277
+ var t = {};
3278
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3279
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3280
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3281
+ }
3282
+ return t;
3283
+ };
3284
+
3285
+
3286
+
3287
+
3288
+ var ListRootBase = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3289
+ var className = props.className,
3290
+ restProps = __rest(props, ["className"]);
3291
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({
3292
+ ref: ref,
3293
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)('nuri-theme base-list group', className)
3294
+ }, restProps));
3295
+ });
3296
+ ListRootBase.displayName = 'ListRoot';
3297
+ var ListRow = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3298
+ var _a = props.asChild,
3299
+ asChild = _a === void 0 ? false : _a,
3300
+ className = props.className,
3301
+ restProps = __rest(props, ["asChild", "className"]);
3302
+ var Comp = asChild ? _core_composer__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A : 'div';
3303
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Comp, __assign({
3304
+ ref: ref,
3305
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)('nuri-theme base-list row', className)
3306
+ }, restProps));
3307
+ });
3308
+ ListRow.displayName = 'ListRow';
3309
+ var ListRoot = Object.assign(ListRootBase, {
3310
+ Row: ListRow
3311
+ });
3312
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ListRoot);
3313
+
3314
+ /***/ },
3315
+
3316
+ /***/ 2779
3317
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3318
+
3319
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3320
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
3321
+ /* harmony export */ });
3322
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3323
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3324
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
3325
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(7335);
3326
+ /* harmony import */ var _base_list__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(9497);
3327
+ /* harmony import */ var _list_props__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(1212);
3328
+ var __assign = undefined && undefined.__assign || function () {
3329
+ __assign = Object.assign || function (t) {
3330
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3331
+ s = arguments[i];
3332
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3333
+ }
3334
+ return t;
3335
+ };
3336
+ return __assign.apply(this, arguments);
3337
+ };
3338
+ var __rest = undefined && undefined.__rest || function (s, e) {
3339
+ var t = {};
3340
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3341
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3342
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3343
+ }
3344
+ return t;
3345
+ };
3346
+
3347
+
3348
+
3349
+
3350
+
3351
+
3352
+ /** ListRow 를 흰 면 하나에 묶는다. label 을 주면 면 위에 작은 제목을 달고 그룹 이름으로 쓴다 */
3353
+ var ListGroup = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3354
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__/* .getMergedProps */ .p)(props, _list_props__WEBPACK_IMPORTED_MODULE_5__/* .listGroupProps */ .e),
3355
+ className = _a.className,
3356
+ label = _a.label,
3357
+ children = _a.children,
3358
+ restProps = __rest(_a, ["className", "label", "children"]);
3359
+ var labelId = (0,react__WEBPACK_IMPORTED_MODULE_1__.useId)();
3360
+ var hasLabel = label !== undefined && label !== null;
3361
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_list__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, __assign({
3362
+ ref: ref,
3363
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'list-group'),
3364
+ role: hasLabel ? 'group' : undefined,
3365
+ "aria-labelledby": hasLabel ? labelId : undefined
3366
+ }, restProps, {
3367
+ children: [hasLabel ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
3368
+ id: labelId,
3369
+ className: 'list-group-label',
3370
+ children: label
3371
+ }) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
3372
+ className: 'list-group-surface',
3373
+ children: children
3374
+ })]
3375
+ }));
3376
+ });
3377
+ ListGroup.displayName = 'ListGroup';
3378
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ListGroup);
3379
+
3380
+ /***/ },
3381
+
3382
+ /***/ 1212
3383
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3384
+
3385
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3386
+ /* harmony export */ R: () => (/* binding */ listRowProps),
3387
+ /* harmony export */ e: () => (/* binding */ listGroupProps)
3388
+ /* harmony export */ });
3389
+ // 크기·변형이 없다. 행 높이는 --list-row-height 부터, 면은 한 모양이다.
3390
+ var listGroupProps = {};
3391
+ var listRowProps = {};
3392
+
3393
+ /***/ },
3394
+
3395
+ /***/ 2082
3396
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3397
+
3398
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3399
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
3400
+ /* harmony export */ });
3401
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3402
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3403
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(4560);
3404
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
3405
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(7335);
3406
+ /* harmony import */ var _icon_icon__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(3547);
3407
+ /* harmony import */ var _base_list__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(9497);
3408
+ /* harmony import */ var _list_props__WEBPACK_IMPORTED_MODULE_7__ = __nuri_require__(1212);
3409
+ var __assign = undefined && undefined.__assign || function () {
3410
+ __assign = Object.assign || function (t) {
3411
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3412
+ s = arguments[i];
3413
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3414
+ }
3415
+ return t;
3416
+ };
3417
+ return __assign.apply(this, arguments);
3418
+ };
3419
+ var __rest = undefined && undefined.__rest || function (s, e) {
3420
+ var t = {};
3421
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3422
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3423
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3424
+ }
3425
+ return t;
3426
+ };
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+
3433
+
3434
+
3435
+ /** 목록 한 줄. onClick 이면 button, asChild 면 넘긴 링크가 행이 된다. 둘 다 없으면 div 다 */
3436
+ var ListRow = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3437
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__/* .getMergedProps */ .p)(props, _list_props__WEBPACK_IMPORTED_MODULE_7__/* .listRowProps */ .R),
3438
+ className = _a.className,
3439
+ label = _a.label,
3440
+ description = _a.description,
3441
+ leading = _a.leading,
3442
+ trailing = _a.trailing,
3443
+ chevron = _a.chevron,
3444
+ asChild = _a.asChild,
3445
+ onClick = _a.onClick,
3446
+ children = _a.children,
3447
+ track = _a.track,
3448
+ trackProps = _a.trackProps,
3449
+ restProps = __rest(_a, ["className", "label", "description", "leading", "trailing", "chevron", "asChild", "onClick", "children", "track", "trackProps"]);
3450
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('ListRow', {
3451
+ track: track,
3452
+ trackProps: trackProps
3453
+ });
3454
+ var linkChild = asChild && /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(children) ? children : null;
3455
+ var showChevron = chevron !== null && chevron !== void 0 ? chevron : linkChild !== null || onClick !== undefined;
3456
+ var content = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
3457
+ children: [leading ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {
3458
+ className: 'list-row-leading',
3459
+ children: leading
3460
+ }) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", {
3461
+ className: 'list-row-text',
3462
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {
3463
+ className: 'list-row-label',
3464
+ children: label
3465
+ }), description ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {
3466
+ className: 'list-row-description',
3467
+ children: description
3468
+ }) : null]
3469
+ }), trailing ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {
3470
+ className: 'list-row-trailing',
3471
+ children: trailing
3472
+ }) : null, showChevron ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icon_icon__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {
3473
+ className: 'list-row-chevron',
3474
+ name: 'caret-right',
3475
+ size: 's'
3476
+ }) : null]
3477
+ });
3478
+ // 넘겨받은 링크가 있으면 그 안에, onClick 이면 button 안에 행 내용을 넣는다. 둘 다 없으면 base 의 div 다
3479
+ var buttonRow = onClick ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", {
3480
+ type: 'button',
3481
+ children: content
3482
+ }) : null;
3483
+ var rowElement = linkChild ? /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(linkChild, undefined, content) : buttonRow;
3484
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_list__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Row, __assign({
3485
+ ref: ref,
3486
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'list-row'),
3487
+ asChild: rowElement !== null,
3488
+ // 링크 행은 다른 화면으로 옮기고 버튼 행은 그 자리에서 동작한다. 보기만 하는 행은 보내지 않는다
3489
+ onClick: rowElement ? function (event) {
3490
+ emit(linkChild ? 'navigate' : 'click');
3491
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
3492
+ } : undefined
3493
+ }, restProps, {
3494
+ children: rowElement !== null && rowElement !== void 0 ? rowElement : content
3495
+ }));
3496
+ });
3497
+ ListRow.displayName = 'ListRow';
3498
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ListRow);
3499
+
3500
+ /***/ },
3501
+
3502
+ /***/ 6302
3503
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3504
+
3505
+
3506
+ // EXPORTS
3507
+ __nuri_require__.d(__webpack_exports__, {
3508
+ A: () => (/* binding */ spinner)
3509
+ });
3510
+
3511
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
3512
+ var jsx_runtime_ = __nuri_require__(612);
3513
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3514
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
3515
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
3516
+ var classNames = __nuri_require__(3274);
3517
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
3518
+ var getMergedProps = __nuri_require__(7335);
3519
+ ;// ./components/loading/spinner/base-spinner.tsx
3520
+ var __assign = undefined && undefined.__assign || function () {
3521
+ __assign = Object.assign || function (t) {
3522
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3523
+ s = arguments[i];
3524
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3525
+ }
3526
+ return t;
3527
+ };
3528
+ return __assign.apply(this, arguments);
3529
+ };
3530
+ var __rest = undefined && undefined.__rest || function (s, e) {
3531
+ var t = {};
3532
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3533
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3534
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3535
+ }
3536
+ return t;
3537
+ };
3538
+
3539
+
3540
+
3541
+ var BaseSpinner = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3542
+ var className = props.className,
3543
+ restProps = __rest(props, ["className"]);
3544
+ return (0,jsx_runtime_.jsx)("div", __assign({
3545
+ ref: ref,
3546
+ className: (0,classNames/* classNames */.x)('nuri-theme base-spinner', className)
3547
+ }, restProps, {
3548
+ children: (0,jsx_runtime_.jsx)("div", {
3549
+ className: 'loading-indicator-ring',
3550
+ children: [0, 1, 2, 3].map(function (i) {
3551
+ return (0,jsx_runtime_.jsx)("div", {
3552
+ className: 'loading-indicator-single-ring'
3553
+ }, i);
3554
+ })
3555
+ })
3556
+ }));
3557
+ });
3558
+ BaseSpinner.displayName = 'BaseSpinner';
3559
+ /* harmony default export */ const base_spinner = (BaseSpinner);
3560
+ ;// ./components/loading/spinner/spinner-props.ts
3561
+ var spinnerProps = {};
3562
+ ;// ./components/loading/spinner/spinner.tsx
3563
+ var spinner_assign = undefined && undefined.__assign || function () {
3564
+ spinner_assign = Object.assign || function (t) {
3565
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3566
+ s = arguments[i];
3567
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3568
+ }
3569
+ return t;
3570
+ };
3571
+ return spinner_assign.apply(this, arguments);
3572
+ };
3573
+ var spinner_rest = undefined && undefined.__rest || function (s, e) {
3574
+ var t = {};
3575
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3576
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3577
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3578
+ }
3579
+ return t;
3580
+ };
3581
+
3582
+
3583
+
3584
+
3585
+
3586
+
3587
+ var Spinner = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3588
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, spinnerProps),
3589
+ className = _a.className,
3590
+ restProps = spinner_rest(_a, ["className"]);
3591
+ return (0,jsx_runtime_.jsx)(base_spinner, spinner_assign({
3592
+ ref: ref,
3593
+ className: (0,classNames/* classNames */.x)(className, 'component-loading-container')
3594
+ }, restProps));
3595
+ });
3596
+ Spinner.displayName = 'Spinner';
3597
+ /* harmony default export */ const spinner = (Spinner);
3598
+
3599
+ /***/ },
3600
+
3601
+ /***/ 4804
3602
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3603
+
3604
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3605
+ /* harmony export */ _: () => (/* binding */ LogProvider),
3606
+ /* harmony export */ e: () => (/* binding */ useLogEmitter)
3607
+ /* harmony export */ });
3608
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3609
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3610
+ var _a;
3611
+
3612
+
3613
+ // 진입점(`/logging`, `/cta-button`, 루트)마다 이 파일이 따로 들어가므로 context 는 전역 키 하나에 둔다.
3614
+ var CONTEXT_KEY = Symbol["for"]('@nurihaus/web-design-system/log-provider');
3615
+ var registry = globalThis;
3616
+ var LogContext = (_a = registry[CONTEXT_KEY]) !== null && _a !== void 0 ? _a : registry[CONTEXT_KEY] = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
3617
+ var LogProvider = function LogProvider(props) {
3618
+ var onEvent = props.onEvent,
3619
+ children = props.children;
3620
+ // context 값이 Provider 렌더마다 바뀌면 track 을 단 컴포넌트가 모두 다시 그려진다. 최신 onEvent 는 ref 로 읽는다.
3621
+ var onEventRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(onEvent);
3622
+ onEventRef.current = onEvent;
3623
+ var emit = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function (event) {
3624
+ // 로그 수집기가 던져도 클릭·열기 같은 UI 동작은 이어져야 한다.
3625
+ try {
3626
+ onEventRef.current(event);
3627
+ } catch (error) {
3628
+ console.error('[LogProvider] onEvent threw', error);
3629
+ }
3630
+ }, []);
3631
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogContext.Provider, {
3632
+ value: emit,
3633
+ children: children
3634
+ });
3635
+ };
3636
+ LogProvider.displayName = 'LogProvider';
3637
+ /** LogProvider 가 둔 emit 함수. Provider 밖이면 null 이다. */
3638
+ var useLogEmitter = function useLogEmitter() {
3639
+ return (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(LogContext);
3640
+ };
3641
+
3642
+ /***/ },
3643
+
3644
+ /***/ 7111
3645
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3646
+
3647
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3648
+ /* harmony export */ e: () => (/* binding */ useLog)
3649
+ /* harmony export */ });
3650
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(1041);
3651
+ /* harmony import */ var _log_context__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(4804);
3652
+ var __assign = undefined && undefined.__assign || function () {
3653
+ __assign = Object.assign || function (t) {
3654
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3655
+ s = arguments[i];
3656
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3657
+ }
3658
+ return t;
3659
+ };
3660
+ return __assign.apply(this, arguments);
3661
+ };
3662
+
3663
+
3664
+
3665
+ /** 컴포넌트 밖의 사용 로그를 남긴다. LogProvider 밖이면 아무것도 하지 않는다. */
3666
+ var useLog = function useLog() {
3667
+ var emit = (0,_log_context__WEBPACK_IMPORTED_MODULE_1__/* .useLogEmitter */ .e)();
3668
+ return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (event) {
3669
+ return emit === null || emit === void 0 ? void 0 : emit(__assign(__assign({}, event), {
3670
+ timestamp: Date.now()
3671
+ }));
3672
+ }, [emit]);
3673
+ };
3674
+
3675
+ /***/ },
3676
+
3677
+ /***/ 6459
3678
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3679
+
3680
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3681
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
3682
+ /* harmony export */ });
3683
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3684
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3685
+ /* harmony import */ var radix_ui__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(0);
3686
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
3687
+ var __assign = undefined && undefined.__assign || function () {
3688
+ __assign = Object.assign || function (t) {
3689
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3690
+ s = arguments[i];
3691
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3692
+ }
3693
+ return t;
3694
+ };
3695
+ return __assign.apply(this, arguments);
3696
+ };
3697
+ var __rest = undefined && undefined.__rest || function (s, e) {
3698
+ var t = {};
3699
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
3700
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
3701
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
3702
+ }
3703
+ return t;
3704
+ };
3705
+
3706
+
3707
+
3708
+
3709
+ // Dialog.Root 는 DOM 을 그리지 않아 ref 를 받을 곳이 없다.
3710
+ var MediaViewerRootBase = function MediaViewerRootBase(props) {
3711
+ var children = props.children,
3712
+ open = props.open,
3713
+ defaultOpen = props.defaultOpen,
3714
+ onOpenChange = props.onOpenChange;
3715
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Root, {
3716
+ open: open,
3717
+ defaultOpen: defaultOpen,
3718
+ onOpenChange: onOpenChange,
3719
+ children: children
3720
+ });
3721
+ };
3722
+ MediaViewerRootBase.displayName = 'MediaViewerRoot';
3723
+ var MediaViewerTrigger = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3724
+ var className = props.className,
3725
+ restProps = __rest(props, ["className"]);
3726
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Trigger, __assign({
3727
+ ref: ref,
3728
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)('nuri-theme base-media trigger', className)
3729
+ }, restProps));
3730
+ });
3731
+ MediaViewerTrigger.displayName = 'MediaViewerTrigger';
3732
+ // Portal 과 Overlay 를 같이 그린다. 화면 전체를 덮는 Dialog.Content 가 ref 를 받는다.
3733
+ var MediaViewerContent = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3734
+ var className = props.className,
3735
+ restProps = __rest(props, ["className"]);
3736
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Portal, {
3737
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Overlay, {
3738
+ className: 'nuri-theme base-media overlay'
3739
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Content, __assign({
3740
+ ref: ref,
3741
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)('nuri-theme base-media content', className)
3742
+ }, restProps))]
3743
+ });
3744
+ });
3745
+ MediaViewerContent.displayName = 'MediaViewerContent';
3746
+ // 접근성 이름만 준다. 화면에는 사진만 보인다.
3747
+ var MediaViewerTitle = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3748
+ var className = props.className,
3749
+ restProps = __rest(props, ["className"]);
3750
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.VisuallyHidden.Root, {
3751
+ asChild: true,
3752
+ children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Title, __assign({
3753
+ ref: ref,
3754
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)('nuri-theme base-media title', className)
3755
+ }, restProps))
3756
+ });
3757
+ });
3758
+ MediaViewerTitle.displayName = 'MediaViewerTitle';
3759
+ var MediaViewerClose = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3760
+ var className = props.className,
3761
+ restProps = __rest(props, ["className"]);
3762
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(radix_ui__WEBPACK_IMPORTED_MODULE_2__.Dialog.Close, __assign({
3763
+ ref: ref,
3764
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)('nuri-theme base-media close', className)
3765
+ }, restProps));
3766
+ });
3767
+ MediaViewerClose.displayName = 'MediaViewerClose';
3768
+ var MediaViewerRoot = Object.assign(MediaViewerRootBase, {
3769
+ Trigger: MediaViewerTrigger,
3770
+ Content: MediaViewerContent,
3771
+ Title: MediaViewerTitle,
3772
+ Close: MediaViewerClose
3773
+ });
3774
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MediaViewerRoot);
3775
+
3776
+ /***/ },
3777
+
3778
+ /***/ 946
3779
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3780
+
3781
+
3782
+ // EXPORTS
3783
+ __nuri_require__.d(__webpack_exports__, {
3784
+ A: () => (/* binding */ media_thumbnail)
3785
+ });
3786
+
3787
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
3788
+ var jsx_runtime_ = __nuri_require__(612);
3789
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3790
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
3791
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
3792
+ var useTrack = __nuri_require__(4560);
3793
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
3794
+ var classNames = __nuri_require__(3274);
3795
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
3796
+ var getMergedProps = __nuri_require__(7335);
3797
+ // EXTERNAL MODULE: ./components/button/base-button.tsx
3798
+ var base_button = __nuri_require__(8933);
3799
+ // EXTERNAL MODULE: ./components/icon/icon.tsx
3800
+ var icon = __nuri_require__(3547);
3801
+ // EXTERNAL MODULE: ./components/loading/spinner/spinner.tsx + 2 modules
3802
+ var spinner = __nuri_require__(6302);
3803
+ // EXTERNAL MODULE: ./helpers/props/common-props.ts
3804
+ var common_props = __nuri_require__(7298);
3805
+ ;// ./components/media/media-props.ts
3806
+
3807
+ var sizes = ['s', 'm', 'l'];
3808
+ var mediaTypes = (/* unused pure expression or super */ null && (['image', 'video']));
3809
+ var mediaThumbnailProps = {
3810
+ size: (0,common_props/* sizeProp */.lw)(sizes, 'm')
3811
+ };
3812
+ // EXTERNAL MODULE: ./components/media/media-viewer.tsx
3813
+ var media_viewer = __nuri_require__(4268);
3814
+ ;// ./components/media/media-thumbnail.tsx
3815
+
3816
+
3817
+
3818
+
3819
+
3820
+
3821
+
3822
+
3823
+
3824
+
3825
+ // 버튼 안에 버튼을 둘 수 없어 여는 버튼과 지우기 버튼을 형제로 두고 div 로 감싼다. ref 는 그 div 다.
3826
+ var MediaThumbnail = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3827
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, mediaThumbnailProps),
3828
+ src = _a.src,
3829
+ _b = _a.type,
3830
+ type = _b === void 0 ? 'image' : _b,
3831
+ alt = _a.alt,
3832
+ viewLabel = _a.viewLabel,
3833
+ closeLabel = _a.closeLabel,
3834
+ loading = _a.loading,
3835
+ invalid = _a.invalid,
3836
+ onRemove = _a.onRemove,
3837
+ removeLabel = _a.removeLabel,
3838
+ className = _a.className,
3839
+ style = _a.style,
3840
+ track = _a.track,
3841
+ trackProps = _a.trackProps;
3842
+ var emit = (0,useTrack/* useTrack */.n)('MediaThumbnail', {
3843
+ track: track,
3844
+ trackProps: trackProps
3845
+ });
3846
+ return (0,jsx_runtime_.jsxs)("div", {
3847
+ ref: ref,
3848
+ className: (0,classNames/* classNames */.x)('nuri-theme base-media', className, 'media-thumbnail'),
3849
+ style: style,
3850
+ children: [(0,jsx_runtime_.jsx)(media_viewer/* default */.A, {
3851
+ src: src,
3852
+ type: type,
3853
+ alt: alt,
3854
+ title: alt !== null && alt !== void 0 ? alt : viewLabel,
3855
+ closeLabel: closeLabel,
3856
+ onOpenChange: function onOpenChange(next) {
3857
+ return next && emit('open');
3858
+ },
3859
+ trigger: (0,jsx_runtime_.jsxs)(base_button/* default */.A, {
3860
+ className: 'media-thumbnail-open',
3861
+ "aria-label": alt !== null && alt !== void 0 ? alt : viewLabel,
3862
+ "aria-busy": loading || undefined,
3863
+ disabled: loading || invalid,
3864
+ "data-invalid": invalid || undefined,
3865
+ children: [type === 'video' ? (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
3866
+ children: [(0,jsx_runtime_.jsx)("video", {
3867
+ className: 'media-thumbnail-media',
3868
+ src: "".concat(src, "#t=0.001"),
3869
+ preload: 'metadata',
3870
+ muted: true,
3871
+ playsInline: true
3872
+ }), (0,jsx_runtime_.jsx)("span", {
3873
+ className: 'media-thumbnail-play',
3874
+ children: (0,jsx_runtime_.jsx)(icon/* default */.A, {
3875
+ name: 'play',
3876
+ weight: 'fill',
3877
+ size: 's'
3878
+ })
3879
+ })]
3880
+ }) : (0,jsx_runtime_.jsx)("img", {
3881
+ className: 'media-thumbnail-media',
3882
+ src: src,
3883
+ alt: '',
3884
+ loading: 'lazy'
3885
+ }), loading && (0,jsx_runtime_.jsx)("span", {
3886
+ className: 'media-thumbnail-loading',
3887
+ children: (0,jsx_runtime_.jsx)(spinner/* default */.A, {
3888
+ className: 'media-thumbnail-spinner'
3889
+ })
3890
+ })]
3891
+ })
3892
+ }), onRemove && (0,jsx_runtime_.jsx)(base_button/* default */.A, {
3893
+ className: 'media-thumbnail-remove',
3894
+ type: 'button',
3895
+ "aria-label": removeLabel,
3896
+ onClick: onRemove,
3897
+ children: (0,jsx_runtime_.jsx)(icon/* default */.A, {
3898
+ name: 'x',
3899
+ size: 'xs'
3900
+ })
3901
+ })]
3902
+ });
3903
+ });
3904
+ MediaThumbnail.displayName = 'MediaThumbnail';
3905
+ /* harmony default export */ const media_thumbnail = (MediaThumbnail);
3906
+
3907
+ /***/ },
3908
+
3909
+ /***/ 4268
3910
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3911
+
3912
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
3913
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
3914
+ /* harmony export */ });
3915
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
3916
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
3917
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(4560);
3918
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
3919
+ /* harmony import */ var _icon_icon__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(3547);
3920
+ /* harmony import */ var _base_media__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(6459);
3921
+
3922
+
3923
+
3924
+
3925
+
3926
+
3927
+ // ref 는 화면 전체를 덮는 Dialog.Content div 에 붙는다. Root 는 DOM 을 그리지 않는다.
3928
+ // 닫히면 Content 가 빠지므로 영상도 함께 빠져 재생이 멈춘다.
3929
+ var MediaViewer = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
3930
+ var trigger = props.trigger,
3931
+ open = props.open,
3932
+ defaultOpen = props.defaultOpen,
3933
+ _onOpenChange = props.onOpenChange,
3934
+ src = props.src,
3935
+ _a = props.type,
3936
+ type = _a === void 0 ? 'image' : _a,
3937
+ alt = props.alt,
3938
+ title = props.title,
3939
+ closeLabel = props.closeLabel,
3940
+ className = props.className,
3941
+ style = props.style,
3942
+ track = props.track,
3943
+ trackProps = props.trackProps;
3944
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('MediaViewer', {
3945
+ track: track,
3946
+ trackProps: trackProps
3947
+ });
3948
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_media__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {
3949
+ open: open,
3950
+ defaultOpen: defaultOpen,
3951
+ onOpenChange: function onOpenChange(next) {
3952
+ emit(next ? 'open' : 'close');
3953
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(next);
3954
+ },
3955
+ children: [trigger && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_media__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Trigger, {
3956
+ asChild: true,
3957
+ children: trigger
3958
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_media__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Content, {
3959
+ ref: ref,
3960
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'media-viewer'),
3961
+ style: style,
3962
+ "aria-describedby": undefined,
3963
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_media__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Title, {
3964
+ children: title !== null && title !== void 0 ? title : alt
3965
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_media__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Close, {
3966
+ className: 'media-viewer-close',
3967
+ "aria-label": closeLabel,
3968
+ children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icon_icon__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, {
3969
+ name: 'x',
3970
+ size: 'l'
3971
+ })
3972
+ }), type === 'video' ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("video", {
3973
+ className: 'media-viewer-media',
3974
+ src: src,
3975
+ controls: true,
3976
+ autoPlay: true,
3977
+ playsInline: true
3978
+ }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("img", {
3979
+ className: 'media-viewer-media',
3980
+ src: src,
3981
+ alt: alt !== null && alt !== void 0 ? alt : ''
3982
+ })]
3983
+ })]
3984
+ });
3985
+ });
3986
+ MediaViewer.displayName = 'MediaViewer';
3987
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MediaViewer);
3988
+
3989
+ /***/ },
3990
+
3991
+ /***/ 2045
3992
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
3993
+
3994
+
3995
+ // EXPORTS
3996
+ __nuri_require__.d(__webpack_exports__, {
3997
+ A: () => (/* binding */ message_composer)
3998
+ });
3999
+
4000
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
4001
+ var jsx_runtime_ = __nuri_require__(612);
4002
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4003
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4004
+ // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
4005
+ var useExternalState = __nuri_require__(9387);
4006
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4007
+ var useTrack = __nuri_require__(4560);
4008
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
4009
+ var classNames = __nuri_require__(3274);
4010
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
4011
+ var getMergedProps = __nuri_require__(7335);
4012
+ // EXTERNAL MODULE: ./components/icon/icon.tsx
4013
+ var icon = __nuri_require__(3547);
4014
+ // EXTERNAL MODULE: ./components/loading/spinner/spinner.tsx + 2 modules
4015
+ var spinner = __nuri_require__(6302);
4016
+ ;// ./components/message-composer/base-message-composer.tsx
4017
+ var __assign = undefined && undefined.__assign || function () {
4018
+ __assign = Object.assign || function (t) {
4019
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4020
+ s = arguments[i];
4021
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
4022
+ }
4023
+ return t;
4024
+ };
4025
+ return __assign.apply(this, arguments);
4026
+ };
4027
+ var __rest = undefined && undefined.__rest || function (s, e) {
4028
+ var t = {};
4029
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4030
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4031
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4032
+ }
4033
+ return t;
4034
+ };
4035
+
4036
+
4037
+
4038
+ var MessageComposerRootBase = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4039
+ var className = props.className,
4040
+ restProps = __rest(props, ["className"]);
4041
+ return (0,jsx_runtime_.jsx)("div", __assign({
4042
+ ref: ref,
4043
+ className: (0,classNames/* classNames */.x)('nuri-theme base-message-composer root', className)
4044
+ }, restProps));
4045
+ });
4046
+ MessageComposerRootBase.displayName = 'MessageComposerRoot';
4047
+ var MessageComposerTextarea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4048
+ var className = props.className,
4049
+ disabled = props.disabled,
4050
+ restProps = __rest(props, ["className", "disabled"]);
4051
+ return (0,jsx_runtime_.jsx)("textarea", __assign({
4052
+ ref: ref,
4053
+ className: (0,classNames/* classNames */.x)('nuri-theme base-message-composer textarea', className),
4054
+ rows: 1,
4055
+ disabled: disabled,
4056
+ "data-disabled": disabled || undefined
4057
+ }, restProps));
4058
+ });
4059
+ MessageComposerTextarea.displayName = 'MessageComposerTextarea';
4060
+ var MessageComposerSend = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4061
+ var className = props.className,
4062
+ _onMouseDown = props.onMouseDown,
4063
+ restProps = __rest(props, ["className", "onMouseDown"]);
4064
+ return (0,jsx_runtime_.jsx)("button", __assign({
4065
+ ref: ref,
4066
+ className: (0,classNames/* classNames */.x)('nuri-theme base-message-composer send', className),
4067
+ type: 'button'
4068
+ }, restProps, {
4069
+ // 눌러도 입력 칸 포커스를 빼앗지 않는다(휴대폰 자판이 닫히지 않게). 넘겨받은 onMouseDown 이 덮지 않게 spread 뒤에 둔다.
4070
+ onMouseDown: function onMouseDown(e) {
4071
+ e.preventDefault();
4072
+ _onMouseDown === null || _onMouseDown === void 0 ? void 0 : _onMouseDown(e);
4073
+ }
4074
+ }));
4075
+ });
4076
+ MessageComposerSend.displayName = 'MessageComposerSend';
4077
+ var MessageComposerRoot = Object.assign(MessageComposerRootBase, {
4078
+ Textarea: MessageComposerTextarea,
4079
+ Send: MessageComposerSend
4080
+ });
4081
+ /* harmony default export */ const base_message_composer = (MessageComposerRoot);
4082
+ ;// ./components/message-composer/message-composer-props.ts
4083
+ var messageComposerProps = {};
4084
+ ;// ./components/message-composer/message-composer.tsx
4085
+ var message_composer_assign = undefined && undefined.__assign || function () {
4086
+ message_composer_assign = Object.assign || function (t) {
4087
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4088
+ s = arguments[i];
4089
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
4090
+ }
4091
+ return t;
4092
+ };
4093
+ return message_composer_assign.apply(this, arguments);
4094
+ };
4095
+ var message_composer_rest = undefined && undefined.__rest || function (s, e) {
4096
+ var t = {};
4097
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4098
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4099
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4100
+ }
4101
+ return t;
4102
+ };
4103
+
4104
+
4105
+
4106
+
4107
+
4108
+
4109
+
4110
+
4111
+
4112
+
4113
+ /** 대화 입력 줄. Enter 는 줄바꿈이고 보내기는 버튼으로만 한다. 보낸 뒤 값을 비우는 것은 쓰는 쪽이다 */
4114
+ var MessageComposer = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4115
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, messageComposerProps),
4116
+ className = _a.className,
4117
+ valueProp = _a.value,
4118
+ defaultValue = _a.defaultValue,
4119
+ onValueChange = _a.onValueChange,
4120
+ onSend = _a.onSend,
4121
+ canSend = _a.canSend,
4122
+ loading = _a.loading,
4123
+ placeholder = _a.placeholder,
4124
+ label = _a.label,
4125
+ sendLabel = _a.sendLabel,
4126
+ leading = _a.leading,
4127
+ attachments = _a.attachments,
4128
+ disabled = _a.disabled,
4129
+ track = _a.track,
4130
+ trackProps = _a.trackProps,
4131
+ restProps = message_composer_rest(_a, ["className", "value", "defaultValue", "onValueChange", "onSend", "canSend", "loading", "placeholder", "label", "sendLabel", "leading", "attachments", "disabled", "track", "trackProps"]);
4132
+ var _b = (0,useExternalState/* useExternalState */.C)({
4133
+ prop: valueProp,
4134
+ handler: onValueChange,
4135
+ defaultProp: defaultValue !== null && defaultValue !== void 0 ? defaultValue : ''
4136
+ }),
4137
+ value = _b[0],
4138
+ setValue = _b[1];
4139
+ var emit = (0,useTrack/* useTrack */.n)('MessageComposer', {
4140
+ track: track,
4141
+ trackProps: trackProps
4142
+ });
4143
+ var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useState)(false),
4144
+ rejecting = _c[0],
4145
+ setRejecting = _c[1];
4146
+ var blocked = disabled || !(canSend !== null && canSend !== void 0 ? canSend : value.trim() !== '');
4147
+ var handleSend = function handleSend() {
4148
+ if (loading) return;
4149
+ if (blocked) {
4150
+ setRejecting(true);
4151
+ return;
4152
+ }
4153
+ emit('click');
4154
+ onSend(value);
4155
+ };
4156
+ return (0,jsx_runtime_.jsxs)(base_message_composer, message_composer_assign({
4157
+ ref: ref,
4158
+ className: (0,classNames/* classNames */.x)(className, 'message-composer')
4159
+ }, restProps, {
4160
+ children: [attachments && (0,jsx_runtime_.jsx)("div", {
4161
+ className: 'message-composer-attachments',
4162
+ children: attachments
4163
+ }), (0,jsx_runtime_.jsxs)("div", {
4164
+ className: 'message-composer-row',
4165
+ children: [leading, (0,jsx_runtime_.jsx)(base_message_composer.Textarea, {
4166
+ className: 'message-composer-textarea',
4167
+ "aria-label": label,
4168
+ placeholder: placeholder,
4169
+ disabled: disabled,
4170
+ value: value,
4171
+ onChange: function onChange(e) {
4172
+ return setValue(e.target.value);
4173
+ }
4174
+ }), (0,jsx_runtime_.jsx)(base_message_composer.Send, {
4175
+ className: 'message-composer-send',
4176
+ "aria-label": sendLabel,
4177
+ "aria-disabled": blocked || undefined,
4178
+ "aria-busy": loading || undefined,
4179
+ "data-rejecting": rejecting || undefined,
4180
+ onClick: handleSend,
4181
+ // 막힌 누름마다 흔들림을 처음부터 다시 돌리려고, 끝나면 표시를 지운다
4182
+ onAnimationEnd: function onAnimationEnd() {
4183
+ return setRejecting(false);
4184
+ },
4185
+ children: (0,jsx_runtime_.jsx)("span", {
4186
+ className: 'message-composer-send-circle',
4187
+ children: loading ? (0,jsx_runtime_.jsx)(spinner/* default */.A, {
4188
+ className: 'message-composer-spinner'
4189
+ }) : (0,jsx_runtime_.jsx)(icon/* default */.A, {
4190
+ name: 'paper-plane-tilt',
4191
+ weight: 'fill',
4192
+ size: 's'
4193
+ })
4194
+ })
4195
+ })]
4196
+ })]
4197
+ }));
4198
+ });
4199
+ MessageComposer.displayName = 'MessageComposer';
4200
+ /* harmony default export */ const message_composer = (MessageComposer);
4201
+
4202
+ /***/ },
4203
+
4204
+ /***/ 345
4205
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
4206
+
4207
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
4208
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
4209
+ /* harmony export */ });
4210
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
4211
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
4212
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
4213
+ var __assign = undefined && undefined.__assign || function () {
4214
+ __assign = Object.assign || function (t) {
4215
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4216
+ s = arguments[i];
4217
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
4218
+ }
4219
+ return t;
4220
+ };
4221
+ return __assign.apply(this, arguments);
4222
+ };
4223
+ var __rest = undefined && undefined.__rest || function (s, e) {
4224
+ var t = {};
4225
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4226
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4227
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4228
+ }
4229
+ return t;
4230
+ };
4231
+
4232
+
4233
+
4234
+ var MessageRootBase = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
4235
+ var className = props.className,
4236
+ restProps = __rest(props, ["className"]);
4237
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("ol", __assign({
4238
+ ref: ref,
4239
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)('nuri-theme base-message root', className)
4240
+ }, restProps));
4241
+ });
4242
+ MessageRootBase.displayName = 'MessageRoot';
4243
+ /** 대화 한 줄. 메시지와 상태 줄이 모두 이것이다 */
4244
+ var MessageItem = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
4245
+ var className = props.className,
4246
+ restProps = __rest(props, ["className"]);
4247
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("li", __assign({
4248
+ ref: ref,
4249
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)('nuri-theme base-message item', className)
4250
+ }, restProps));
4251
+ });
4252
+ MessageItem.displayName = 'MessageItem';
4253
+ var MessageBubble = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
4254
+ var className = props.className,
4255
+ restProps = __rest(props, ["className"]);
4256
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({
4257
+ ref: ref,
4258
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)('nuri-theme base-message bubble', className)
4259
+ }, restProps));
4260
+ });
4261
+ MessageBubble.displayName = 'MessageBubble';
4262
+ var MessageRoot = Object.assign(MessageRootBase, {
4263
+ Item: MessageItem,
4264
+ Bubble: MessageBubble
4265
+ });
4266
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MessageRoot);
4267
+
4268
+ /***/ },
4269
+
4270
+ /***/ 6524
4271
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
4272
+
4273
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
4274
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
4275
+ /* harmony export */ });
4276
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
4277
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
4278
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
4279
+ /* harmony import */ var _base_message__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(345);
4280
+ var __assign = undefined && undefined.__assign || function () {
4281
+ __assign = Object.assign || function (t) {
4282
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4283
+ s = arguments[i];
4284
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
4285
+ }
4286
+ return t;
4287
+ };
4288
+ return __assign.apply(this, arguments);
4289
+ };
4290
+ var __rest = undefined && undefined.__rest || function (s, e) {
4291
+ var t = {};
4292
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4293
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4294
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4295
+ }
4296
+ return t;
4297
+ };
4298
+
4299
+
2755
4300
 
2756
- /** 꺼짐은 선(regular), 켜짐·강조는 채움(fill) */
2757
- var weight = (/* unused pure expression or super */ null && (['regular', 'fill']));
2758
- var sizes = ['xs', 's', 'm', 'l', 'xl'];
2759
- var iconProps = {
2760
- size: (0,_helpers_props_common_props__WEBPACK_IMPORTED_MODULE_0__/* .sizeProp */ .lw)(sizes, 'l')
2761
- };
4301
+
4302
+ /** 대화 가운데 상태·날짜 줄. MessageThread 안에 둔다 */
4303
+ var MessageEvent = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
4304
+ var className = props.className,
4305
+ restProps = __rest(props, ["className"]);
4306
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_message__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A.Item, __assign({
4307
+ ref: ref,
4308
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'message-event')
4309
+ }, restProps));
4310
+ });
4311
+ MessageEvent.displayName = 'MessageEvent';
4312
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MessageEvent);
2762
4313
 
2763
4314
  /***/ },
2764
4315
 
2765
- /***/ 3547
4316
+ /***/ 6178
2766
4317
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2767
4318
 
2768
4319
  /* harmony export */ __nuri_require__.d(__webpack_exports__, {
@@ -2771,9 +4322,7 @@ var iconProps = {
2771
4322
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
2772
4323
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
2773
4324
  /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
2774
- /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(7335);
2775
- /* harmony import */ var _base_icon__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(9896);
2776
- /* harmony import */ var _icon_props__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(6722);
4325
+ /* harmony import */ var _base_message__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(345);
2777
4326
  var __assign = undefined && undefined.__assign || function () {
2778
4327
  __assign = Object.assign || function (t) {
2779
4328
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -2796,29 +4345,27 @@ var __rest = undefined && undefined.__rest || function (s, e) {
2796
4345
 
2797
4346
 
2798
4347
 
2799
-
2800
-
2801
- var Icon = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
2802
- var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__/* .getMergedProps */ .p)(props, _icon_props__WEBPACK_IMPORTED_MODULE_5__/* .iconProps */ .u1),
2803
- className = _a.className,
2804
- restProps = __rest(_a, ["className"]);
2805
- return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_icon__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, __assign({
4348
+ /** 대화 목록. children 은 Message · MessageEvent 다 */
4349
+ var MessageThread = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
4350
+ var className = props.className,
4351
+ restProps = __rest(props, ["className"]);
4352
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_message__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A, __assign({
2806
4353
  ref: ref,
2807
- className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'icon')
4354
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'message-thread')
2808
4355
  }, restProps));
2809
4356
  });
2810
- Icon.displayName = 'Icon';
2811
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Icon);
4357
+ MessageThread.displayName = 'MessageThread';
4358
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MessageThread);
2812
4359
 
2813
4360
  /***/ },
2814
4361
 
2815
- /***/ 6302
4362
+ /***/ 8154
2816
4363
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2817
4364
 
2818
4365
 
2819
4366
  // EXPORTS
2820
4367
  __nuri_require__.d(__webpack_exports__, {
2821
- A: () => (/* binding */ spinner)
4368
+ A: () => (/* binding */ message)
2822
4369
  });
2823
4370
 
2824
4371
  // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
@@ -2829,7 +4376,27 @@ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ =
2829
4376
  var classNames = __nuri_require__(3274);
2830
4377
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
2831
4378
  var getMergedProps = __nuri_require__(7335);
2832
- ;// ./components/loading/spinner/base-spinner.tsx
4379
+ // EXTERNAL MODULE: ./components/message/base-message.tsx
4380
+ var base_message = __nuri_require__(345);
4381
+ ;// ./components/message/message-props.ts
4382
+ /** 말풍선 자리. `end` 는 내가 보낸 메시지다 */
4383
+ var side = ['start', 'end'];
4384
+ /** 등장 모션 세기(ADR 0008). 방금 보내거나 받은 메시지에만 준다 */
4385
+ var motion = ['weak', 'strong'];
4386
+ var messageProps = {
4387
+ side: {
4388
+ type: 'className',
4389
+ className: 'side',
4390
+ values: side,
4391
+ "default": 'start'
4392
+ },
4393
+ motion: {
4394
+ type: 'className',
4395
+ className: 'motion',
4396
+ values: motion
4397
+ }
4398
+ };
4399
+ ;// ./components/message/message.tsx
2833
4400
  var __assign = undefined && undefined.__assign || function () {
2834
4401
  __assign = Object.assign || function (t) {
2835
4402
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -2851,139 +4418,43 @@ var __rest = undefined && undefined.__rest || function (s, e) {
2851
4418
 
2852
4419
 
2853
4420
 
2854
- var BaseSpinner = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2855
- var className = props.className,
2856
- restProps = __rest(props, ["className"]);
2857
- return (0,jsx_runtime_.jsx)("div", __assign({
2858
- ref: ref,
2859
- className: (0,classNames/* classNames */.x)('nuri-theme base-spinner', className)
2860
- }, restProps, {
2861
- children: (0,jsx_runtime_.jsx)("div", {
2862
- className: 'loading-indicator-ring',
2863
- children: [0, 1, 2, 3].map(function (i) {
2864
- return (0,jsx_runtime_.jsx)("div", {
2865
- className: 'loading-indicator-single-ring'
2866
- }, i);
2867
- })
2868
- })
2869
- }));
2870
- });
2871
- BaseSpinner.displayName = 'BaseSpinner';
2872
- /* harmony default export */ const base_spinner = (BaseSpinner);
2873
- ;// ./components/loading/spinner/spinner-props.ts
2874
- var spinnerProps = {};
2875
- ;// ./components/loading/spinner/spinner.tsx
2876
- var spinner_assign = undefined && undefined.__assign || function () {
2877
- spinner_assign = Object.assign || function (t) {
2878
- for (var s, i = 1, n = arguments.length; i < n; i++) {
2879
- s = arguments[i];
2880
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2881
- }
2882
- return t;
2883
- };
2884
- return spinner_assign.apply(this, arguments);
2885
- };
2886
- var spinner_rest = undefined && undefined.__rest || function (s, e) {
2887
- var t = {};
2888
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2889
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2890
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2891
- }
2892
- return t;
2893
- };
2894
-
2895
-
2896
-
2897
4421
 
2898
4422
 
2899
4423
 
2900
- var Spinner = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2901
- var _a = (0,getMergedProps/* getMergedProps */.p)(props, spinnerProps),
4424
+ /** 말풍선 하나. MessageThread 안에 둔다 */
4425
+ var Message = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4426
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, messageProps),
2902
4427
  className = _a.className,
2903
- restProps = spinner_rest(_a, ["className"]);
2904
- return (0,jsx_runtime_.jsx)(base_spinner, spinner_assign({
4428
+ name = _a.name,
4429
+ time = _a.time,
4430
+ dateTime = _a.dateTime,
4431
+ media = _a.media,
4432
+ children = _a.children,
4433
+ restProps = __rest(_a, ["className", "name", "time", "dateTime", "media", "children"]);
4434
+ // 글 없이 썸네일만 있으면 안쪽 여백을 줄인다
4435
+ var mediaOnly = Boolean(media) && !children;
4436
+ return (0,jsx_runtime_.jsxs)(base_message/* default */.A.Item, __assign({
2905
4437
  ref: ref,
2906
- className: (0,classNames/* classNames */.x)(className, 'component-loading-container')
2907
- }, restProps));
4438
+ className: (0,classNames/* classNames */.x)(className, 'message')
4439
+ }, restProps, {
4440
+ children: [name && (0,jsx_runtime_.jsx)("span", {
4441
+ className: 'message-name',
4442
+ children: name
4443
+ }), (0,jsx_runtime_.jsxs)("div", {
4444
+ className: 'message-row',
4445
+ children: [(0,jsx_runtime_.jsxs)(base_message/* default */.A.Bubble, {
4446
+ className: (0,classNames/* classNames */.x)('message-bubble', mediaOnly && 'media-only'),
4447
+ children: [children, media]
4448
+ }), time && (0,jsx_runtime_.jsx)("time", {
4449
+ className: 'message-time',
4450
+ dateTime: dateTime,
4451
+ children: time
4452
+ })]
4453
+ })]
4454
+ }));
2908
4455
  });
2909
- Spinner.displayName = 'Spinner';
2910
- /* harmony default export */ const spinner = (Spinner);
2911
-
2912
- /***/ },
2913
-
2914
- /***/ 4804
2915
- (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2916
-
2917
- /* harmony export */ __nuri_require__.d(__webpack_exports__, {
2918
- /* harmony export */ _: () => (/* binding */ LogProvider),
2919
- /* harmony export */ e: () => (/* binding */ useLogEmitter)
2920
- /* harmony export */ });
2921
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
2922
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
2923
- var _a;
2924
-
2925
-
2926
- // 진입점(`/logging`, `/cta-button`, 루트)마다 이 파일이 따로 들어가므로 context 는 전역 키 하나에 둔다.
2927
- var CONTEXT_KEY = Symbol["for"]('@nurihaus/web-design-system/log-provider');
2928
- var registry = globalThis;
2929
- var LogContext = (_a = registry[CONTEXT_KEY]) !== null && _a !== void 0 ? _a : registry[CONTEXT_KEY] = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
2930
- var LogProvider = function LogProvider(props) {
2931
- var onEvent = props.onEvent,
2932
- children = props.children;
2933
- // context 값이 Provider 렌더마다 바뀌면 track 을 단 컴포넌트가 모두 다시 그려진다. 최신 onEvent 는 ref 로 읽는다.
2934
- var onEventRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(onEvent);
2935
- onEventRef.current = onEvent;
2936
- var emit = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function (event) {
2937
- // 로그 수집기가 던져도 클릭·열기 같은 UI 동작은 이어져야 한다.
2938
- try {
2939
- onEventRef.current(event);
2940
- } catch (error) {
2941
- console.error('[LogProvider] onEvent threw', error);
2942
- }
2943
- }, []);
2944
- return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogContext.Provider, {
2945
- value: emit,
2946
- children: children
2947
- });
2948
- };
2949
- LogProvider.displayName = 'LogProvider';
2950
- /** LogProvider 가 둔 emit 함수. Provider 밖이면 null 이다. */
2951
- var useLogEmitter = function useLogEmitter() {
2952
- return (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(LogContext);
2953
- };
2954
-
2955
- /***/ },
2956
-
2957
- /***/ 7111
2958
- (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2959
-
2960
- /* harmony export */ __nuri_require__.d(__webpack_exports__, {
2961
- /* harmony export */ e: () => (/* binding */ useLog)
2962
- /* harmony export */ });
2963
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(1041);
2964
- /* harmony import */ var _log_context__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(4804);
2965
- var __assign = undefined && undefined.__assign || function () {
2966
- __assign = Object.assign || function (t) {
2967
- for (var s, i = 1, n = arguments.length; i < n; i++) {
2968
- s = arguments[i];
2969
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2970
- }
2971
- return t;
2972
- };
2973
- return __assign.apply(this, arguments);
2974
- };
2975
-
2976
-
2977
-
2978
- /** 컴포넌트 밖의 사용 로그를 남긴다. LogProvider 밖이면 아무것도 하지 않는다. */
2979
- var useLog = function useLog() {
2980
- var emit = (0,_log_context__WEBPACK_IMPORTED_MODULE_1__/* .useLogEmitter */ .e)();
2981
- return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (event) {
2982
- return emit === null || emit === void 0 ? void 0 : emit(__assign(__assign({}, event), {
2983
- timestamp: Date.now()
2984
- }));
2985
- }, [emit]);
2986
- };
4456
+ Message.displayName = 'Message';
4457
+ /* harmony default export */ const message = (Message);
2987
4458
 
2988
4459
  /***/ },
2989
4460
 
@@ -3360,29 +4831,181 @@ var Modal = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(funct
3360
4831
  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Title, {
3361
4832
  className: 'modal-title',
3362
4833
  children: title
3363
- }), showCloseIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Close, {
3364
- className: 'modal-close-icon',
3365
- "aria-label": "\uB2EB\uAE30",
3366
- asChild: true,
3367
- children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_button_base_button__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {
3368
- children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_assets_icons_multifly_svg__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, {})
3369
- })
4834
+ }), showCloseIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Close, {
4835
+ className: 'modal-close-icon',
4836
+ "aria-label": "\uB2EB\uAE30",
4837
+ asChild: true,
4838
+ children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_button_base_button__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {
4839
+ children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_assets_icons_multifly_svg__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, {})
4840
+ })
4841
+ })]
4842
+ }), description && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Description, {
4843
+ className: 'modal-description',
4844
+ children: description
4845
+ }), children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
4846
+ className: 'modal-body',
4847
+ children: children
4848
+ }), footer && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
4849
+ className: 'modal-footer',
4850
+ children: footer
4851
+ })]
4852
+ })]
4853
+ });
4854
+ });
4855
+ Modal.displayName = 'Modal';
4856
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Modal);
4857
+
4858
+ /***/ },
4859
+
4860
+ /***/ 2980
4861
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
4862
+
4863
+
4864
+ // EXPORTS
4865
+ __nuri_require__.d(__webpack_exports__, {
4866
+ A: () => (/* binding */ notice)
4867
+ });
4868
+
4869
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
4870
+ var jsx_runtime_ = __nuri_require__(612);
4871
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4872
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4873
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
4874
+ var classNames = __nuri_require__(3274);
4875
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
4876
+ var getMergedProps = __nuri_require__(7335);
4877
+ // EXTERNAL MODULE: ./components/button/cta-button.tsx
4878
+ var cta_button = __nuri_require__(910);
4879
+ // EXTERNAL MODULE: ./components/icon/icon.tsx
4880
+ var icon = __nuri_require__(3547);
4881
+ ;// ./components/notice/base-notice.tsx
4882
+ var __assign = undefined && undefined.__assign || function () {
4883
+ __assign = Object.assign || function (t) {
4884
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4885
+ s = arguments[i];
4886
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
4887
+ }
4888
+ return t;
4889
+ };
4890
+ return __assign.apply(this, arguments);
4891
+ };
4892
+ var __rest = undefined && undefined.__rest || function (s, e) {
4893
+ var t = {};
4894
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4895
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4896
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4897
+ }
4898
+ return t;
4899
+ };
4900
+
4901
+
4902
+
4903
+ var BaseNotice = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4904
+ var className = props.className,
4905
+ restProps = __rest(props, ["className"]);
4906
+ return (0,jsx_runtime_.jsx)("div", __assign({
4907
+ ref: ref,
4908
+ className: (0,classNames/* classNames */.x)('nuri-theme base-notice', className)
4909
+ }, restProps));
4910
+ });
4911
+ BaseNotice.displayName = 'BaseNotice';
4912
+ /* harmony default export */ const base_notice = (BaseNotice);
4913
+ ;// ./components/notice/notice-props.ts
4914
+ var variant = ['neutral', 'success', 'warning', 'danger'];
4915
+ /** 나타날 때 모션 세기. 주지 않으면 움직이지 않는다 (ADR 0008) */
4916
+ var motion = ['weak', 'strong'];
4917
+ var noticeProps = {
4918
+ variant: {
4919
+ type: 'className',
4920
+ className: 'variant',
4921
+ values: variant,
4922
+ "default": 'neutral'
4923
+ },
4924
+ motion: {
4925
+ type: 'className',
4926
+ className: 'motion',
4927
+ values: motion
4928
+ }
4929
+ };
4930
+ ;// ./components/notice/notice.tsx
4931
+ var notice_assign = undefined && undefined.__assign || function () {
4932
+ notice_assign = Object.assign || function (t) {
4933
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4934
+ s = arguments[i];
4935
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
4936
+ }
4937
+ return t;
4938
+ };
4939
+ return notice_assign.apply(this, arguments);
4940
+ };
4941
+ var notice_rest = undefined && undefined.__rest || function (s, e) {
4942
+ var t = {};
4943
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4944
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
4945
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
4946
+ }
4947
+ return t;
4948
+ };
4949
+
4950
+
4951
+
4952
+
4953
+
4954
+
4955
+
4956
+
4957
+ var VARIANT_ICON = {
4958
+ neutral: 'info',
4959
+ success: 'check-circle',
4960
+ warning: 'warning',
4961
+ danger: 'warning'
4962
+ };
4963
+ /** 카드·시트 안에 머무는 안내. 스스로 사라지는 알림은 Toast 다 */
4964
+ var Notice = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4965
+ var _a;
4966
+ var _b = (0,getMergedProps/* getMergedProps */.p)(props, noticeProps),
4967
+ className = _b.className,
4968
+ title = _b.title,
4969
+ children = _b.children,
4970
+ action = _b.action,
4971
+ restProps = notice_rest(_b, ["className", "title", "children", "action"]);
4972
+ var variant = (_a = props.variant) !== null && _a !== void 0 ? _a : 'neutral';
4973
+ return (0,jsx_runtime_.jsxs)(base_notice, notice_assign({
4974
+ ref: ref,
4975
+ className: (0,classNames/* classNames */.x)(className, 'notice'),
4976
+ // danger 는 바로 읽어 준다. 쓰는 쪽이 role 을 주면 그 값이 앞선다
4977
+ role: variant === 'danger' ? 'alert' : undefined
4978
+ }, restProps, {
4979
+ children: [(0,jsx_runtime_.jsx)(icon/* default */.A, {
4980
+ className: 'notice-icon',
4981
+ name: VARIANT_ICON[variant],
4982
+ size: 's',
4983
+ weight: 'fill'
4984
+ }), (0,jsx_runtime_.jsxs)("div", {
4985
+ className: 'notice-body',
4986
+ children: [(0,jsx_runtime_.jsxs)("div", {
4987
+ className: 'notice-text',
4988
+ children: [title && (0,jsx_runtime_.jsx)("div", {
4989
+ className: 'notice-title',
4990
+ children: title
4991
+ }), (0,jsx_runtime_.jsx)("div", {
4992
+ className: 'notice-description',
4993
+ children: children
3370
4994
  })]
3371
- }), description && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Description, {
3372
- className: 'modal-description',
3373
- children: description
3374
- }), children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
3375
- className: 'modal-body',
3376
- children: children
3377
- }), footer && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
3378
- className: 'modal-footer',
3379
- children: footer
4995
+ }), action && (0,jsx_runtime_.jsx)(cta_button/* default */.A, {
4996
+ className: 'notice-action',
4997
+ size: 'xs',
4998
+ variant: 'neutral',
4999
+ text: action.label,
5000
+ onClick: action.onClick,
5001
+ track: action.track,
5002
+ trackProps: action.trackProps
3380
5003
  })]
3381
5004
  })]
3382
- });
5005
+ }));
3383
5006
  });
3384
- Modal.displayName = 'Modal';
3385
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Modal);
5007
+ Notice.displayName = 'Notice';
5008
+ /* harmony default export */ const notice = (Notice);
3386
5009
 
3387
5010
  /***/ },
3388
5011
 
@@ -3662,6 +5285,24 @@ var base_button = __nuri_require__(8933);
3662
5285
  // EXTERNAL MODULE: ./components/core/composer/index.tsx
3663
5286
  var composer = __nuri_require__(2777);
3664
5287
  ;// ./components/radio/base-radio.tsx
5288
+ var __assign = undefined && undefined.__assign || function () {
5289
+ __assign = Object.assign || function (t) {
5290
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5291
+ s = arguments[i];
5292
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
5293
+ }
5294
+ return t;
5295
+ };
5296
+ return __assign.apply(this, arguments);
5297
+ };
5298
+ var __rest = undefined && undefined.__rest || function (s, e) {
5299
+ var t = {};
5300
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
5301
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
5302
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
5303
+ }
5304
+ return t;
5305
+ };
3665
5306
 
3666
5307
 
3667
5308
 
@@ -3703,13 +5344,15 @@ RadioRootBase.displayName = 'RadioRoot';
3703
5344
  var RadioOptionGroup = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3704
5345
  var children = props.children,
3705
5346
  asChild = props.asChild,
3706
- className = props.className;
5347
+ className = props.className,
5348
+ restProps = __rest(props, ["children", "asChild", "className"]);
3707
5349
  var Comp = asChild ? composer/* default */.A : 'ul';
3708
- return (0,jsx_runtime_.jsx)(Comp, {
5350
+ return (0,jsx_runtime_.jsx)(Comp, __assign({
3709
5351
  ref: ref,
3710
- className: (0,classNames/* classNames */.x)('nuri-theme base-radio option-group', className),
5352
+ className: (0,classNames/* classNames */.x)('nuri-theme base-radio option-group', className)
5353
+ }, restProps, {
3711
5354
  children: children
3712
- });
5355
+ }));
3713
5356
  });
3714
5357
  RadioOptionGroup.displayName = 'RadioOptionGroup';
3715
5358
  var RadioButton = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
@@ -3733,6 +5376,31 @@ var RadioButton = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_r
3733
5376
  });
3734
5377
  });
3735
5378
  RadioButton.displayName = 'RadioButton';
5379
+ // 칩 전체가 라디오 하나다. 점 없이 라벨만 그리고 role·aria-checked 로 선택을 알린다.
5380
+ var RadioChip = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
5381
+ var className = props.className,
5382
+ id = props.id,
5383
+ disabled = props.disabled,
5384
+ restProps = __rest(props, ["className", "id", "disabled"]);
5385
+ var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useContext)(RadioContext),
5386
+ selected = _a.selected,
5387
+ onChange = _a.onChange;
5388
+ var checked = id === selected;
5389
+ return (0,jsx_runtime_.jsx)(base_button/* default */.A, __assign({
5390
+ ref: ref,
5391
+ className: (0,classNames/* classNames */.x)('nuri-theme base-radio chip', className),
5392
+ type: 'button',
5393
+ role: 'radio',
5394
+ "aria-checked": checked,
5395
+ "data-state": checked ? 'checked' : 'unchecked',
5396
+ disabled: disabled,
5397
+ "data-disabled": disabled || undefined,
5398
+ onClick: function onClick() {
5399
+ return onChange(id);
5400
+ }
5401
+ }, restProps));
5402
+ });
5403
+ RadioChip.displayName = 'RadioChip';
3736
5404
  var RadioIndicator = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3737
5405
  var children = props.children,
3738
5406
  asChild = props.asChild,
@@ -3771,13 +5439,21 @@ RadioLabel.displayName = 'RadioLabel';
3771
5439
  var RadioRoot = Object.assign(RadioRootBase, {
3772
5440
  OptionGroup: RadioOptionGroup,
3773
5441
  Button: RadioButton,
5442
+ Chip: RadioChip,
3774
5443
  Indicator: RadioIndicator,
3775
5444
  Label: RadioLabel
3776
5445
  });
3777
5446
  /* harmony default export */ const base_radio = (RadioRoot);
3778
5447
  ;// ./components/radio/radio-props.ts
3779
- // CSS 가 아직 크기·방향을 나누지 않아 className 으로 바뀌는 prop 이 없다.
3780
- var radioProps = {};
5448
+ var variant = ['default', 'chip'];
5449
+ var radioProps = {
5450
+ variant: {
5451
+ type: 'className',
5452
+ className: 'variant',
5453
+ values: variant,
5454
+ "default": 'default'
5455
+ }
5456
+ };
3781
5457
  ;// ./components/radio/radio.tsx
3782
5458
 
3783
5459
 
@@ -3786,18 +5462,60 @@ var radioProps = {};
3786
5462
 
3787
5463
 
3788
5464
 
5465
+ // 칩은 버튼 자체가 role='radio' 라 li 는 목록 의미를 빼고 자리만 잡는다.
5466
+ var ChipOption = function ChipOption(props) {
5467
+ var option = props.option;
5468
+ return (0,jsx_runtime_.jsx)("li", {
5469
+ className: 'radio radio-option',
5470
+ role: 'none',
5471
+ children: (0,jsx_runtime_.jsx)(base_radio.Chip, {
5472
+ className: 'radio radio-chip',
5473
+ id: option.id,
5474
+ disabled: option.disabled,
5475
+ children: option.label
5476
+ })
5477
+ });
5478
+ };
5479
+ ChipOption.displayName = 'RadioChipOption';
5480
+ var DefaultOption = function DefaultOption(props) {
5481
+ var option = props.option;
5482
+ return (0,jsx_runtime_.jsxs)("li", {
5483
+ className: 'radio radio-option',
5484
+ children: [(0,jsx_runtime_.jsx)(base_radio.Button, {
5485
+ className: 'radio radio-button',
5486
+ id: option.id,
5487
+ disabled: option.disabled,
5488
+ children: (0,jsx_runtime_.jsx)(base_radio.Indicator, {
5489
+ className: 'radio radio-indicator',
5490
+ id: option.id,
5491
+ asChild: true,
5492
+ children: (0,jsx_runtime_.jsx)("div", {})
5493
+ })
5494
+ }), (0,jsx_runtime_.jsx)(base_radio.Label, {
5495
+ className: 'radio radio-label',
5496
+ id: option.id,
5497
+ disabled: option.disabled,
5498
+ children: option.label
5499
+ })]
5500
+ });
5501
+ };
5502
+ DefaultOption.displayName = 'RadioDefaultOption';
3789
5503
  var Radio = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3790
5504
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, radioProps),
3791
5505
  className = _a.className,
3792
5506
  selected = _a.selected,
3793
5507
  _onChange = _a.onChange,
3794
5508
  options = _a.options,
5509
+ label = _a.label,
3795
5510
  track = _a.track,
3796
5511
  trackProps = _a.trackProps;
5512
+ // getMergedProps 가 variant 를 클래스로 바꾸며 지우므로 원래 props 에서 읽는다.
5513
+ var isChip = props.variant === 'chip';
3797
5514
  var emit = (0,useTrack/* useTrack */.n)('Radio', {
3798
5515
  track: track,
3799
5516
  trackProps: trackProps
3800
5517
  });
5518
+ var Option = isChip ? ChipOption : DefaultOption;
3801
5519
  return (0,jsx_runtime_.jsx)(base_radio, {
3802
5520
  options: options,
3803
5521
  selected: selected,
@@ -3808,25 +5526,12 @@ var Radio = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_a
3808
5526
  children: (0,jsx_runtime_.jsx)(base_radio.OptionGroup, {
3809
5527
  ref: ref,
3810
5528
  className: (0,classNames/* classNames */.x)(className, 'radio radio-group'),
5529
+ // 칩은 버튼마다 role='radio' 라 묶음도 radiogroup 이다. 기본형은 목록 그대로 둔다.
5530
+ role: isChip ? 'radiogroup' : undefined,
5531
+ "aria-label": label,
3811
5532
  children: options.map(function (option) {
3812
- return (0,jsx_runtime_.jsxs)("li", {
3813
- className: 'radio radio-option',
3814
- children: [(0,jsx_runtime_.jsx)(base_radio.Button, {
3815
- className: 'radio radio-button',
3816
- id: option.id,
3817
- disabled: option.disabled,
3818
- children: (0,jsx_runtime_.jsx)(base_radio.Indicator, {
3819
- className: 'radio radio-indicator',
3820
- id: option.id,
3821
- asChild: true,
3822
- children: (0,jsx_runtime_.jsx)("div", {})
3823
- })
3824
- }), (0,jsx_runtime_.jsx)(base_radio.Label, {
3825
- className: 'radio radio-label',
3826
- id: option.id,
3827
- disabled: option.disabled,
3828
- children: option.label
3829
- })]
5533
+ return (0,jsx_runtime_.jsx)(Option, {
5534
+ option: option
3830
5535
  }, option.id);
3831
5536
  })
3832
5537
  })
@@ -4774,6 +6479,139 @@ Tabs.displayName = 'Tabs';
4774
6479
 
4775
6480
  /***/ },
4776
6481
 
6482
+ /***/ 8205
6483
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
6484
+
6485
+
6486
+ // EXPORTS
6487
+ __nuri_require__.d(__webpack_exports__, {
6488
+ A: () => (/* binding */ tag)
6489
+ });
6490
+
6491
+ // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","module":"react/jsx-runtime"}
6492
+ var jsx_runtime_ = __nuri_require__(612);
6493
+ // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
6494
+ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
6495
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
6496
+ var useTrack = __nuri_require__(4560);
6497
+ // EXTERNAL MODULE: ./helpers/utils/classNames.js
6498
+ var classNames = __nuri_require__(3274);
6499
+ // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
6500
+ var getMergedProps = __nuri_require__(7335);
6501
+ // EXTERNAL MODULE: ./components/icon/icon.tsx
6502
+ var icon = __nuri_require__(3547);
6503
+ ;// ./components/tag/base-tag.tsx
6504
+ var __assign = undefined && undefined.__assign || function () {
6505
+ __assign = Object.assign || function (t) {
6506
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6507
+ s = arguments[i];
6508
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6509
+ }
6510
+ return t;
6511
+ };
6512
+ return __assign.apply(this, arguments);
6513
+ };
6514
+ var __rest = undefined && undefined.__rest || function (s, e) {
6515
+ var t = {};
6516
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
6517
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
6518
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
6519
+ }
6520
+ return t;
6521
+ };
6522
+
6523
+
6524
+
6525
+ var TagRootBase = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
6526
+ var className = props.className,
6527
+ restProps = __rest(props, ["className"]);
6528
+ return (0,jsx_runtime_.jsx)("span", __assign({
6529
+ ref: ref,
6530
+ className: (0,classNames/* classNames */.x)('nuri-theme base-tag', className)
6531
+ }, restProps));
6532
+ });
6533
+ TagRootBase.displayName = 'TagRoot';
6534
+ var TagRemove = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
6535
+ var className = props.className,
6536
+ restProps = __rest(props, ["className"]);
6537
+ return (0,jsx_runtime_.jsx)("button", __assign({
6538
+ ref: ref,
6539
+ className: (0,classNames/* classNames */.x)('nuri-theme base-tag remove', className),
6540
+ type: 'button'
6541
+ }, restProps));
6542
+ });
6543
+ TagRemove.displayName = 'TagRemove';
6544
+ var TagRoot = Object.assign(TagRootBase, {
6545
+ Remove: TagRemove
6546
+ });
6547
+ /* harmony default export */ const base_tag = (TagRoot);
6548
+ ;// ./components/tag/tag-props.ts
6549
+ // 크기·변형이 없다. 태그는 한 모양이다(높이 --label-height-s).
6550
+ var tagProps = {};
6551
+ ;// ./components/tag/tag.tsx
6552
+ var tag_assign = undefined && undefined.__assign || function () {
6553
+ tag_assign = Object.assign || function (t) {
6554
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6555
+ s = arguments[i];
6556
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
6557
+ }
6558
+ return t;
6559
+ };
6560
+ return tag_assign.apply(this, arguments);
6561
+ };
6562
+ var tag_rest = undefined && undefined.__rest || function (s, e) {
6563
+ var t = {};
6564
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
6565
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
6566
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
6567
+ }
6568
+ return t;
6569
+ };
6570
+
6571
+
6572
+
6573
+
6574
+
6575
+
6576
+
6577
+
6578
+ /** 고른 값 하나. onRemove 를 주면 지우기 버튼이 붙는다 */
6579
+ var Tag = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
6580
+ var _a = (0,getMergedProps/* getMergedProps */.p)(props, tagProps),
6581
+ className = _a.className,
6582
+ text = _a.text,
6583
+ onRemove = _a.onRemove,
6584
+ removeLabel = _a.removeLabel,
6585
+ track = _a.track,
6586
+ trackProps = _a.trackProps,
6587
+ restProps = tag_rest(_a, ["className", "text", "onRemove", "removeLabel", "track", "trackProps"]);
6588
+ var emit = (0,useTrack/* useTrack */.n)('Tag', {
6589
+ track: track,
6590
+ trackProps: trackProps
6591
+ });
6592
+ return (0,jsx_runtime_.jsxs)(base_tag, tag_assign({
6593
+ ref: ref,
6594
+ className: (0,classNames/* classNames */.x)(className, 'tag', onRemove ? 'removable' : undefined)
6595
+ }, restProps, {
6596
+ children: [text, onRemove && (0,jsx_runtime_.jsx)(base_tag.Remove, {
6597
+ className: 'tag-remove',
6598
+ "aria-label": removeLabel,
6599
+ onClick: function onClick() {
6600
+ emit('click');
6601
+ onRemove();
6602
+ },
6603
+ children: (0,jsx_runtime_.jsx)(icon/* default */.A, {
6604
+ name: 'x',
6605
+ size: 'xs'
6606
+ })
6607
+ })]
6608
+ }));
6609
+ });
6610
+ Tag.displayName = 'Tag';
6611
+ /* harmony default export */ const tag = (Tag);
6612
+
6613
+ /***/ },
6614
+
4777
6615
  /***/ 4794
4778
6616
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
4779
6617
 
@@ -6039,7 +7877,7 @@ var x = (y) => {
6039
7877
  var x = {}; __nuri_require__.d(x, y); return x
6040
7878
  }
6041
7879
  var y = (x) => (() => (x))
6042
- module.exports = x({ ["Children"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.Children), ["Fragment"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.Fragment), ["cloneElement"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.cloneElement), ["createContext"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.createContext), ["createElement"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.createElement), ["forwardRef"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.forwardRef), ["isValidElement"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.isValidElement), ["useCallback"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useCallback), ["useContext"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useContext), ["useEffect"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useEffect), ["useImperativeHandle"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useImperativeHandle), ["useLayoutEffect"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useLayoutEffect), ["useRef"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useRef), ["useState"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useState) });
7880
+ module.exports = x({ ["Children"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.Children), ["Fragment"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.Fragment), ["cloneElement"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.cloneElement), ["createContext"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.createContext), ["createElement"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.createElement), ["forwardRef"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.forwardRef), ["isValidElement"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.isValidElement), ["useCallback"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useCallback), ["useContext"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useContext), ["useEffect"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useEffect), ["useId"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useId), ["useImperativeHandle"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useImperativeHandle), ["useLayoutEffect"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useLayoutEffect), ["useRef"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useRef), ["useState"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.useState) });
6043
7881
 
6044
7882
  /***/ },
6045
7883
 
@@ -6412,10 +8250,58 @@ var bottom_nav = __nuri_require__(1768);
6412
8250
  var step_progress = __nuri_require__(7131);
6413
8251
  // EXTERNAL MODULE: ./components/chip-group/chip-group.tsx + 2 modules
6414
8252
  var chip_group = __nuri_require__(3894);
8253
+ // EXTERNAL MODULE: ./components/card/card.tsx + 2 modules
8254
+ var card = __nuri_require__(329);
8255
+ // EXTERNAL MODULE: ./components/list/list-group.tsx
8256
+ var list_group = __nuri_require__(2779);
8257
+ // EXTERNAL MODULE: ./components/list/list-row.tsx
8258
+ var list_row = __nuri_require__(2082);
8259
+ // EXTERNAL MODULE: ./components/description-list/description-list.tsx + 2 modules
8260
+ var description_list = __nuri_require__(6143);
8261
+ // EXTERNAL MODULE: ./components/notice/notice.tsx + 2 modules
8262
+ var notice = __nuri_require__(2980);
8263
+ // EXTERNAL MODULE: ./components/empty-state/empty-state.tsx + 2 modules
8264
+ var empty_state = __nuri_require__(5589);
8265
+ // EXTERNAL MODULE: ./components/tag/tag.tsx + 2 modules
8266
+ var tag = __nuri_require__(8205);
8267
+ // EXTERNAL MODULE: ./components/message/message-thread.tsx
8268
+ var message_thread = __nuri_require__(6178);
8269
+ // EXTERNAL MODULE: ./components/message/message.tsx + 1 modules
8270
+ var message = __nuri_require__(8154);
8271
+ // EXTERNAL MODULE: ./components/message/message-event.tsx
8272
+ var message_event = __nuri_require__(6524);
8273
+ // EXTERNAL MODULE: ./components/message-composer/message-composer.tsx + 2 modules
8274
+ var message_composer = __nuri_require__(2045);
8275
+ // EXTERNAL MODULE: ./components/bottom-bar/bottom-bar.tsx + 2 modules
8276
+ var bottom_bar = __nuri_require__(3577);
8277
+ // EXTERNAL MODULE: ./components/media/media-thumbnail.tsx + 1 modules
8278
+ var media_thumbnail = __nuri_require__(946);
8279
+ // EXTERNAL MODULE: ./components/media/media-viewer.tsx
8280
+ var media_viewer = __nuri_require__(4268);
6415
8281
  // EXTERNAL MODULE: ./components/logging/logging.tsx
6416
8282
  var logging = __nuri_require__(7111);
6417
8283
  // EXTERNAL MODULE: ./components/logging/log-context.tsx
6418
8284
  var log_context = __nuri_require__(4804);
8285
+ ;// external "motion/react"
8286
+
8287
+ ;// ./components/motion/motion-provider.tsx
8288
+
8289
+
8290
+ // DOM 을 그리지 않아 base- 로 짓지 않는다. base-*.tsx 는 forwardRef 가 있어야 빌드를 통과한다(R2). log-context.tsx 와 같다.
8291
+ var MotionProvider = function MotionProvider(props) {
8292
+ var _a = props.reducedMotion,
8293
+ reducedMotion = _a === void 0 ? 'user' : _a,
8294
+ children = props.children;
8295
+ return (0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_motion_react_de020c0a_LazyMotion__, {
8296
+ features: __WEBPACK_EXTERNAL_MODULE_motion_react_de020c0a_domMax__,
8297
+ strict: true,
8298
+ children: (0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_motion_react_de020c0a_MotionConfig__, {
8299
+ reducedMotion: reducedMotion,
8300
+ children: children
8301
+ })
8302
+ });
8303
+ };
8304
+ MotionProvider.displayName = 'MotionProvider';
6419
8305
  ;// ./tokens/generated/primitive.ts
6420
8306
  // tokens/figma.json 에서 생성됨 — 손으로 고치지 않는다. `npm run tokens`
6421
8307
  var primitive = {
@@ -6788,6 +8674,160 @@ var semanticAdmin = {
6788
8674
  }
6789
8675
  }
6790
8676
  };
8677
+ ;// ./tokens/generated/motion.ts
8678
+ // tokens/motion.json 에서 생성됨 — 손으로 고치지 않는다. `yarn tokens`
8679
+ /** 원시값. 컴포넌트는 motionTokens 만 쓴다(빌드 R17). 시간은 초다(motion 의 transition 단위). */
8680
+ var motionPresets = {
8681
+ "duration": {
8682
+ "xs": 0.12,
8683
+ "s": 0.16,
8684
+ "m": 0.24,
8685
+ "l": 0.35,
8686
+ "xl": 0.5
8687
+ },
8688
+ "ease": {
8689
+ "out": [0.25, 0.1, 0.25, 1],
8690
+ "in": [0.4, 0, 1, 1],
8691
+ "in-out": [0.4, 0, 0.1, 1],
8692
+ "back": [0.34, 1.56, 0.64, 1],
8693
+ "symmetric": [0.5, 0, 0.5, 1],
8694
+ "linear": "linear"
8695
+ },
8696
+ "spring": {
8697
+ "rapid": {
8698
+ "type": "spring",
8699
+ "stiffness": 1000,
8700
+ "damping": 55,
8701
+ "mass": 1
8702
+ },
8703
+ "quick": {
8704
+ "type": "spring",
8705
+ "stiffness": 800,
8706
+ "damping": 55,
8707
+ "mass": 1
8708
+ },
8709
+ "small": {
8710
+ "type": "spring",
8711
+ "stiffness": 480,
8712
+ "damping": 50,
8713
+ "mass": 1
8714
+ },
8715
+ "medium": {
8716
+ "type": "spring",
8717
+ "stiffness": 270,
8718
+ "damping": 25,
8719
+ "mass": 1
8720
+ },
8721
+ "basic": {
8722
+ "type": "spring",
8723
+ "stiffness": 200,
8724
+ "damping": 30,
8725
+ "mass": 1
8726
+ },
8727
+ "large": {
8728
+ "type": "spring",
8729
+ "stiffness": 100,
8730
+ "damping": 15,
8731
+ "mass": 1
8732
+ },
8733
+ "bounce": {
8734
+ "type": "spring",
8735
+ "stiffness": 300,
8736
+ "damping": 15,
8737
+ "mass": 1
8738
+ },
8739
+ "slow": {
8740
+ "type": "spring",
8741
+ "stiffness": 70,
8742
+ "damping": 20,
8743
+ "mass": 1
8744
+ }
8745
+ }
8746
+ };
8747
+ /** 의미 토큰. 참조를 실제 값으로 풀었다. 시간은 초라 motion 의 transition 에 그대로 넣는다. */
8748
+ var motionTokens = {
8749
+ "press": {
8750
+ "duration": 0.12,
8751
+ "ease": [0.25, 0.1, 0.25, 1],
8752
+ "scale": 0.98,
8753
+ "dim": 0.12
8754
+ },
8755
+ "confirm": {
8756
+ "weak": {
8757
+ "type": "spring",
8758
+ "stiffness": 480,
8759
+ "damping": 50,
8760
+ "mass": 1
8761
+ },
8762
+ "strong": {
8763
+ "type": "spring",
8764
+ "stiffness": 300,
8765
+ "damping": 15,
8766
+ "mass": 1
8767
+ }
8768
+ },
8769
+ "reject": {
8770
+ "duration": 0.35,
8771
+ "ease": "linear",
8772
+ "distance": "2px"
8773
+ },
8774
+ "enter": {
8775
+ "duration": 0.24,
8776
+ "ease": [0.25, 0.1, 0.25, 1],
8777
+ "strong": {
8778
+ "type": "spring",
8779
+ "stiffness": 300,
8780
+ "damping": 15,
8781
+ "mass": 1
8782
+ },
8783
+ "scale-from": 0.96,
8784
+ "offset": "16px",
8785
+ "pop-scale": 0.6
8786
+ },
8787
+ "exit": {
8788
+ "duration": 0.16,
8789
+ "ease": [0.4, 0, 1, 1]
8790
+ },
8791
+ "appear": {
8792
+ "duration": 0.24,
8793
+ "ease": [0.25, 0.1, 0.25, 1]
8794
+ },
8795
+ "reveal": {
8796
+ "duration": 0.24,
8797
+ "ease": [0.25, 0.1, 0.25, 1],
8798
+ "gap": 0.08
8799
+ },
8800
+ "progress": {
8801
+ "duration": 0.24,
8802
+ "spring": {
8803
+ "type": "spring",
8804
+ "stiffness": 200,
8805
+ "damping": 30,
8806
+ "mass": 1
8807
+ }
8808
+ },
8809
+ "expand": {
8810
+ "duration": 0.24,
8811
+ "ease": [0.25, 0.1, 0.25, 1],
8812
+ "rotate": "180deg"
8813
+ },
8814
+ "dismiss-on-scroll": {
8815
+ "duration": 0.24,
8816
+ "ease": [0.25, 0.1, 0.25, 1],
8817
+ "threshold": "1px"
8818
+ },
8819
+ "attention": {
8820
+ "shine": 2.5,
8821
+ "blink": 0.3,
8822
+ "float-distance": "3px"
8823
+ },
8824
+ "busy": {
8825
+ "ring": 1.2,
8826
+ "ring-ease": [0.5, 0, 0.5, 1],
8827
+ "shimmer": 1.5,
8828
+ "dots": 0.6
8829
+ }
8830
+ };
6791
8831
  // EXTERNAL MODULE: ./tokens/generated/colors.ts
6792
8832
  var colors = __nuri_require__(7232);
6793
8833
  ;// ./index.tsx
@@ -6817,6 +8857,21 @@ var colors = __nuri_require__(7232);
6817
8857
 
6818
8858
 
6819
8859
 
8860
+
8861
+
8862
+
8863
+
8864
+
8865
+
8866
+
8867
+
8868
+
8869
+
8870
+
8871
+
8872
+
8873
+
8874
+
6820
8875
 
6821
8876
 
6822
8877
 
@@ -6829,24 +8884,37 @@ var colors = __nuri_require__(7232);
6829
8884
 
6830
8885
 
6831
8886
  const __webpack_exports__colors = colors/* colors */.T;
6832
- export { inline_loading as InlineLoading, overlay_loading as OverlayLoading, __webpack_exports__colors as colors, primitive, semanticAdmin, semanticApp };
8887
+ export { inline_loading as InlineLoading, MotionProvider, overlay_loading as OverlayLoading, __webpack_exports__colors as colors, motionPresets, motionTokens, primitive, semanticAdmin, semanticApp };
6833
8888
  export const Avatar = avatar/* default */.A;
8889
+ export const BottomBar = bottom_bar/* default */.A;
6834
8890
  export const BottomNav = bottom_nav/* default */.A;
6835
8891
  export const Breadcrumb = breadcrumb/* default */.A;
6836
8892
  export const CTAButton = cta_button/* default */.A;
6837
8893
  export const Callout = callout/* default */.A;
8894
+ export const Card = card/* default */.A;
6838
8895
  export const Checkbox = check_box/* default */.A;
6839
8896
  export const ChipGroup = chip_group/* default */.A;
6840
8897
  export const CollapsibleMenu = collapsible_menu/* default */.A;
6841
8898
  export const DataTable = data_table/* default */.A;
8899
+ export const DescriptionList = description_list/* default */.A;
6842
8900
  export const Drawer = drawer/* default */.A;
6843
8901
  export const DropDown = drop_down/* default */.A;
8902
+ export const EmptyState = empty_state/* default */.A;
6844
8903
  export const Icon = icon/* default */.A;
6845
8904
  export const IconTextBadge = icon_text_badge/* default */.A;
6846
8905
  export const IconTextOptionBadge = icon_text_option_badge/* default */.A;
8906
+ export const ListGroup = list_group/* default */.A;
8907
+ export const ListRow = list_row/* default */.A;
6847
8908
  export const LogProvider = log_context/* LogProvider */._;
8909
+ export const MediaThumbnail = media_thumbnail/* default */.A;
8910
+ export const MediaViewer = media_viewer/* default */.A;
8911
+ export const Message = message/* default */.A;
8912
+ export const MessageComposer = message_composer/* default */.A;
8913
+ export const MessageEvent = message_event/* default */.A;
8914
+ export const MessageThread = message_thread/* default */.A;
6848
8915
  export const Modal = modal/* default */.A;
6849
8916
  export const ModalWithDoubleButton = modal_with_double_button/* default */.A;
8917
+ export const Notice = notice/* default */.A;
6850
8918
  export const OptionBadge = option_badge/* default */.A;
6851
8919
  export const Pagination = pagination/* default */.A;
6852
8920
  export const Radio = radio_radio/* default */.A;
@@ -6855,6 +8923,7 @@ export const Spinner = spinner/* default */.A;
6855
8923
  export const StepProgress = step_progress/* default */.A;
6856
8924
  export const Switch = switch_switch/* default */.A;
6857
8925
  export const Tabs = tabs/* default */.A;
8926
+ export const Tag = tag/* default */.A;
6858
8927
  export const Text = text_text/* default */.A;
6859
8928
  export const TextArea = text_area/* default */.A;
6860
8929
  export const TextField = text_field/* default */.A;