@nurihaus/web-design-system 3.3.0 → 3.5.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 (93) hide show
  1. package/README.md +36 -0
  2. package/dist/ai/components.md +148 -5
  3. package/dist/avatar.js +5 -5
  4. package/dist/bottom-nav.js +22 -8
  5. package/dist/breadcrumb.js +25 -10
  6. package/dist/callout.js +220 -0
  7. package/dist/check-box.js +24 -8
  8. package/dist/chip-group.js +21 -7
  9. package/dist/{chunk-563.js → chunk-1563.js} +26 -13
  10. package/dist/{chunk-657.js → chunk-1657.js} +2 -2
  11. package/dist/chunk-2496.js +70 -0
  12. package/dist/{chunk-777.js → chunk-2777.js} +2 -2
  13. package/dist/{chunk-558.js → chunk-4558.js} +2 -2
  14. package/dist/chunk-4560.js +77 -0
  15. package/dist/{chunk-917.js → chunk-4917.js} +2 -2
  16. package/dist/{chunk-77.js → chunk-5077.js} +2 -2
  17. package/dist/chunk-5226.js +79 -0
  18. package/dist/{chunk-149.js → chunk-6149.js} +2 -2
  19. package/dist/{chunk-302.js → chunk-6302.js} +2 -2
  20. package/dist/{chunk-364.js → chunk-6364.js} +2 -2
  21. package/dist/{chunk-713.js → chunk-6713.js} +2 -2
  22. package/dist/{chunk-298.js → chunk-7298.js} +2 -2
  23. package/dist/{chunk-653.js → chunk-7653.js} +2 -2
  24. package/dist/{chunk-739.js → chunk-7739.js} +2 -2
  25. package/dist/{chunk-309.js → chunk-8690.js} +2 -2
  26. package/dist/{chunk-933.js → chunk-8933.js} +2 -2
  27. package/dist/chunk-910.js +30 -11
  28. package/dist/{chunk-387.js → chunk-9387.js} +2 -2
  29. package/dist/{chunk-436.js → chunk-9436.js} +2 -2
  30. package/dist/collapsible-menu.js +25 -12
  31. package/dist/components/bottom-nav/bottom-nav-type.d.ts +5 -2
  32. package/dist/components/breadcrumb/breadcrumb-type.d.ts +2 -1
  33. package/dist/components/button/button-props.d.ts +2 -2
  34. package/dist/components/button/button-type.d.ts +4 -1
  35. package/dist/components/button/button.stories.d.ts +1 -1
  36. package/dist/components/callout/base-callout.d.ts +4 -0
  37. package/dist/components/callout/callout-props.d.ts +10 -0
  38. package/dist/components/callout/callout-type.d.ts +7 -0
  39. package/dist/components/callout/callout.d.ts +5 -0
  40. package/dist/components/callout/callout.stories.d.ts +22 -0
  41. package/dist/components/check-box/check-box-type.d.ts +2 -1
  42. package/dist/components/chip-group/chip-group-type.d.ts +2 -1
  43. package/dist/components/collapsible-menu/collapsible-menu-type.d.ts +2 -1
  44. package/dist/components/drawer/drawer-type.d.ts +2 -1
  45. package/dist/components/drop-down/drop-down-type.d.ts +2 -1
  46. package/dist/components/logging/log-context.d.ts +9 -0
  47. package/dist/components/logging/logging-type.d.ts +25 -0
  48. package/dist/components/logging/logging.d.ts +5 -0
  49. package/dist/components/logging/logging.stories.d.ts +18 -0
  50. package/dist/components/modal/modal-type.d.ts +2 -1
  51. package/dist/components/pagination/pagination-type.d.ts +2 -1
  52. package/dist/components/radio/radio-type.d.ts +3 -1
  53. package/dist/components/radio/radio.d.ts +2 -1
  54. package/dist/components/radio/radio.stories.d.ts +1 -1
  55. package/dist/components/skeleton/skeleton.stories.d.ts +5 -5
  56. package/dist/components/switch/switch-type.d.ts +2 -1
  57. package/dist/components/table/table-type.d.ts +2 -1
  58. package/dist/components/tabs/tabs-type.d.ts +2 -1
  59. package/dist/components/text-area/text-area-type.d.ts +2 -1
  60. package/dist/components/text-field/text-field-type.d.ts +2 -1
  61. package/dist/components/toast/toast-type.d.ts +2 -1
  62. package/dist/components/toast/toast.stories.d.ts +7 -5
  63. package/dist/components/tooltip/tooltip-type.d.ts +2 -1
  64. package/dist/components.css +79 -0
  65. package/dist/cta-button.js +44 -21
  66. package/dist/data-table.js +19 -7
  67. package/dist/drawer.js +23 -9
  68. package/dist/drop-down.js +25 -9
  69. package/dist/helpers/hooks/useTrack.d.ts +3 -0
  70. package/dist/icon-text-badge.js +11 -9
  71. package/dist/icon-text-option-badge.js +5 -5
  72. package/dist/icon.js +5 -5
  73. package/dist/index.d.ts +4 -0
  74. package/dist/index.js +557 -80
  75. package/dist/loading.js +6 -6
  76. package/dist/logging.js +147 -0
  77. package/dist/modal-with-double-button.js +16 -12
  78. package/dist/modal.js +39 -26
  79. package/dist/option-badge.js +11 -9
  80. package/dist/pagination.js +23 -9
  81. package/dist/radio.js +24 -10
  82. package/dist/skeleton.js +4 -4
  83. package/dist/step-progress.js +3 -3
  84. package/dist/styles.css +66 -0
  85. package/dist/switch.js +24 -8
  86. package/dist/tabs.js +22 -6
  87. package/dist/text-area.js +30 -8
  88. package/dist/text-field.js +31 -9
  89. package/dist/text.js +5 -5
  90. package/dist/toast.js +34 -15
  91. package/dist/tooltip.js +33 -18
  92. package/package.json +9 -1
  93. package/dist/chunk-976.js +0 -29
package/dist/index.js CHANGED
@@ -542,6 +542,8 @@ __nuri_require__.d(__webpack_exports__, {
542
542
  var jsx_runtime_ = __nuri_require__(612);
543
543
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
544
544
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
545
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
546
+ var useTrack = __nuri_require__(4560);
545
547
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
546
548
  var classNames = __nuri_require__(3274);
547
549
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -643,6 +645,7 @@ var bottom_nav_assign = undefined && undefined.__assign || function () {
643
645
 
644
646
 
645
647
 
648
+
646
649
  var Anchor = function Anchor(props) {
647
650
  return (0,jsx_runtime_.jsx)("a", bottom_nav_assign({}, props));
648
651
  };
@@ -655,7 +658,13 @@ var BottomNav = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
655
658
  items = _a.items,
656
659
  value = _a.value,
657
660
  label = _a.label,
658
- linkComponent = _a.linkComponent;
661
+ linkComponent = _a.linkComponent,
662
+ track = _a.track,
663
+ trackProps = _a.trackProps;
664
+ var emit = (0,useTrack/* useTrack */.n)('BottomNav', {
665
+ track: track,
666
+ trackProps: trackProps
667
+ });
659
668
  var Link = linkComponent !== null && linkComponent !== void 0 ? linkComponent : Anchor;
660
669
  var activeIndex = items.findIndex(function (item) {
661
670
  return item.id === value;
@@ -678,6 +687,9 @@ var BottomNav = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
678
687
  className: itemClassName,
679
688
  href: item.href,
680
689
  "aria-current": isActive ? 'page' : undefined,
690
+ onClick: function onClick() {
691
+ return emit('navigate', item.id);
692
+ },
681
693
  children: [(0,jsx_runtime_.jsx)("span", {
682
694
  className: 'bottom-nav-label',
683
695
  children: item.label
@@ -716,6 +728,8 @@ var jsx_runtime_ = __nuri_require__(612);
716
728
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
717
729
  // EXTERNAL MODULE: ./assets/icons/chevronDown.svg
718
730
  var chevronDown = __nuri_require__(9436);
731
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
732
+ var useTrack = __nuri_require__(4560);
719
733
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
720
734
  var classNames = __nuri_require__(3274);
721
735
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -830,6 +844,7 @@ var breadcrumbProps = {
830
844
 
831
845
 
832
846
 
847
+
833
848
  var Breadcrumb = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
834
849
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, breadcrumbProps),
835
850
  className = _a.className,
@@ -837,11 +852,21 @@ var Breadcrumb = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_re
837
852
  items = _a.items,
838
853
  onItemClick = _a.onItemClick,
839
854
  separator = _a.separator,
840
- LinkComponent = _a.linkComponent;
855
+ LinkComponent = _a.linkComponent,
856
+ track = _a.track,
857
+ trackProps = _a.trackProps;
858
+ var emit = (0,useTrack/* useTrack */.n)('Breadcrumb', {
859
+ track: track,
860
+ trackProps: trackProps
861
+ });
841
862
  var lastIndex = items.length - 1;
842
863
  var separatorNode = separator !== null && separator !== void 0 ? separator : (0,jsx_runtime_.jsx)(chevronDown/* default */.A, {
843
864
  className: 'breadcrumb-chevron'
844
865
  });
866
+ var selectItem = function selectItem(id) {
867
+ emit('navigate', id);
868
+ onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(id);
869
+ };
845
870
  return (0,jsx_runtime_.jsx)(base_breadcrumb, {
846
871
  ref: ref,
847
872
  className: (0,classNames/* classNames */.x)(className, 'breadcrumb'),
@@ -860,7 +885,7 @@ var Breadcrumb = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_re
860
885
  asChild: true,
861
886
  className: 'breadcrumb-link',
862
887
  onClick: function onClick() {
863
- return onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item.id);
888
+ return selectItem(item.id);
864
889
  },
865
890
  children: (0,jsx_runtime_.jsx)(LinkComponent, {
866
891
  href: item.href,
@@ -870,7 +895,7 @@ var Breadcrumb = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_re
870
895
  className: 'breadcrumb-link',
871
896
  href: item.href,
872
897
  onClick: function onClick() {
873
- return onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item.id);
898
+ return selectItem(item.id);
874
899
  },
875
900
  children: item.label
876
901
  }) : (0,jsx_runtime_.jsx)("span", {
@@ -964,7 +989,7 @@ BaseButton.displayName = 'BaseButton';
964
989
  /* unused harmony exports variant, sizes */
965
990
  /* harmony import */ var _helpers_props_common_props__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(7298);
966
991
 
967
- var variant = ['primary', 'secondary', 'ghost', 'neutral', 'confirm', 'outlined'];
992
+ var variant = ['primary', 'secondary', 'ghost', 'neutral', 'confirm', 'outlined', 'social'];
968
993
  var sizes = ['xs', 's', 'm', 'l', 'xl'];
969
994
  var ctaButtonProps = {
970
995
  variant: {
@@ -986,11 +1011,13 @@ var ctaButtonProps = {
986
1011
  /* harmony export */ });
987
1012
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
988
1013
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
989
- /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
990
- /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(7335);
991
- /* harmony import */ var _loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(6302);
992
- /* harmony import */ var _base_button__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(8933);
993
- /* harmony import */ var _button_props__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(9976);
1014
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(4560);
1015
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
1016
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(7335);
1017
+ /* harmony import */ var _callout_callout__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(1163);
1018
+ /* harmony import */ var _loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(6302);
1019
+ /* harmony import */ var _base_button__WEBPACK_IMPORTED_MODULE_7__ = __nuri_require__(8933);
1020
+ /* harmony import */ var _button_props__WEBPACK_IMPORTED_MODULE_8__ = __nuri_require__(9976);
994
1021
  var __assign = undefined && undefined.__assign || function () {
995
1022
  __assign = Object.assign || function (t) {
996
1023
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -1016,19 +1043,36 @@ var __rest = undefined && undefined.__rest || function (s, e) {
1016
1043
 
1017
1044
 
1018
1045
 
1046
+
1047
+
1019
1048
  var CTAButton = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
1020
- var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__/* .getMergedProps */ .p)(props, _button_props__WEBPACK_IMPORTED_MODULE_6__/* .ctaButtonProps */ .Lr),
1049
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__/* .getMergedProps */ .p)(props, _button_props__WEBPACK_IMPORTED_MODULE_8__/* .ctaButtonProps */ .Lr),
1021
1050
  className = _a.className,
1022
1051
  text = _a.text,
1023
1052
  leftIcon = _a.leftIcon,
1024
1053
  rightIcon = _a.rightIcon,
1025
- restProps = __rest(_a, ["className", "text", "leftIcon", "rightIcon"]);
1026
- return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, __assign({
1054
+ callout = _a.callout,
1055
+ _onClick = _a.onClick,
1056
+ track = _a.track,
1057
+ trackProps = _a.trackProps,
1058
+ restProps = __rest(_a, ["className", "text", "leftIcon", "rightIcon", "callout", "onClick", "track", "trackProps"]);
1059
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('CTAButton', {
1060
+ track: track,
1061
+ trackProps: trackProps
1062
+ });
1063
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_button__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, __assign({
1027
1064
  ref: ref,
1028
- className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'cta-button'),
1029
- loadingComponent: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, {})
1065
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'cta-button', callout ? 'with-callout' : undefined),
1066
+ loadingComponent: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {}),
1067
+ onClick: function onClick(event) {
1068
+ emit('click');
1069
+ _onClick === null || _onClick === void 0 ? void 0 : _onClick(event);
1070
+ }
1030
1071
  }, restProps, {
1031
- children: [leftIcon, text, rightIcon]
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]
1032
1076
  }));
1033
1077
  });
1034
1078
  CTAButton.displayName = 'CTAButton';
@@ -1036,6 +1080,120 @@ CTAButton.displayName = 'CTAButton';
1036
1080
 
1037
1081
  /***/ },
1038
1082
 
1083
+ /***/ 1211
1084
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1085
+
1086
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
1087
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
1088
+ /* harmony export */ });
1089
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
1090
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
1091
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
1092
+ var __assign = undefined && undefined.__assign || function () {
1093
+ __assign = Object.assign || function (t) {
1094
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1095
+ s = arguments[i];
1096
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1097
+ }
1098
+ return t;
1099
+ };
1100
+ return __assign.apply(this, arguments);
1101
+ };
1102
+ var __rest = undefined && undefined.__rest || function (s, e) {
1103
+ var t = {};
1104
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
1105
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1106
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
1107
+ }
1108
+ return t;
1109
+ };
1110
+
1111
+
1112
+
1113
+ // span 이다 — CTAButton 처럼 button 안에도 들어간다 (button 안에는 div 를 둘 수 없다)
1114
+ var BaseCallout = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
1115
+ var className = props.className,
1116
+ restProps = __rest(props, ["className"]);
1117
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", __assign({
1118
+ ref: ref,
1119
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)('nuri-theme base-callout', className)
1120
+ }, restProps));
1121
+ });
1122
+ BaseCallout.displayName = 'BaseCallout';
1123
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BaseCallout);
1124
+
1125
+ /***/ },
1126
+
1127
+ /***/ 7810
1128
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1129
+
1130
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
1131
+ /* harmony export */ B: () => (/* binding */ calloutProps)
1132
+ /* harmony export */ });
1133
+ /* unused harmony export tail */
1134
+ /** 꼬리가 나오는 자리. `bottom-start` 는 말풍선 아래 왼쪽에서 아래를 가리킨다 */
1135
+ var tail = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];
1136
+ var calloutProps = {
1137
+ tail: {
1138
+ type: 'className',
1139
+ className: 'tail',
1140
+ values: tail,
1141
+ "default": 'bottom-start'
1142
+ }
1143
+ };
1144
+
1145
+ /***/ },
1146
+
1147
+ /***/ 1163
1148
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1149
+
1150
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
1151
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
1152
+ /* harmony export */ });
1153
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
1154
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
1155
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(7335);
1156
+ /* harmony import */ var _base_callout__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(1211);
1157
+ /* harmony import */ var _callout_props__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(7810);
1158
+ var __assign = undefined && undefined.__assign || function () {
1159
+ __assign = Object.assign || function (t) {
1160
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1161
+ s = arguments[i];
1162
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
1163
+ }
1164
+ return t;
1165
+ };
1166
+ return __assign.apply(this, arguments);
1167
+ };
1168
+ var __rest = undefined && undefined.__rest || function (s, e) {
1169
+ var t = {};
1170
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
1171
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1172
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
1173
+ }
1174
+ return t;
1175
+ };
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+ /** 대상에 붙어 늘 떠 있는 작은 말풍선 (ADR 0007). 자리는 쓰는 쪽이 정한다 — CTAButton 은 `callout` prop 으로 모서리에 끼운다 */
1182
+ var Callout = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
1183
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_2__/* .getMergedProps */ .p)(props, _callout_props__WEBPACK_IMPORTED_MODULE_4__/* .calloutProps */ .B),
1184
+ text = _a.text,
1185
+ restProps = __rest(_a, ["text"]);
1186
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_callout__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A, __assign({
1187
+ ref: ref
1188
+ }, restProps, {
1189
+ children: text
1190
+ }));
1191
+ });
1192
+ Callout.displayName = 'Callout';
1193
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Callout);
1194
+
1195
+ /***/ },
1196
+
1039
1197
  /***/ 445
1040
1198
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
1041
1199
 
@@ -1051,6 +1209,8 @@ var jsx_runtime_ = __nuri_require__(612);
1051
1209
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1052
1210
  // EXTERNAL MODULE: ./assets/icons/check.svg
1053
1211
  var check = __nuri_require__(5077);
1212
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1213
+ var useTrack = __nuri_require__(4560);
1054
1214
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1055
1215
  var classNames = __nuri_require__(3274);
1056
1216
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1183,15 +1343,27 @@ var check_box_rest = undefined && undefined.__rest || function (s, e) {
1183
1343
 
1184
1344
 
1185
1345
 
1346
+
1186
1347
  var CheckBox = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1187
1348
  var rootClassName = (0,getMergedProps/* getMergedProps */.p)(props, {}).className;
1188
1349
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, checkBoxIndicatorProps),
1189
1350
  label = _a.label,
1190
1351
  indicatorClassName = _a.className,
1191
- restProps = check_box_rest(_a, ["label", "className"]);
1352
+ _onChange = _a.onChange,
1353
+ track = _a.track,
1354
+ trackProps = _a.trackProps,
1355
+ restProps = check_box_rest(_a, ["label", "className", "onChange", "track", "trackProps"]);
1356
+ var emit = (0,useTrack/* useTrack */.n)('CheckBox', {
1357
+ track: track,
1358
+ trackProps: trackProps
1359
+ });
1192
1360
  return (0,jsx_runtime_.jsxs)(base_check_box, check_box_assign({
1193
1361
  ref: ref,
1194
- className: (0,classNames/* classNames */.x)(rootClassName, 'check-box')
1362
+ className: (0,classNames/* classNames */.x)(rootClassName, 'check-box'),
1363
+ onChange: function onChange(checked) {
1364
+ emit('change', checked ? 'on' : 'off');
1365
+ _onChange === null || _onChange === void 0 ? void 0 : _onChange(checked);
1366
+ }
1195
1367
  }, restProps, {
1196
1368
  children: [(0,jsx_runtime_.jsx)("div", {
1197
1369
  className: (0,classNames/* classNames */.x)(indicatorClassName, 'check-box-indicator wrapper'),
@@ -1225,6 +1397,8 @@ var jsx_runtime_ = __nuri_require__(612);
1225
1397
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1226
1398
  // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
1227
1399
  var useExternalState = __nuri_require__(9387);
1400
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1401
+ var useTrack = __nuri_require__(4560);
1228
1402
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1229
1403
  var classNames = __nuri_require__(3274);
1230
1404
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1303,6 +1477,7 @@ var chipGroupProps = {};
1303
1477
 
1304
1478
 
1305
1479
 
1480
+
1306
1481
  var ChipGroup = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1307
1482
  var _a, _b;
1308
1483
  var _c = (0,getMergedProps/* getMergedProps */.p)(props, chipGroupProps),
@@ -1312,10 +1487,19 @@ var ChipGroup = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
1312
1487
  value = _c.value,
1313
1488
  defaultValue = _c.defaultValue,
1314
1489
  onValueChange = _c.onValueChange,
1315
- label = _c.label;
1490
+ label = _c.label,
1491
+ track = _c.track,
1492
+ trackProps = _c.trackProps;
1493
+ var emit = (0,useTrack/* useTrack */.n)('ChipGroup', {
1494
+ track: track,
1495
+ trackProps: trackProps
1496
+ });
1316
1497
  var _d = (0,useExternalState/* useExternalState */.C)({
1317
1498
  prop: value,
1318
- handler: onValueChange,
1499
+ handler: function handler(id) {
1500
+ emit('change', id);
1501
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(id);
1502
+ },
1319
1503
  defaultProp: (_b = defaultValue !== null && defaultValue !== void 0 ? defaultValue : (_a = items[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : ''
1320
1504
  }),
1321
1505
  selected = _d[0],
@@ -1358,6 +1542,8 @@ __nuri_require__.d(__webpack_exports__, {
1358
1542
  var jsx_runtime_ = __nuri_require__(612);
1359
1543
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
1360
1544
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1545
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1546
+ var useTrack = __nuri_require__(4560);
1361
1547
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1362
1548
  var classNames = __nuri_require__(3274);
1363
1549
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1458,6 +1644,7 @@ var collapsible_menu_assign = undefined && undefined.__assign || function () {
1458
1644
 
1459
1645
 
1460
1646
 
1647
+
1461
1648
  var Anchor = function Anchor(props) {
1462
1649
  return (0,jsx_runtime_.jsx)("a", collapsible_menu_assign({}, props));
1463
1650
  };
@@ -1471,7 +1658,13 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1471
1658
  onActiveKeyChange = _a.onActiveKeyChange,
1472
1659
  _b = _a.indent,
1473
1660
  indent = _b === void 0 ? 12 : _b,
1474
- linkComponent = _a.linkComponent;
1661
+ linkComponent = _a.linkComponent,
1662
+ track = _a.track,
1663
+ trackProps = _a.trackProps;
1664
+ var emit = (0,useTrack/* useTrack */.n)('CollapsibleMenu', {
1665
+ track: track,
1666
+ trackProps: trackProps
1667
+ });
1475
1668
  var Link = linkComponent !== null && linkComponent !== void 0 ? linkComponent : Anchor;
1476
1669
  var rootClassName = (0,classNames/* classNames */.x)(className, 'collapsible-menu');
1477
1670
  var _hasActiveDescendant = function hasActiveDescendant(item) {
@@ -1480,6 +1673,12 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1480
1673
  if (item.key === activeKey) return true;
1481
1674
  return (_b = (_a = item.children) === null || _a === void 0 ? void 0 : _a.some(_hasActiveDescendant)) !== null && _b !== void 0 ? _b : false;
1482
1675
  };
1676
+ var selectItem = function selectItem(item) {
1677
+ var _a;
1678
+ emit('navigate', item.key);
1679
+ onActiveKeyChange === null || onActiveKeyChange === void 0 ? void 0 : onActiveKeyChange(item.key);
1680
+ (_a = item.onSelect) === null || _a === void 0 ? void 0 : _a.call(item);
1681
+ };
1483
1682
  var _renderItems = function renderItems(targetItems, depth) {
1484
1683
  var indentStyle = {
1485
1684
  paddingLeft: "".concat(depth * indent, "px")
@@ -1520,13 +1719,11 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1520
1719
  "aria-current": isActive ? 'page' : undefined,
1521
1720
  "aria-disabled": item.disabled ? 'true' : undefined,
1522
1721
  onClick: function onClick(e) {
1523
- var _a;
1524
1722
  if (item.disabled) {
1525
1723
  e.preventDefault();
1526
1724
  return;
1527
1725
  }
1528
- onActiveKeyChange === null || onActiveKeyChange === void 0 ? void 0 : onActiveKeyChange(item.key);
1529
- (_a = item.onSelect) === null || _a === void 0 ? void 0 : _a.call(item);
1726
+ selectItem(item);
1530
1727
  },
1531
1728
  children: left
1532
1729
  }, item.key);
@@ -1536,9 +1733,7 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1536
1733
  className: itemClassName,
1537
1734
  disabled: item.disabled,
1538
1735
  onClick: function onClick() {
1539
- var _a;
1540
- onActiveKeyChange === null || onActiveKeyChange === void 0 ? void 0 : onActiveKeyChange(item.key);
1541
- (_a = item.onSelect) === null || _a === void 0 ? void 0 : _a.call(item);
1736
+ return selectItem(item);
1542
1737
  },
1543
1738
  children: left
1544
1739
  }, item.key);
@@ -1683,6 +1878,8 @@ var jsx_runtime_ = __nuri_require__(612);
1683
1878
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1684
1879
  // EXTERNAL MODULE: ./assets/icons/multifly.svg
1685
1880
  var multifly = __nuri_require__(6713);
1881
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1882
+ var useTrack = __nuri_require__(4560);
1686
1883
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1687
1884
  var classNames = __nuri_require__(3274);
1688
1885
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1817,6 +2014,7 @@ var drawer_assign = undefined && undefined.__assign || function () {
1817
2014
 
1818
2015
 
1819
2016
 
2017
+
1820
2018
  // ref 는 패널(Dialog.Content) div 에 붙는다. Root 는 DOM 을 그리지 않는다.
1821
2019
  var Drawer = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1822
2020
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, drawerContentProps),
@@ -1829,13 +2027,22 @@ var Drawer = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
1829
2027
  showCloseIcon = _b === void 0 ? true : _b,
1830
2028
  open = _a.open,
1831
2029
  defaultOpen = _a.defaultOpen,
1832
- onOpenChange = _a.onOpenChange,
2030
+ _onOpenChange = _a.onOpenChange,
1833
2031
  className = _a.className,
1834
- style = _a.style;
2032
+ style = _a.style,
2033
+ track = _a.track,
2034
+ trackProps = _a.trackProps;
2035
+ var emit = (0,useTrack/* useTrack */.n)('Drawer', {
2036
+ track: track,
2037
+ trackProps: trackProps
2038
+ });
1835
2039
  return (0,jsx_runtime_.jsxs)(base_drawer, {
1836
2040
  open: open,
1837
2041
  defaultOpen: defaultOpen,
1838
- onOpenChange: onOpenChange,
2042
+ onOpenChange: function onOpenChange(next) {
2043
+ emit(next ? 'open' : 'close');
2044
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(next);
2045
+ },
1839
2046
  children: [trigger && (0,jsx_runtime_.jsx)(base_drawer.Trigger, {
1840
2047
  asChild: true,
1841
2048
  children: trigger
@@ -1891,6 +2098,8 @@ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ =
1891
2098
  var chevronDown = __nuri_require__(9436);
1892
2099
  // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
1893
2100
  var useExternalState = __nuri_require__(9387);
2101
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
2102
+ var useTrack = __nuri_require__(4560);
1894
2103
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1895
2104
  var classNames = __nuri_require__(3274);
1896
2105
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -2034,6 +2243,7 @@ var drop_down_rest = undefined && undefined.__rest || function (s, e) {
2034
2243
 
2035
2244
 
2036
2245
 
2246
+
2037
2247
  var DropDown = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2038
2248
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, dropDownSingleProps),
2039
2249
  className = _a.className,
@@ -2052,7 +2262,14 @@ var DropDown = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
2052
2262
  openProp = _a.open,
2053
2263
  onOpenChangeProp = _a.onOpenChange,
2054
2264
  defaultOpen = _a.defaultOpen,
2055
- restProps = drop_down_rest(_a, ["className", "renderValue", "placeholder", "options", "value", "disabled", "leftIcon", "rightIcon", "style", "renderOption", "side", "align", "position", "open", "onOpenChange", "defaultOpen"]);
2265
+ _onValueChange = _a.onValueChange,
2266
+ track = _a.track,
2267
+ trackProps = _a.trackProps,
2268
+ restProps = drop_down_rest(_a, ["className", "renderValue", "placeholder", "options", "value", "disabled", "leftIcon", "rightIcon", "style", "renderOption", "side", "align", "position", "open", "onOpenChange", "defaultOpen", "onValueChange", "track", "trackProps"]);
2269
+ var emit = (0,useTrack/* useTrack */.n)('DropDown', {
2270
+ track: track,
2271
+ trackProps: trackProps
2272
+ });
2056
2273
  var _b = (0,useExternalState/* useExternalState */.C)({
2057
2274
  prop: openProp,
2058
2275
  handler: onOpenChangeProp,
@@ -2067,7 +2284,11 @@ var DropDown = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
2067
2284
  value: value,
2068
2285
  disabled: disabled,
2069
2286
  open: open,
2070
- onOpenChange: setOpen
2287
+ onOpenChange: setOpen,
2288
+ onValueChange: function onValueChange(next) {
2289
+ emit('change', next);
2290
+ _onValueChange === null || _onValueChange === void 0 ? void 0 : _onValueChange(next);
2291
+ }
2071
2292
  }, restProps, {
2072
2293
  children: [(0,jsx_runtime_.jsxs)(base_drop_down.Trigger, {
2073
2294
  className: (0,classNames/* classNames */.x)(className, 'drop-down-single-trigger'),
@@ -2690,6 +2911,82 @@ Spinner.displayName = 'Spinner';
2690
2911
 
2691
2912
  /***/ },
2692
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
+ };
2987
+
2988
+ /***/ },
2989
+
2693
2990
  /***/ 1657
2694
2991
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2695
2992
 
@@ -2973,11 +3270,13 @@ var ModalWithDoubleButton = {
2973
3270
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
2974
3271
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
2975
3272
  /* harmony import */ var _assets_icons_multifly_svg__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(6713);
2976
- /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
2977
- /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(7335);
2978
- /* harmony import */ var _button_base_button__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(8933);
2979
- /* harmony import */ var _base_modal__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(1657);
2980
- /* harmony import */ var _modal_props__WEBPACK_IMPORTED_MODULE_7__ = __nuri_require__(5214);
3273
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(4560);
3274
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(3274);
3275
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(7335);
3276
+ /* harmony import */ var _button_base_button__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(8933);
3277
+ /* harmony import */ var _base_modal__WEBPACK_IMPORTED_MODULE_7__ = __nuri_require__(1657);
3278
+ /* harmony import */ var _modal_props__WEBPACK_IMPORTED_MODULE_8__ = __nuri_require__(5214);
3279
+
2981
3280
 
2982
3281
 
2983
3282
 
@@ -2988,10 +3287,10 @@ var ModalWithDoubleButton = {
2988
3287
 
2989
3288
  // Title·Description 은 Text 로 감싸지 않는다. Text 가 id 를 버려 Radix 의 aria-labelledby 연결이 끊긴다.
2990
3289
  var Modal = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
2991
- var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__/* .getMergedProps */ .p)(props, _modal_props__WEBPACK_IMPORTED_MODULE_7__/* .modalProps */ .y_),
3290
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_5__/* .getMergedProps */ .p)(props, _modal_props__WEBPACK_IMPORTED_MODULE_8__/* .modalProps */ .y_),
2992
3291
  open = _a.open,
2993
3292
  defaultOpen = _a.defaultOpen,
2994
- onOpenChange = _a.onOpenChange,
3293
+ _onOpenChange = _a.onOpenChange,
2995
3294
  trigger = _a.trigger,
2996
3295
  title = _a.title,
2997
3296
  description = _a.description,
@@ -3000,32 +3299,41 @@ var Modal = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(funct
3000
3299
  _b = _a.showCloseIcon,
3001
3300
  showCloseIcon = _b === void 0 ? true : _b,
3002
3301
  className = _a.className,
3003
- style = _a.style;
3004
- return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {
3302
+ style = _a.style,
3303
+ track = _a.track,
3304
+ trackProps = _a.trackProps;
3305
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_3__/* .useTrack */ .n)('Modal', {
3306
+ track: track,
3307
+ trackProps: trackProps
3308
+ });
3309
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, {
3005
3310
  open: open,
3006
3311
  defaultOpen: defaultOpen,
3007
- onOpenChange: onOpenChange,
3008
- children: [trigger && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Trigger, {
3312
+ onOpenChange: function onOpenChange(next) {
3313
+ emit(next ? 'open' : 'close');
3314
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(next);
3315
+ },
3316
+ children: [trigger && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Trigger, {
3009
3317
  asChild: true,
3010
3318
  children: trigger
3011
- }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Container, {
3319
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Container, {
3012
3320
  ref: ref,
3013
- className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'modal'),
3321
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_4__/* .classNames */ .x)(className, 'modal'),
3014
3322
  style: style,
3015
3323
  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
3016
3324
  className: 'modal-header',
3017
- children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Title, {
3325
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Title, {
3018
3326
  className: 'modal-title',
3019
3327
  children: title
3020
- }), showCloseIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Close, {
3328
+ }), showCloseIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Close, {
3021
3329
  className: 'modal-close-icon',
3022
3330
  "aria-label": "\uB2EB\uAE30",
3023
3331
  asChild: true,
3024
- children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_button_base_button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {
3332
+ children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_button_base_button__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {
3025
3333
  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_assets_icons_multifly_svg__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, {})
3026
3334
  })
3027
3335
  })]
3028
- }), description && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Description, {
3336
+ }), description && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Description, {
3029
3337
  className: 'modal-description',
3030
3338
  children: description
3031
3339
  }), children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
@@ -3060,6 +3368,8 @@ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ =
3060
3368
  var chevronDown = __nuri_require__(9436);
3061
3369
  // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
3062
3370
  var useExternalState = __nuri_require__(9387);
3371
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
3372
+ var useTrack = __nuri_require__(4560);
3063
3373
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3064
3374
  var classNames = __nuri_require__(3274);
3065
3375
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -3184,6 +3494,7 @@ var __spreadArray = undefined && undefined.__spreadArray || function (to, from,
3184
3494
 
3185
3495
 
3186
3496
 
3497
+
3187
3498
  var ELLIPSIS = 'ellipsis';
3188
3499
  var range = function range(start, end) {
3189
3500
  return Array.from({
@@ -3221,11 +3532,20 @@ var Pagination = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_re
3221
3532
  _b = _a.siblingCount,
3222
3533
  siblingCount = _b === void 0 ? 1 : _b,
3223
3534
  disabled = _a.disabled,
3224
- restProps = pagination_rest(_a, ["className", "totalPages", "page", "defaultPage", "onPageChange", "siblingCount", "disabled"]);
3535
+ track = _a.track,
3536
+ trackProps = _a.trackProps,
3537
+ restProps = pagination_rest(_a, ["className", "totalPages", "page", "defaultPage", "onPageChange", "siblingCount", "disabled", "track", "trackProps"]);
3538
+ var emit = (0,useTrack/* useTrack */.n)('Pagination', {
3539
+ track: track,
3540
+ trackProps: trackProps
3541
+ });
3225
3542
  var lastPage = Math.max(totalPages, 1);
3226
3543
  var _c = (0,useExternalState/* useExternalState */.C)({
3227
3544
  prop: pageProp,
3228
- handler: onPageChange,
3545
+ handler: function handler(next) {
3546
+ emit('change', String(next));
3547
+ onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(next);
3548
+ },
3229
3549
  defaultProp: defaultPage !== null && defaultPage !== void 0 ? defaultPage : 1
3230
3550
  }),
3231
3551
  pageValue = _c[0],
@@ -3294,6 +3614,8 @@ __nuri_require__.d(__webpack_exports__, {
3294
3614
  var jsx_runtime_ = __nuri_require__(612);
3295
3615
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3296
3616
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
3617
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
3618
+ var useTrack = __nuri_require__(4560);
3297
3619
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3298
3620
  var classNames = __nuri_require__(3274);
3299
3621
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -3428,16 +3750,26 @@ var radioProps = {};
3428
3750
 
3429
3751
 
3430
3752
 
3753
+
3431
3754
  var Radio = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3432
3755
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, radioProps),
3433
3756
  className = _a.className,
3434
3757
  selected = _a.selected,
3435
- onChange = _a.onChange,
3436
- options = _a.options;
3758
+ _onChange = _a.onChange,
3759
+ options = _a.options,
3760
+ track = _a.track,
3761
+ trackProps = _a.trackProps;
3762
+ var emit = (0,useTrack/* useTrack */.n)('Radio', {
3763
+ track: track,
3764
+ trackProps: trackProps
3765
+ });
3437
3766
  return (0,jsx_runtime_.jsx)(base_radio, {
3438
3767
  options: options,
3439
3768
  selected: selected,
3440
- onChange: onChange,
3769
+ onChange: function onChange(id) {
3770
+ emit('change', id !== null && id !== void 0 ? id : undefined);
3771
+ _onChange === null || _onChange === void 0 ? void 0 : _onChange(id);
3772
+ },
3441
3773
  children: (0,jsx_runtime_.jsx)(base_radio.OptionGroup, {
3442
3774
  ref: ref,
3443
3775
  className: (0,classNames/* classNames */.x)(className, 'radio radio-group'),
@@ -3758,6 +4090,8 @@ __nuri_require__.d(__webpack_exports__, {
3758
4090
  var jsx_runtime_ = __nuri_require__(612);
3759
4091
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3760
4092
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4093
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4094
+ var useTrack = __nuri_require__(4560);
3761
4095
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3762
4096
  var classNames = __nuri_require__(3274);
3763
4097
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -3882,17 +4216,29 @@ var switch_rest = undefined && undefined.__rest || function (s, e) {
3882
4216
 
3883
4217
 
3884
4218
 
4219
+
3885
4220
  var Switch = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3886
4221
  var className = props.className,
3887
4222
  label = props.label,
3888
4223
  size = props.size,
3889
- restProps = switch_rest(props, ["className", "label", "size"]);
4224
+ _onChange = props.onChange,
4225
+ track = props.track,
4226
+ trackProps = props.trackProps,
4227
+ restProps = switch_rest(props, ["className", "label", "size", "onChange", "track", "trackProps"]);
4228
+ var emit = (0,useTrack/* useTrack */.n)('Switch', {
4229
+ track: track,
4230
+ trackProps: trackProps
4231
+ });
3890
4232
  var trackClassName = (0,getMergedProps/* getMergedProps */.p)({
3891
4233
  size: size
3892
4234
  }, switchTrackProps).className;
3893
4235
  return (0,jsx_runtime_.jsxs)(base_switch, switch_assign({
3894
4236
  ref: ref,
3895
- className: (0,classNames/* classNames */.x)(className, 'switch')
4237
+ className: (0,classNames/* classNames */.x)(className, 'switch'),
4238
+ onChange: function onChange(checked) {
4239
+ emit('change', checked ? 'on' : 'off');
4240
+ _onChange === null || _onChange === void 0 ? void 0 : _onChange(checked);
4241
+ }
3896
4242
  }, restProps, {
3897
4243
  children: [(0,jsx_runtime_.jsx)("span", {
3898
4244
  className: (0,classNames/* classNames */.x)(trackClassName, 'switch-track'),
@@ -3923,6 +4269,8 @@ __nuri_require__.d(__webpack_exports__, {
3923
4269
  var jsx_runtime_ = __nuri_require__(612);
3924
4270
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3925
4271
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4272
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4273
+ var useTrack = __nuri_require__(4560);
3926
4274
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3927
4275
  var classNames = __nuri_require__(3274);
3928
4276
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4040,12 +4388,19 @@ var dataTableCellProps = table_props_assign(table_props_assign({}, dataTableComm
4040
4388
 
4041
4389
 
4042
4390
 
4391
+
4043
4392
  var DataTableBase = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4044
4393
  var rows = props.rows,
4045
4394
  columns = props.columns,
4046
4395
  _a = props.fixedRowsIndex,
4047
4396
  fixedRowsIndex = _a === void 0 ? 0 : _a,
4048
- className = props.className;
4397
+ className = props.className,
4398
+ track = props.track,
4399
+ trackProps = props.trackProps;
4400
+ var emit = (0,useTrack/* useTrack */.n)('DataTable', {
4401
+ track: track,
4402
+ trackProps: trackProps
4403
+ });
4049
4404
  var headerStyle = (0,getMergedProps/* getMergedProps */.p)(props, dataTableHeaderProps).style;
4050
4405
  var rowStyle = (0,getMergedProps/* getMergedProps */.p)(props, dataTableRowProps).style;
4051
4406
  var cellStyle = (0,getMergedProps/* getMergedProps */.p)(props, dataTableCellProps).style;
@@ -4075,8 +4430,9 @@ var DataTableBase = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs
4075
4430
  },
4076
4431
  className: (0,classNames/* classNames */.x)(index < fixedRowsIndex && 'fixed'),
4077
4432
  onClick: function onClick() {
4078
- var _a;
4079
- return (_a = item.onClickRow) === null || _a === void 0 ? void 0 : _a.call(item, item.id);
4433
+ if (!item.onClickRow) return;
4434
+ emit('click', item.id);
4435
+ item.onClickRow(item.id);
4080
4436
  },
4081
4437
  children: item.value
4082
4438
  }, item.id);
@@ -4141,6 +4497,8 @@ __nuri_require__.d(__webpack_exports__, {
4141
4497
  var jsx_runtime_ = __nuri_require__(612);
4142
4498
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4143
4499
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4500
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4501
+ var useTrack = __nuri_require__(4560);
4144
4502
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4145
4503
  var classNames = __nuri_require__(3274);
4146
4504
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4323,17 +4681,29 @@ var tabs_rest = undefined && undefined.__rest || function (s, e) {
4323
4681
 
4324
4682
 
4325
4683
 
4684
+
4326
4685
  var Tabs = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4327
4686
  var rootClassName = (0,getMergedProps/* getMergedProps */.p)(props, {}).className;
4328
4687
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, tabsProps),
4329
4688
  items = _a.items,
4330
4689
  tabClassName = _a.className,
4331
- restProps = tabs_rest(_a, ["items", "className"]);
4690
+ _onValueChange = _a.onValueChange,
4691
+ track = _a.track,
4692
+ trackProps = _a.trackProps,
4693
+ restProps = tabs_rest(_a, ["items", "className", "onValueChange", "track", "trackProps"]);
4694
+ var emit = (0,useTrack/* useTrack */.n)('Tabs', {
4695
+ track: track,
4696
+ trackProps: trackProps
4697
+ });
4332
4698
  var tabsTriggerClassName = (0,classNames/* classNames */.x)(tabClassName, 'tabs-trigger');
4333
4699
  var tabsContentClassName = (0,classNames/* classNames */.x)(tabClassName, 'tabs-content');
4334
4700
  return (0,jsx_runtime_.jsxs)(base_tabs, tabs_assign({
4335
4701
  ref: ref,
4336
- className: (0,classNames/* classNames */.x)(rootClassName, 'tabs-root')
4702
+ className: (0,classNames/* classNames */.x)(rootClassName, 'tabs-root'),
4703
+ onValueChange: function onValueChange(id) {
4704
+ emit('change', id !== null && id !== void 0 ? id : undefined);
4705
+ _onValueChange === null || _onValueChange === void 0 ? void 0 : _onValueChange(id);
4706
+ }
4337
4707
  }, restProps, {
4338
4708
  children: [(0,jsx_runtime_.jsxs)(base_tabs.List, {
4339
4709
  className: (0,classNames/* classNames */.x)(tabClassName, 'tabs-list'),
@@ -4382,6 +4752,8 @@ __nuri_require__.d(__webpack_exports__, {
4382
4752
  var jsx_runtime_ = __nuri_require__(612);
4383
4753
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4384
4754
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4755
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4756
+ var useTrack = __nuri_require__(4560);
4385
4757
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4386
4758
  var classNames = __nuri_require__(3274);
4387
4759
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4531,6 +4903,7 @@ var text_area_rest = undefined && undefined.__rest || function (s, e) {
4531
4903
 
4532
4904
 
4533
4905
 
4906
+
4534
4907
  var TextArea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4535
4908
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, textAreaProps),
4536
4909
  className = _a.className,
@@ -4541,7 +4914,16 @@ var TextArea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
4541
4914
  defaultValue = _a.defaultValue,
4542
4915
  helperText = _a.helperText,
4543
4916
  isError = _a.isError,
4544
- restProps = text_area_rest(_a, ["className", "style", "title", "value", "onChange", "defaultValue", "helperText", "isError"]);
4917
+ _onFocus = _a.onFocus,
4918
+ _onBlur = _a.onBlur,
4919
+ track = _a.track,
4920
+ trackProps = _a.trackProps,
4921
+ restProps = text_area_rest(_a, ["className", "style", "title", "value", "onChange", "defaultValue", "helperText", "isError", "onFocus", "onBlur", "track", "trackProps"]);
4922
+ var emit = (0,useTrack/* useTrack */.n)('TextArea', {
4923
+ track: track,
4924
+ trackProps: trackProps
4925
+ });
4926
+ var focusedValueRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useRef)('');
4545
4927
  return (0,jsx_runtime_.jsx)(base_text_area, {
4546
4928
  value: value,
4547
4929
  onChange: onChange,
@@ -4555,7 +4937,15 @@ var TextArea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
4555
4937
  className: (0,classNames/* classNames */.x)('nuri-theme text-area-input-wrapper', className),
4556
4938
  style: style,
4557
4939
  children: (0,jsx_runtime_.jsx)(base_text_area.Textarea, text_area_assign({
4558
- ref: ref
4940
+ ref: ref,
4941
+ onFocus: function onFocus(e) {
4942
+ focusedValueRef.current = e.target.value;
4943
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
4944
+ },
4945
+ onBlur: function onBlur(e) {
4946
+ if (e.target.value !== focusedValueRef.current) emit('change');
4947
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
4948
+ }
4559
4949
  }, restProps))
4560
4950
  }), helperText && (0,jsx_runtime_.jsx)(base_text_area.HelperText, {
4561
4951
  className: (0,classNames/* classNames */.x)('text-area-helper-text', isError && 'error'),
@@ -4582,6 +4972,8 @@ __nuri_require__.d(__webpack_exports__, {
4582
4972
  var jsx_runtime_ = __nuri_require__(612);
4583
4973
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4584
4974
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4975
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4976
+ var useTrack = __nuri_require__(4560);
4585
4977
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4586
4978
  var classNames = __nuri_require__(3274);
4587
4979
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4724,6 +5116,7 @@ var text_field_rest = undefined && undefined.__rest || function (s, e) {
4724
5116
 
4725
5117
 
4726
5118
 
5119
+
4727
5120
  var TextField = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4728
5121
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, textFieldProps),
4729
5122
  className = _a.className,
@@ -4736,7 +5129,16 @@ var TextField = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
4736
5129
  defaultValue = _a.defaultValue,
4737
5130
  helperText = _a.helperText,
4738
5131
  isError = _a.isError,
4739
- restProps = text_field_rest(_a, ["className", "style", "leftIcon", "rightIcon", "title", "value", "onChange", "defaultValue", "helperText", "isError"]);
5132
+ _onFocus = _a.onFocus,
5133
+ _onBlur = _a.onBlur,
5134
+ track = _a.track,
5135
+ trackProps = _a.trackProps,
5136
+ restProps = text_field_rest(_a, ["className", "style", "leftIcon", "rightIcon", "title", "value", "onChange", "defaultValue", "helperText", "isError", "onFocus", "onBlur", "track", "trackProps"]);
5137
+ var emit = (0,useTrack/* useTrack */.n)('TextField', {
5138
+ track: track,
5139
+ trackProps: trackProps
5140
+ });
5141
+ var focusedValueRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useRef)('');
4740
5142
  return (0,jsx_runtime_.jsx)(base_text_field, {
4741
5143
  value: value,
4742
5144
  onChange: onChange,
@@ -4750,7 +5152,15 @@ var TextField = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
4750
5152
  className: (0,classNames/* classNames */.x)('nuri-theme text-field-input-wrapper', className),
4751
5153
  style: style,
4752
5154
  children: [leftIcon, (0,jsx_runtime_.jsx)(base_text_field.Input, text_field_assign({
4753
- ref: ref
5155
+ ref: ref,
5156
+ onFocus: function onFocus(e) {
5157
+ focusedValueRef.current = e.target.value;
5158
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
5159
+ },
5160
+ onBlur: function onBlur(e) {
5161
+ if (e.target.value !== focusedValueRef.current) emit('change');
5162
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
5163
+ }
4754
5164
  }, restProps)), rightIcon]
4755
5165
  }), helperText && (0,jsx_runtime_.jsx)(base_text_field.HelperText, {
4756
5166
  className: (0,classNames/* classNames */.x)('text-field-helper-text', isError && 'error'),
@@ -4967,6 +5377,8 @@ var SvgExclamation = function SvgExclamation(props) {
4967
5377
  /* harmony default export */ const exclamation = (SvgExclamation);
4968
5378
  // EXTERNAL MODULE: ./assets/icons/multifly.svg
4969
5379
  var multifly = __nuri_require__(6713);
5380
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
5381
+ var useTrack = __nuri_require__(4560);
4970
5382
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4971
5383
  var classNames = __nuri_require__(3274);
4972
5384
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -5007,6 +5419,7 @@ var __rest = undefined && undefined.__rest || function (s, e) {
5007
5419
 
5008
5420
 
5009
5421
 
5422
+
5010
5423
  // 상태를 뜻하는 variant 는 앞에 아이콘을 둔다. error 는 닫기와 같은 X 를 쓴다
5011
5424
  var VARIANT_ICON = {
5012
5425
  success: check/* default */.A,
@@ -5014,14 +5427,26 @@ var VARIANT_ICON = {
5014
5427
  error: multifly/* default */.A
5015
5428
  };
5016
5429
  var Toast = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
5430
+ var _a, _b;
5017
5431
  var className = props.className,
5018
5432
  title = props.title,
5019
5433
  description = props.description,
5020
5434
  variant = props.variant,
5021
5435
  action = props.action,
5022
- _a = props.showClose,
5023
- showClose = _a === void 0 ? true : _a,
5024
- restProps = __rest(props, ["className", "title", "description", "variant", "action", "showClose"]);
5436
+ _c = props.showClose,
5437
+ showClose = _c === void 0 ? true : _c,
5438
+ track = props.track,
5439
+ trackProps = props.trackProps,
5440
+ restProps = __rest(props, ["className", "title", "description", "variant", "action", "showClose", "track", "trackProps"]);
5441
+ var emit = (0,useTrack/* useTrack */.n)('Toast', {
5442
+ track: track,
5443
+ trackProps: trackProps
5444
+ });
5445
+ // Radix 는 open·defaultOpen 이 없으면 연 채로 시작한다. Radix 가 스스로 닫는 것은 이 값에 보이지 않아 다시 보내지 않는다.
5446
+ var shown = (_b = (_a = restProps.open) !== null && _a !== void 0 ? _a : restProps.defaultOpen) !== null && _b !== void 0 ? _b : true;
5447
+ (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useEffect)(function () {
5448
+ if (shown) emit('show');
5449
+ }, [shown]);
5025
5450
  var variantClassName = (0,getMergedProps/* getMergedProps */.p)({
5026
5451
  className: className,
5027
5452
  variant: variant
@@ -5207,10 +5632,11 @@ var tooltipContentProps = __assign(__assign({}, commonTooltipProps), {
5207
5632
  /* harmony export */ });
5208
5633
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
5209
5634
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
5210
- /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
5211
- /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(7335);
5212
- /* harmony import */ var _base_tooltip__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(909);
5213
- /* harmony import */ var _tooltip_props__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(8690);
5635
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(4560);
5636
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
5637
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(7335);
5638
+ /* harmony import */ var _base_tooltip__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(909);
5639
+ /* harmony import */ var _tooltip_props__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(8690);
5214
5640
  var __assign = undefined && undefined.__assign || function () {
5215
5641
  __assign = Object.assign || function (t) {
5216
5642
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -5236,6 +5662,7 @@ var __rest = undefined && undefined.__rest || function (s, e) {
5236
5662
 
5237
5663
 
5238
5664
 
5665
+
5239
5666
  // ref 는 Trigger 를 거쳐 trigger 로 넘긴 요소에 붙는다.
5240
5667
  var Tooltip = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
5241
5668
  var trigger = props.trigger,
@@ -5244,22 +5671,33 @@ var Tooltip = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(fun
5244
5671
  direction = _a === void 0 ? 'bottom' : _a,
5245
5672
  _b = props.disabled,
5246
5673
  disabled = _b === void 0 ? false : _b,
5247
- restProps = __rest(props, ["trigger", "content", "direction", "disabled"]);
5248
- var contentClassName = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__/* .getMergedProps */ .p)(props, _tooltip_props__WEBPACK_IMPORTED_MODULE_5__/* .tooltipContentProps */ .bZ).className;
5674
+ _onOpenChange = props.onOpenChange,
5675
+ track = props.track,
5676
+ trackProps = props.trackProps,
5677
+ restProps = __rest(props, ["trigger", "content", "direction", "disabled", "onOpenChange", "track", "trackProps"]);
5678
+ var contentClassName = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__/* .getMergedProps */ .p)(props, _tooltip_props__WEBPACK_IMPORTED_MODULE_6__/* .tooltipContentProps */ .bZ).className;
5679
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('Tooltip', {
5680
+ track: track,
5681
+ trackProps: trackProps
5682
+ });
5249
5683
  // radix 트리를 아예 그리지 않는다. open 으로 막으면 열린 채 남는 경우가 있다.
5250
5684
  if (disabled) return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
5251
5685
  children: trigger
5252
5686
  });
5253
5687
  // delayDuration 을 넘기지 않으면 Provider 의 값(기본 100ms)을 따른다.
5254
- return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_tooltip__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, __assign({
5255
- disableHoverableContent: true
5688
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_tooltip__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, __assign({
5689
+ disableHoverableContent: true,
5690
+ onOpenChange: function onOpenChange(open) {
5691
+ if (open) emit('show');
5692
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(open);
5693
+ }
5256
5694
  }, restProps, {
5257
- children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A.Trigger, {
5695
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Trigger, {
5258
5696
  ref: ref,
5259
5697
  asChild: true,
5260
5698
  children: trigger
5261
- }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A.Content, {
5262
- className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(contentClassName, 'tooltip-content'),
5699
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Content, {
5700
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(contentClassName, 'tooltip-content'),
5263
5701
  direction: direction,
5264
5702
  children: content
5265
5703
  })]
@@ -5320,6 +5758,34 @@ var useExternalState = function useExternalState(_a) {
5320
5758
 
5321
5759
  /***/ },
5322
5760
 
5761
+ /***/ 4560
5762
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
5763
+
5764
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
5765
+ /* harmony export */ n: () => (/* binding */ useTrack)
5766
+ /* harmony export */ });
5767
+ /* harmony import */ var _components_logging_log_context__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(4804);
5768
+
5769
+ /** 컴포넌트 하나가 쓸 emit 함수. Provider 가 없거나 track 이 없으면 아무것도 보내지 않는다. */
5770
+ var useTrack = function useTrack(component, props) {
5771
+ var track = props.track,
5772
+ trackProps = props.trackProps;
5773
+ var emit = (0,_components_logging_log_context__WEBPACK_IMPORTED_MODULE_0__/* .useLogEmitter */ .e)();
5774
+ return function (action, value) {
5775
+ if (!track) return;
5776
+ emit === null || emit === void 0 ? void 0 : emit({
5777
+ component: component,
5778
+ action: action,
5779
+ track: track,
5780
+ value: value,
5781
+ props: trackProps,
5782
+ timestamp: Date.now()
5783
+ });
5784
+ };
5785
+ };
5786
+
5787
+ /***/ },
5788
+
5323
5789
  /***/ 7298
5324
5790
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
5325
5791
 
@@ -5538,7 +6004,7 @@ var x = (y) => {
5538
6004
  var x = {}; __nuri_require__.d(x, y); return x
5539
6005
  }
5540
6006
  var y = (x) => (() => (x))
5541
- 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), ["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) });
6007
+ 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) });
5542
6008
 
5543
6009
  /***/ },
5544
6010
 
@@ -5669,6 +6135,8 @@ var __webpack_exports__ = {};
5669
6135
  var avatar = __nuri_require__(5468);
5670
6136
  // EXTERNAL MODULE: ./components/button/cta-button.tsx
5671
6137
  var cta_button = __nuri_require__(910);
6138
+ // EXTERNAL MODULE: ./components/callout/callout.tsx
6139
+ var callout = __nuri_require__(1163);
5672
6140
  // EXTERNAL MODULE: ./components/badge/option-badge.tsx
5673
6141
  var option_badge = __nuri_require__(9401);
5674
6142
  // EXTERNAL MODULE: ./components/badge/icon-text-badge.tsx
@@ -5909,6 +6377,10 @@ var bottom_nav = __nuri_require__(1768);
5909
6377
  var step_progress = __nuri_require__(7131);
5910
6378
  // EXTERNAL MODULE: ./components/chip-group/chip-group.tsx + 2 modules
5911
6379
  var chip_group = __nuri_require__(3894);
6380
+ // EXTERNAL MODULE: ./components/logging/logging.tsx
6381
+ var logging = __nuri_require__(7111);
6382
+ // EXTERNAL MODULE: ./components/logging/log-context.tsx
6383
+ var log_context = __nuri_require__(4804);
5912
6384
  ;// ./tokens/generated/primitive.ts
5913
6385
  // tokens/figma.json 에서 생성됨 — 손으로 고치지 않는다. `npm run tokens`
5914
6386
  var primitive = {
@@ -6316,6 +6788,8 @@ var colors = __nuri_require__(7232);
6316
6788
 
6317
6789
 
6318
6790
 
6791
+
6792
+
6319
6793
 
6320
6794
 
6321
6795
 
@@ -6325,6 +6799,7 @@ export const Avatar = avatar/* default */.A;
6325
6799
  export const BottomNav = bottom_nav/* default */.A;
6326
6800
  export const Breadcrumb = breadcrumb/* default */.A;
6327
6801
  export const CTAButton = cta_button/* default */.A;
6802
+ export const Callout = callout/* default */.A;
6328
6803
  export const Checkbox = check_box/* default */.A;
6329
6804
  export const ChipGroup = chip_group/* default */.A;
6330
6805
  export const CollapsibleMenu = collapsible_menu/* default */.A;
@@ -6334,6 +6809,7 @@ export const DropDown = drop_down/* default */.A;
6334
6809
  export const Icon = icon/* default */.A;
6335
6810
  export const IconTextBadge = icon_text_badge/* default */.A;
6336
6811
  export const IconTextOptionBadge = icon_text_option_badge/* default */.A;
6812
+ export const LogProvider = log_context/* LogProvider */._;
6337
6813
  export const Modal = modal/* default */.A;
6338
6814
  export const ModalWithDoubleButton = modal_with_double_button/* default */.A;
6339
6815
  export const OptionBadge = option_badge/* default */.A;
@@ -6351,3 +6827,4 @@ export const Toast = toast/* default */.A;
6351
6827
  export const ToastProvider = base_toast/* ToastProvider */.t;
6352
6828
  export const Tooltip = tooltip/* default */.A;
6353
6829
  export const TooltipProvider = base_tooltip/* TooltipProvider */.B;
6830
+ export const useLog = logging/* useLog */.e;