@nurihaus/web-design-system 3.3.0 → 3.4.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 (87) hide show
  1. package/README.md +36 -0
  2. package/dist/ai/components.md +120 -9
  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/check-box.js +24 -8
  7. package/dist/chip-group.js +21 -7
  8. package/dist/{chunk-563.js → chunk-1563.js} +26 -13
  9. package/dist/{chunk-657.js → chunk-1657.js} +2 -2
  10. package/dist/{chunk-777.js → chunk-2777.js} +2 -2
  11. package/dist/{chunk-558.js → chunk-4558.js} +2 -2
  12. package/dist/chunk-4560.js +77 -0
  13. package/dist/{chunk-917.js → chunk-4917.js} +2 -2
  14. package/dist/{chunk-77.js → chunk-5077.js} +2 -2
  15. package/dist/{chunk-149.js → chunk-6149.js} +2 -2
  16. package/dist/{chunk-302.js → chunk-6302.js} +2 -2
  17. package/dist/{chunk-364.js → chunk-6364.js} +2 -2
  18. package/dist/{chunk-713.js → chunk-6713.js} +2 -2
  19. package/dist/{chunk-298.js → chunk-7298.js} +2 -2
  20. package/dist/{chunk-653.js → chunk-7653.js} +2 -2
  21. package/dist/{chunk-739.js → chunk-7739.js} +2 -2
  22. package/dist/{chunk-309.js → chunk-8690.js} +2 -2
  23. package/dist/{chunk-933.js → chunk-8933.js} +2 -2
  24. package/dist/chunk-910.js +23 -10
  25. package/dist/{chunk-387.js → chunk-9387.js} +2 -2
  26. package/dist/{chunk-436.js → chunk-9436.js} +2 -2
  27. package/dist/{chunk-976.js → chunk-9976.js} +3 -3
  28. package/dist/collapsible-menu.js +25 -12
  29. package/dist/components/badge/badge-props.d.ts +4 -4
  30. package/dist/components/badge/badge.stories.d.ts +1 -1
  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 +2 -1
  35. package/dist/components/button/button.stories.d.ts +1 -1
  36. package/dist/components/check-box/check-box-type.d.ts +2 -1
  37. package/dist/components/chip-group/chip-group-type.d.ts +2 -1
  38. package/dist/components/collapsible-menu/collapsible-menu-type.d.ts +2 -1
  39. package/dist/components/drawer/drawer-type.d.ts +2 -1
  40. package/dist/components/drop-down/drop-down-type.d.ts +2 -1
  41. package/dist/components/logging/log-context.d.ts +9 -0
  42. package/dist/components/logging/logging-type.d.ts +25 -0
  43. package/dist/components/logging/logging.d.ts +5 -0
  44. package/dist/components/logging/logging.stories.d.ts +18 -0
  45. package/dist/components/modal/modal-type.d.ts +2 -1
  46. package/dist/components/pagination/pagination-type.d.ts +2 -1
  47. package/dist/components/radio/radio-type.d.ts +3 -1
  48. package/dist/components/radio/radio.d.ts +2 -1
  49. package/dist/components/radio/radio.stories.d.ts +1 -1
  50. package/dist/components/skeleton/skeleton.stories.d.ts +5 -5
  51. package/dist/components/switch/switch-type.d.ts +2 -1
  52. package/dist/components/table/table-type.d.ts +2 -1
  53. package/dist/components/tabs/tabs-type.d.ts +2 -1
  54. package/dist/components/text-area/text-area-type.d.ts +2 -1
  55. package/dist/components/text-field/text-field-type.d.ts +2 -1
  56. package/dist/components/toast/toast-type.d.ts +2 -1
  57. package/dist/components/toast/toast.stories.d.ts +8 -6
  58. package/dist/components/tooltip/tooltip-type.d.ts +2 -1
  59. package/dist/components.css +38 -0
  60. package/dist/cta-button.js +35 -20
  61. package/dist/data-table.js +19 -7
  62. package/dist/drawer.js +23 -9
  63. package/dist/drop-down.js +25 -9
  64. package/dist/helpers/hooks/useTrack.d.ts +3 -0
  65. package/dist/icon-text-badge.js +12 -10
  66. package/dist/icon-text-option-badge.js +6 -6
  67. package/dist/icon.js +5 -5
  68. package/dist/index.d.ts +2 -0
  69. package/dist/index.js +433 -80
  70. package/dist/loading.js +6 -6
  71. package/dist/logging.js +147 -0
  72. package/dist/modal-with-double-button.js +14 -12
  73. package/dist/modal.js +39 -26
  74. package/dist/option-badge.js +12 -10
  75. package/dist/pagination.js +23 -9
  76. package/dist/radio.js +24 -10
  77. package/dist/skeleton.js +4 -4
  78. package/dist/step-progress.js +3 -3
  79. package/dist/styles.css +32 -0
  80. package/dist/switch.js +24 -8
  81. package/dist/tabs.js +22 -6
  82. package/dist/text-area.js +30 -8
  83. package/dist/text-field.js +31 -9
  84. package/dist/text.js +5 -5
  85. package/dist/toast.js +32 -15
  86. package/dist/tooltip.js +33 -18
  87. package/package.json +5 -1
package/dist/index.js CHANGED
@@ -268,7 +268,7 @@ var __assign = undefined && undefined.__assign || function () {
268
268
  return __assign.apply(this, arguments);
269
269
  };
270
270
 
271
- var variant = ['neutral', 'primary', 'danger', 'outlined'];
271
+ var variant = ['neutral', 'primary', 'danger', 'outlined', 'callout'];
272
272
  var sizes = ['xs', 's', 'm', 'l', 'xl'];
273
273
  var commonBadgeProps = {
274
274
  variant: {
@@ -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,12 @@ 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 _loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(6302);
1018
+ /* harmony import */ var _base_button__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(8933);
1019
+ /* harmony import */ var _button_props__WEBPACK_IMPORTED_MODULE_7__ = __nuri_require__(9976);
994
1020
  var __assign = undefined && undefined.__assign || function () {
995
1021
  __assign = Object.assign || function (t) {
996
1022
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -1016,17 +1042,29 @@ var __rest = undefined && undefined.__rest || function (s, e) {
1016
1042
 
1017
1043
 
1018
1044
 
1045
+
1019
1046
  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),
1047
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__/* .getMergedProps */ .p)(props, _button_props__WEBPACK_IMPORTED_MODULE_7__/* .ctaButtonProps */ .Lr),
1021
1048
  className = _a.className,
1022
1049
  text = _a.text,
1023
1050
  leftIcon = _a.leftIcon,
1024
1051
  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({
1052
+ _onClick = _a.onClick,
1053
+ track = _a.track,
1054
+ trackProps = _a.trackProps,
1055
+ restProps = __rest(_a, ["className", "text", "leftIcon", "rightIcon", "onClick", "track", "trackProps"]);
1056
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('CTAButton', {
1057
+ track: track,
1058
+ trackProps: trackProps
1059
+ });
1060
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_button__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, __assign({
1027
1061
  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, {})
1062
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'cta-button'),
1063
+ loadingComponent: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_loading_spinner_spinner__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {}),
1064
+ onClick: function onClick(event) {
1065
+ emit('click');
1066
+ _onClick === null || _onClick === void 0 ? void 0 : _onClick(event);
1067
+ }
1030
1068
  }, restProps, {
1031
1069
  children: [leftIcon, text, rightIcon]
1032
1070
  }));
@@ -1051,6 +1089,8 @@ var jsx_runtime_ = __nuri_require__(612);
1051
1089
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1052
1090
  // EXTERNAL MODULE: ./assets/icons/check.svg
1053
1091
  var check = __nuri_require__(5077);
1092
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1093
+ var useTrack = __nuri_require__(4560);
1054
1094
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1055
1095
  var classNames = __nuri_require__(3274);
1056
1096
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1183,15 +1223,27 @@ var check_box_rest = undefined && undefined.__rest || function (s, e) {
1183
1223
 
1184
1224
 
1185
1225
 
1226
+
1186
1227
  var CheckBox = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1187
1228
  var rootClassName = (0,getMergedProps/* getMergedProps */.p)(props, {}).className;
1188
1229
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, checkBoxIndicatorProps),
1189
1230
  label = _a.label,
1190
1231
  indicatorClassName = _a.className,
1191
- restProps = check_box_rest(_a, ["label", "className"]);
1232
+ _onChange = _a.onChange,
1233
+ track = _a.track,
1234
+ trackProps = _a.trackProps,
1235
+ restProps = check_box_rest(_a, ["label", "className", "onChange", "track", "trackProps"]);
1236
+ var emit = (0,useTrack/* useTrack */.n)('CheckBox', {
1237
+ track: track,
1238
+ trackProps: trackProps
1239
+ });
1192
1240
  return (0,jsx_runtime_.jsxs)(base_check_box, check_box_assign({
1193
1241
  ref: ref,
1194
- className: (0,classNames/* classNames */.x)(rootClassName, 'check-box')
1242
+ className: (0,classNames/* classNames */.x)(rootClassName, 'check-box'),
1243
+ onChange: function onChange(checked) {
1244
+ emit('change', checked ? 'on' : 'off');
1245
+ _onChange === null || _onChange === void 0 ? void 0 : _onChange(checked);
1246
+ }
1195
1247
  }, restProps, {
1196
1248
  children: [(0,jsx_runtime_.jsx)("div", {
1197
1249
  className: (0,classNames/* classNames */.x)(indicatorClassName, 'check-box-indicator wrapper'),
@@ -1225,6 +1277,8 @@ var jsx_runtime_ = __nuri_require__(612);
1225
1277
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1226
1278
  // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
1227
1279
  var useExternalState = __nuri_require__(9387);
1280
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1281
+ var useTrack = __nuri_require__(4560);
1228
1282
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1229
1283
  var classNames = __nuri_require__(3274);
1230
1284
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1303,6 +1357,7 @@ var chipGroupProps = {};
1303
1357
 
1304
1358
 
1305
1359
 
1360
+
1306
1361
  var ChipGroup = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1307
1362
  var _a, _b;
1308
1363
  var _c = (0,getMergedProps/* getMergedProps */.p)(props, chipGroupProps),
@@ -1312,10 +1367,19 @@ var ChipGroup = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
1312
1367
  value = _c.value,
1313
1368
  defaultValue = _c.defaultValue,
1314
1369
  onValueChange = _c.onValueChange,
1315
- label = _c.label;
1370
+ label = _c.label,
1371
+ track = _c.track,
1372
+ trackProps = _c.trackProps;
1373
+ var emit = (0,useTrack/* useTrack */.n)('ChipGroup', {
1374
+ track: track,
1375
+ trackProps: trackProps
1376
+ });
1316
1377
  var _d = (0,useExternalState/* useExternalState */.C)({
1317
1378
  prop: value,
1318
- handler: onValueChange,
1379
+ handler: function handler(id) {
1380
+ emit('change', id);
1381
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(id);
1382
+ },
1319
1383
  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
1384
  }),
1321
1385
  selected = _d[0],
@@ -1358,6 +1422,8 @@ __nuri_require__.d(__webpack_exports__, {
1358
1422
  var jsx_runtime_ = __nuri_require__(612);
1359
1423
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
1360
1424
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1425
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1426
+ var useTrack = __nuri_require__(4560);
1361
1427
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1362
1428
  var classNames = __nuri_require__(3274);
1363
1429
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1458,6 +1524,7 @@ var collapsible_menu_assign = undefined && undefined.__assign || function () {
1458
1524
 
1459
1525
 
1460
1526
 
1527
+
1461
1528
  var Anchor = function Anchor(props) {
1462
1529
  return (0,jsx_runtime_.jsx)("a", collapsible_menu_assign({}, props));
1463
1530
  };
@@ -1471,7 +1538,13 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1471
1538
  onActiveKeyChange = _a.onActiveKeyChange,
1472
1539
  _b = _a.indent,
1473
1540
  indent = _b === void 0 ? 12 : _b,
1474
- linkComponent = _a.linkComponent;
1541
+ linkComponent = _a.linkComponent,
1542
+ track = _a.track,
1543
+ trackProps = _a.trackProps;
1544
+ var emit = (0,useTrack/* useTrack */.n)('CollapsibleMenu', {
1545
+ track: track,
1546
+ trackProps: trackProps
1547
+ });
1475
1548
  var Link = linkComponent !== null && linkComponent !== void 0 ? linkComponent : Anchor;
1476
1549
  var rootClassName = (0,classNames/* classNames */.x)(className, 'collapsible-menu');
1477
1550
  var _hasActiveDescendant = function hasActiveDescendant(item) {
@@ -1480,6 +1553,12 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1480
1553
  if (item.key === activeKey) return true;
1481
1554
  return (_b = (_a = item.children) === null || _a === void 0 ? void 0 : _a.some(_hasActiveDescendant)) !== null && _b !== void 0 ? _b : false;
1482
1555
  };
1556
+ var selectItem = function selectItem(item) {
1557
+ var _a;
1558
+ emit('navigate', item.key);
1559
+ onActiveKeyChange === null || onActiveKeyChange === void 0 ? void 0 : onActiveKeyChange(item.key);
1560
+ (_a = item.onSelect) === null || _a === void 0 ? void 0 : _a.call(item);
1561
+ };
1483
1562
  var _renderItems = function renderItems(targetItems, depth) {
1484
1563
  var indentStyle = {
1485
1564
  paddingLeft: "".concat(depth * indent, "px")
@@ -1520,13 +1599,11 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1520
1599
  "aria-current": isActive ? 'page' : undefined,
1521
1600
  "aria-disabled": item.disabled ? 'true' : undefined,
1522
1601
  onClick: function onClick(e) {
1523
- var _a;
1524
1602
  if (item.disabled) {
1525
1603
  e.preventDefault();
1526
1604
  return;
1527
1605
  }
1528
- onActiveKeyChange === null || onActiveKeyChange === void 0 ? void 0 : onActiveKeyChange(item.key);
1529
- (_a = item.onSelect) === null || _a === void 0 ? void 0 : _a.call(item);
1606
+ selectItem(item);
1530
1607
  },
1531
1608
  children: left
1532
1609
  }, item.key);
@@ -1536,9 +1613,7 @@ var CollapsibleMenu = /*#__PURE__*/(0,external_root_React_commonjs2_react_common
1536
1613
  className: itemClassName,
1537
1614
  disabled: item.disabled,
1538
1615
  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);
1616
+ return selectItem(item);
1542
1617
  },
1543
1618
  children: left
1544
1619
  }, item.key);
@@ -1683,6 +1758,8 @@ var jsx_runtime_ = __nuri_require__(612);
1683
1758
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
1684
1759
  // EXTERNAL MODULE: ./assets/icons/multifly.svg
1685
1760
  var multifly = __nuri_require__(6713);
1761
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1762
+ var useTrack = __nuri_require__(4560);
1686
1763
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1687
1764
  var classNames = __nuri_require__(3274);
1688
1765
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -1817,6 +1894,7 @@ var drawer_assign = undefined && undefined.__assign || function () {
1817
1894
 
1818
1895
 
1819
1896
 
1897
+
1820
1898
  // ref 는 패널(Dialog.Content) div 에 붙는다. Root 는 DOM 을 그리지 않는다.
1821
1899
  var Drawer = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
1822
1900
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, drawerContentProps),
@@ -1829,13 +1907,22 @@ var Drawer = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_
1829
1907
  showCloseIcon = _b === void 0 ? true : _b,
1830
1908
  open = _a.open,
1831
1909
  defaultOpen = _a.defaultOpen,
1832
- onOpenChange = _a.onOpenChange,
1910
+ _onOpenChange = _a.onOpenChange,
1833
1911
  className = _a.className,
1834
- style = _a.style;
1912
+ style = _a.style,
1913
+ track = _a.track,
1914
+ trackProps = _a.trackProps;
1915
+ var emit = (0,useTrack/* useTrack */.n)('Drawer', {
1916
+ track: track,
1917
+ trackProps: trackProps
1918
+ });
1835
1919
  return (0,jsx_runtime_.jsxs)(base_drawer, {
1836
1920
  open: open,
1837
1921
  defaultOpen: defaultOpen,
1838
- onOpenChange: onOpenChange,
1922
+ onOpenChange: function onOpenChange(next) {
1923
+ emit(next ? 'open' : 'close');
1924
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(next);
1925
+ },
1839
1926
  children: [trigger && (0,jsx_runtime_.jsx)(base_drawer.Trigger, {
1840
1927
  asChild: true,
1841
1928
  children: trigger
@@ -1891,6 +1978,8 @@ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ =
1891
1978
  var chevronDown = __nuri_require__(9436);
1892
1979
  // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
1893
1980
  var useExternalState = __nuri_require__(9387);
1981
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
1982
+ var useTrack = __nuri_require__(4560);
1894
1983
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
1895
1984
  var classNames = __nuri_require__(3274);
1896
1985
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -2034,6 +2123,7 @@ var drop_down_rest = undefined && undefined.__rest || function (s, e) {
2034
2123
 
2035
2124
 
2036
2125
 
2126
+
2037
2127
  var DropDown = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
2038
2128
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, dropDownSingleProps),
2039
2129
  className = _a.className,
@@ -2052,7 +2142,14 @@ var DropDown = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
2052
2142
  openProp = _a.open,
2053
2143
  onOpenChangeProp = _a.onOpenChange,
2054
2144
  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"]);
2145
+ _onValueChange = _a.onValueChange,
2146
+ track = _a.track,
2147
+ trackProps = _a.trackProps,
2148
+ restProps = drop_down_rest(_a, ["className", "renderValue", "placeholder", "options", "value", "disabled", "leftIcon", "rightIcon", "style", "renderOption", "side", "align", "position", "open", "onOpenChange", "defaultOpen", "onValueChange", "track", "trackProps"]);
2149
+ var emit = (0,useTrack/* useTrack */.n)('DropDown', {
2150
+ track: track,
2151
+ trackProps: trackProps
2152
+ });
2056
2153
  var _b = (0,useExternalState/* useExternalState */.C)({
2057
2154
  prop: openProp,
2058
2155
  handler: onOpenChangeProp,
@@ -2067,7 +2164,11 @@ var DropDown = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
2067
2164
  value: value,
2068
2165
  disabled: disabled,
2069
2166
  open: open,
2070
- onOpenChange: setOpen
2167
+ onOpenChange: setOpen,
2168
+ onValueChange: function onValueChange(next) {
2169
+ emit('change', next);
2170
+ _onValueChange === null || _onValueChange === void 0 ? void 0 : _onValueChange(next);
2171
+ }
2071
2172
  }, restProps, {
2072
2173
  children: [(0,jsx_runtime_.jsxs)(base_drop_down.Trigger, {
2073
2174
  className: (0,classNames/* classNames */.x)(className, 'drop-down-single-trigger'),
@@ -2690,6 +2791,82 @@ Spinner.displayName = 'Spinner';
2690
2791
 
2691
2792
  /***/ },
2692
2793
 
2794
+ /***/ 4804
2795
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2796
+
2797
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
2798
+ /* harmony export */ _: () => (/* binding */ LogProvider),
2799
+ /* harmony export */ e: () => (/* binding */ useLogEmitter)
2800
+ /* harmony export */ });
2801
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
2802
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
2803
+ var _a;
2804
+
2805
+
2806
+ // 진입점(`/logging`, `/cta-button`, 루트)마다 이 파일이 따로 들어가므로 context 는 전역 키 하나에 둔다.
2807
+ var CONTEXT_KEY = Symbol["for"]('@nurihaus/web-design-system/log-provider');
2808
+ var registry = globalThis;
2809
+ var LogContext = (_a = registry[CONTEXT_KEY]) !== null && _a !== void 0 ? _a : registry[CONTEXT_KEY] = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(null);
2810
+ var LogProvider = function LogProvider(props) {
2811
+ var onEvent = props.onEvent,
2812
+ children = props.children;
2813
+ // context 값이 Provider 렌더마다 바뀌면 track 을 단 컴포넌트가 모두 다시 그려진다. 최신 onEvent 는 ref 로 읽는다.
2814
+ var onEventRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(onEvent);
2815
+ onEventRef.current = onEvent;
2816
+ var emit = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function (event) {
2817
+ // 로그 수집기가 던져도 클릭·열기 같은 UI 동작은 이어져야 한다.
2818
+ try {
2819
+ onEventRef.current(event);
2820
+ } catch (error) {
2821
+ console.error('[LogProvider] onEvent threw', error);
2822
+ }
2823
+ }, []);
2824
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogContext.Provider, {
2825
+ value: emit,
2826
+ children: children
2827
+ });
2828
+ };
2829
+ LogProvider.displayName = 'LogProvider';
2830
+ /** LogProvider 가 둔 emit 함수. Provider 밖이면 null 이다. */
2831
+ var useLogEmitter = function useLogEmitter() {
2832
+ return (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(LogContext);
2833
+ };
2834
+
2835
+ /***/ },
2836
+
2837
+ /***/ 7111
2838
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2839
+
2840
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
2841
+ /* harmony export */ e: () => (/* binding */ useLog)
2842
+ /* harmony export */ });
2843
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(1041);
2844
+ /* harmony import */ var _log_context__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(4804);
2845
+ var __assign = undefined && undefined.__assign || function () {
2846
+ __assign = Object.assign || function (t) {
2847
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2848
+ s = arguments[i];
2849
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2850
+ }
2851
+ return t;
2852
+ };
2853
+ return __assign.apply(this, arguments);
2854
+ };
2855
+
2856
+
2857
+
2858
+ /** 컴포넌트 밖의 사용 로그를 남긴다. LogProvider 밖이면 아무것도 하지 않는다. */
2859
+ var useLog = function useLog() {
2860
+ var emit = (0,_log_context__WEBPACK_IMPORTED_MODULE_1__/* .useLogEmitter */ .e)();
2861
+ return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (event) {
2862
+ return emit === null || emit === void 0 ? void 0 : emit(__assign(__assign({}, event), {
2863
+ timestamp: Date.now()
2864
+ }));
2865
+ }, [emit]);
2866
+ };
2867
+
2868
+ /***/ },
2869
+
2693
2870
  /***/ 1657
2694
2871
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
2695
2872
 
@@ -2973,11 +3150,13 @@ var ModalWithDoubleButton = {
2973
3150
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
2974
3151
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
2975
3152
  /* 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);
3153
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(4560);
3154
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(3274);
3155
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(7335);
3156
+ /* harmony import */ var _button_base_button__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(8933);
3157
+ /* harmony import */ var _base_modal__WEBPACK_IMPORTED_MODULE_7__ = __nuri_require__(1657);
3158
+ /* harmony import */ var _modal_props__WEBPACK_IMPORTED_MODULE_8__ = __nuri_require__(5214);
3159
+
2981
3160
 
2982
3161
 
2983
3162
 
@@ -2988,10 +3167,10 @@ var ModalWithDoubleButton = {
2988
3167
 
2989
3168
  // Title·Description 은 Text 로 감싸지 않는다. Text 가 id 를 버려 Radix 의 aria-labelledby 연결이 끊긴다.
2990
3169
  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_),
3170
+ var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_5__/* .getMergedProps */ .p)(props, _modal_props__WEBPACK_IMPORTED_MODULE_8__/* .modalProps */ .y_),
2992
3171
  open = _a.open,
2993
3172
  defaultOpen = _a.defaultOpen,
2994
- onOpenChange = _a.onOpenChange,
3173
+ _onOpenChange = _a.onOpenChange,
2995
3174
  trigger = _a.trigger,
2996
3175
  title = _a.title,
2997
3176
  description = _a.description,
@@ -3000,32 +3179,41 @@ var Modal = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(funct
3000
3179
  _b = _a.showCloseIcon,
3001
3180
  showCloseIcon = _b === void 0 ? true : _b,
3002
3181
  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, {
3182
+ style = _a.style,
3183
+ track = _a.track,
3184
+ trackProps = _a.trackProps;
3185
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_3__/* .useTrack */ .n)('Modal', {
3186
+ track: track,
3187
+ trackProps: trackProps
3188
+ });
3189
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, {
3005
3190
  open: open,
3006
3191
  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, {
3192
+ onOpenChange: function onOpenChange(next) {
3193
+ emit(next ? 'open' : 'close');
3194
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(next);
3195
+ },
3196
+ children: [trigger && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Trigger, {
3009
3197
  asChild: true,
3010
3198
  children: trigger
3011
- }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Container, {
3199
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Container, {
3012
3200
  ref: ref,
3013
- className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(className, 'modal'),
3201
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_4__/* .classNames */ .x)(className, 'modal'),
3014
3202
  style: style,
3015
3203
  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
3016
3204
  className: 'modal-header',
3017
- children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Title, {
3205
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Title, {
3018
3206
  className: 'modal-title',
3019
3207
  children: title
3020
- }), showCloseIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Close, {
3208
+ }), showCloseIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Close, {
3021
3209
  className: 'modal-close-icon',
3022
3210
  "aria-label": "\uB2EB\uAE30",
3023
3211
  asChild: true,
3024
- children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_button_base_button__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, {
3212
+ children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_button_base_button__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, {
3025
3213
  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_assets_icons_multifly_svg__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, {})
3026
3214
  })
3027
3215
  })]
3028
- }), description && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Description, {
3216
+ }), description && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_modal__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.Description, {
3029
3217
  className: 'modal-description',
3030
3218
  children: description
3031
3219
  }), children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
@@ -3060,6 +3248,8 @@ var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ =
3060
3248
  var chevronDown = __nuri_require__(9436);
3061
3249
  // EXTERNAL MODULE: ./helpers/hooks/useExternalState.ts
3062
3250
  var useExternalState = __nuri_require__(9387);
3251
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
3252
+ var useTrack = __nuri_require__(4560);
3063
3253
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3064
3254
  var classNames = __nuri_require__(3274);
3065
3255
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -3184,6 +3374,7 @@ var __spreadArray = undefined && undefined.__spreadArray || function (to, from,
3184
3374
 
3185
3375
 
3186
3376
 
3377
+
3187
3378
  var ELLIPSIS = 'ellipsis';
3188
3379
  var range = function range(start, end) {
3189
3380
  return Array.from({
@@ -3221,11 +3412,20 @@ var Pagination = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_re
3221
3412
  _b = _a.siblingCount,
3222
3413
  siblingCount = _b === void 0 ? 1 : _b,
3223
3414
  disabled = _a.disabled,
3224
- restProps = pagination_rest(_a, ["className", "totalPages", "page", "defaultPage", "onPageChange", "siblingCount", "disabled"]);
3415
+ track = _a.track,
3416
+ trackProps = _a.trackProps,
3417
+ restProps = pagination_rest(_a, ["className", "totalPages", "page", "defaultPage", "onPageChange", "siblingCount", "disabled", "track", "trackProps"]);
3418
+ var emit = (0,useTrack/* useTrack */.n)('Pagination', {
3419
+ track: track,
3420
+ trackProps: trackProps
3421
+ });
3225
3422
  var lastPage = Math.max(totalPages, 1);
3226
3423
  var _c = (0,useExternalState/* useExternalState */.C)({
3227
3424
  prop: pageProp,
3228
- handler: onPageChange,
3425
+ handler: function handler(next) {
3426
+ emit('change', String(next));
3427
+ onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(next);
3428
+ },
3229
3429
  defaultProp: defaultPage !== null && defaultPage !== void 0 ? defaultPage : 1
3230
3430
  }),
3231
3431
  pageValue = _c[0],
@@ -3294,6 +3494,8 @@ __nuri_require__.d(__webpack_exports__, {
3294
3494
  var jsx_runtime_ = __nuri_require__(612);
3295
3495
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3296
3496
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
3497
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
3498
+ var useTrack = __nuri_require__(4560);
3297
3499
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3298
3500
  var classNames = __nuri_require__(3274);
3299
3501
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -3428,16 +3630,26 @@ var radioProps = {};
3428
3630
 
3429
3631
 
3430
3632
 
3633
+
3431
3634
  var Radio = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3432
3635
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, radioProps),
3433
3636
  className = _a.className,
3434
3637
  selected = _a.selected,
3435
- onChange = _a.onChange,
3436
- options = _a.options;
3638
+ _onChange = _a.onChange,
3639
+ options = _a.options,
3640
+ track = _a.track,
3641
+ trackProps = _a.trackProps;
3642
+ var emit = (0,useTrack/* useTrack */.n)('Radio', {
3643
+ track: track,
3644
+ trackProps: trackProps
3645
+ });
3437
3646
  return (0,jsx_runtime_.jsx)(base_radio, {
3438
3647
  options: options,
3439
3648
  selected: selected,
3440
- onChange: onChange,
3649
+ onChange: function onChange(id) {
3650
+ emit('change', id !== null && id !== void 0 ? id : undefined);
3651
+ _onChange === null || _onChange === void 0 ? void 0 : _onChange(id);
3652
+ },
3441
3653
  children: (0,jsx_runtime_.jsx)(base_radio.OptionGroup, {
3442
3654
  ref: ref,
3443
3655
  className: (0,classNames/* classNames */.x)(className, 'radio radio-group'),
@@ -3758,6 +3970,8 @@ __nuri_require__.d(__webpack_exports__, {
3758
3970
  var jsx_runtime_ = __nuri_require__(612);
3759
3971
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3760
3972
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
3973
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
3974
+ var useTrack = __nuri_require__(4560);
3761
3975
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3762
3976
  var classNames = __nuri_require__(3274);
3763
3977
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -3882,17 +4096,29 @@ var switch_rest = undefined && undefined.__rest || function (s, e) {
3882
4096
 
3883
4097
 
3884
4098
 
4099
+
3885
4100
  var Switch = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
3886
4101
  var className = props.className,
3887
4102
  label = props.label,
3888
4103
  size = props.size,
3889
- restProps = switch_rest(props, ["className", "label", "size"]);
4104
+ _onChange = props.onChange,
4105
+ track = props.track,
4106
+ trackProps = props.trackProps,
4107
+ restProps = switch_rest(props, ["className", "label", "size", "onChange", "track", "trackProps"]);
4108
+ var emit = (0,useTrack/* useTrack */.n)('Switch', {
4109
+ track: track,
4110
+ trackProps: trackProps
4111
+ });
3890
4112
  var trackClassName = (0,getMergedProps/* getMergedProps */.p)({
3891
4113
  size: size
3892
4114
  }, switchTrackProps).className;
3893
4115
  return (0,jsx_runtime_.jsxs)(base_switch, switch_assign({
3894
4116
  ref: ref,
3895
- className: (0,classNames/* classNames */.x)(className, 'switch')
4117
+ className: (0,classNames/* classNames */.x)(className, 'switch'),
4118
+ onChange: function onChange(checked) {
4119
+ emit('change', checked ? 'on' : 'off');
4120
+ _onChange === null || _onChange === void 0 ? void 0 : _onChange(checked);
4121
+ }
3896
4122
  }, restProps, {
3897
4123
  children: [(0,jsx_runtime_.jsx)("span", {
3898
4124
  className: (0,classNames/* classNames */.x)(trackClassName, 'switch-track'),
@@ -3923,6 +4149,8 @@ __nuri_require__.d(__webpack_exports__, {
3923
4149
  var jsx_runtime_ = __nuri_require__(612);
3924
4150
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
3925
4151
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4152
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4153
+ var useTrack = __nuri_require__(4560);
3926
4154
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
3927
4155
  var classNames = __nuri_require__(3274);
3928
4156
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4040,12 +4268,19 @@ var dataTableCellProps = table_props_assign(table_props_assign({}, dataTableComm
4040
4268
 
4041
4269
 
4042
4270
 
4271
+
4043
4272
  var DataTableBase = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4044
4273
  var rows = props.rows,
4045
4274
  columns = props.columns,
4046
4275
  _a = props.fixedRowsIndex,
4047
4276
  fixedRowsIndex = _a === void 0 ? 0 : _a,
4048
- className = props.className;
4277
+ className = props.className,
4278
+ track = props.track,
4279
+ trackProps = props.trackProps;
4280
+ var emit = (0,useTrack/* useTrack */.n)('DataTable', {
4281
+ track: track,
4282
+ trackProps: trackProps
4283
+ });
4049
4284
  var headerStyle = (0,getMergedProps/* getMergedProps */.p)(props, dataTableHeaderProps).style;
4050
4285
  var rowStyle = (0,getMergedProps/* getMergedProps */.p)(props, dataTableRowProps).style;
4051
4286
  var cellStyle = (0,getMergedProps/* getMergedProps */.p)(props, dataTableCellProps).style;
@@ -4075,8 +4310,9 @@ var DataTableBase = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs
4075
4310
  },
4076
4311
  className: (0,classNames/* classNames */.x)(index < fixedRowsIndex && 'fixed'),
4077
4312
  onClick: function onClick() {
4078
- var _a;
4079
- return (_a = item.onClickRow) === null || _a === void 0 ? void 0 : _a.call(item, item.id);
4313
+ if (!item.onClickRow) return;
4314
+ emit('click', item.id);
4315
+ item.onClickRow(item.id);
4080
4316
  },
4081
4317
  children: item.value
4082
4318
  }, item.id);
@@ -4141,6 +4377,8 @@ __nuri_require__.d(__webpack_exports__, {
4141
4377
  var jsx_runtime_ = __nuri_require__(612);
4142
4378
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4143
4379
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4380
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4381
+ var useTrack = __nuri_require__(4560);
4144
4382
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4145
4383
  var classNames = __nuri_require__(3274);
4146
4384
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4323,17 +4561,29 @@ var tabs_rest = undefined && undefined.__rest || function (s, e) {
4323
4561
 
4324
4562
 
4325
4563
 
4564
+
4326
4565
  var Tabs = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4327
4566
  var rootClassName = (0,getMergedProps/* getMergedProps */.p)(props, {}).className;
4328
4567
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, tabsProps),
4329
4568
  items = _a.items,
4330
4569
  tabClassName = _a.className,
4331
- restProps = tabs_rest(_a, ["items", "className"]);
4570
+ _onValueChange = _a.onValueChange,
4571
+ track = _a.track,
4572
+ trackProps = _a.trackProps,
4573
+ restProps = tabs_rest(_a, ["items", "className", "onValueChange", "track", "trackProps"]);
4574
+ var emit = (0,useTrack/* useTrack */.n)('Tabs', {
4575
+ track: track,
4576
+ trackProps: trackProps
4577
+ });
4332
4578
  var tabsTriggerClassName = (0,classNames/* classNames */.x)(tabClassName, 'tabs-trigger');
4333
4579
  var tabsContentClassName = (0,classNames/* classNames */.x)(tabClassName, 'tabs-content');
4334
4580
  return (0,jsx_runtime_.jsxs)(base_tabs, tabs_assign({
4335
4581
  ref: ref,
4336
- className: (0,classNames/* classNames */.x)(rootClassName, 'tabs-root')
4582
+ className: (0,classNames/* classNames */.x)(rootClassName, 'tabs-root'),
4583
+ onValueChange: function onValueChange(id) {
4584
+ emit('change', id !== null && id !== void 0 ? id : undefined);
4585
+ _onValueChange === null || _onValueChange === void 0 ? void 0 : _onValueChange(id);
4586
+ }
4337
4587
  }, restProps, {
4338
4588
  children: [(0,jsx_runtime_.jsxs)(base_tabs.List, {
4339
4589
  className: (0,classNames/* classNames */.x)(tabClassName, 'tabs-list'),
@@ -4382,6 +4632,8 @@ __nuri_require__.d(__webpack_exports__, {
4382
4632
  var jsx_runtime_ = __nuri_require__(612);
4383
4633
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4384
4634
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4635
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4636
+ var useTrack = __nuri_require__(4560);
4385
4637
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4386
4638
  var classNames = __nuri_require__(3274);
4387
4639
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4531,6 +4783,7 @@ var text_area_rest = undefined && undefined.__rest || function (s, e) {
4531
4783
 
4532
4784
 
4533
4785
 
4786
+
4534
4787
  var TextArea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4535
4788
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, textAreaProps),
4536
4789
  className = _a.className,
@@ -4541,7 +4794,16 @@ var TextArea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
4541
4794
  defaultValue = _a.defaultValue,
4542
4795
  helperText = _a.helperText,
4543
4796
  isError = _a.isError,
4544
- restProps = text_area_rest(_a, ["className", "style", "title", "value", "onChange", "defaultValue", "helperText", "isError"]);
4797
+ _onFocus = _a.onFocus,
4798
+ _onBlur = _a.onBlur,
4799
+ track = _a.track,
4800
+ trackProps = _a.trackProps,
4801
+ restProps = text_area_rest(_a, ["className", "style", "title", "value", "onChange", "defaultValue", "helperText", "isError", "onFocus", "onBlur", "track", "trackProps"]);
4802
+ var emit = (0,useTrack/* useTrack */.n)('TextArea', {
4803
+ track: track,
4804
+ trackProps: trackProps
4805
+ });
4806
+ var focusedValueRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useRef)('');
4545
4807
  return (0,jsx_runtime_.jsx)(base_text_area, {
4546
4808
  value: value,
4547
4809
  onChange: onChange,
@@ -4555,7 +4817,15 @@ var TextArea = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_reac
4555
4817
  className: (0,classNames/* classNames */.x)('nuri-theme text-area-input-wrapper', className),
4556
4818
  style: style,
4557
4819
  children: (0,jsx_runtime_.jsx)(base_text_area.Textarea, text_area_assign({
4558
- ref: ref
4820
+ ref: ref,
4821
+ onFocus: function onFocus(e) {
4822
+ focusedValueRef.current = e.target.value;
4823
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
4824
+ },
4825
+ onBlur: function onBlur(e) {
4826
+ if (e.target.value !== focusedValueRef.current) emit('change');
4827
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
4828
+ }
4559
4829
  }, restProps))
4560
4830
  }), helperText && (0,jsx_runtime_.jsx)(base_text_area.HelperText, {
4561
4831
  className: (0,classNames/* classNames */.x)('text-area-helper-text', isError && 'error'),
@@ -4582,6 +4852,8 @@ __nuri_require__.d(__webpack_exports__, {
4582
4852
  var jsx_runtime_ = __nuri_require__(612);
4583
4853
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","module":"react"}
4584
4854
  var external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_ = __nuri_require__(1041);
4855
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
4856
+ var useTrack = __nuri_require__(4560);
4585
4857
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4586
4858
  var classNames = __nuri_require__(3274);
4587
4859
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -4724,6 +4996,7 @@ var text_field_rest = undefined && undefined.__rest || function (s, e) {
4724
4996
 
4725
4997
 
4726
4998
 
4999
+
4727
5000
  var TextField = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
4728
5001
  var _a = (0,getMergedProps/* getMergedProps */.p)(props, textFieldProps),
4729
5002
  className = _a.className,
@@ -4736,7 +5009,16 @@ var TextField = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
4736
5009
  defaultValue = _a.defaultValue,
4737
5010
  helperText = _a.helperText,
4738
5011
  isError = _a.isError,
4739
- restProps = text_field_rest(_a, ["className", "style", "leftIcon", "rightIcon", "title", "value", "onChange", "defaultValue", "helperText", "isError"]);
5012
+ _onFocus = _a.onFocus,
5013
+ _onBlur = _a.onBlur,
5014
+ track = _a.track,
5015
+ trackProps = _a.trackProps,
5016
+ restProps = text_field_rest(_a, ["className", "style", "leftIcon", "rightIcon", "title", "value", "onChange", "defaultValue", "helperText", "isError", "onFocus", "onBlur", "track", "trackProps"]);
5017
+ var emit = (0,useTrack/* useTrack */.n)('TextField', {
5018
+ track: track,
5019
+ trackProps: trackProps
5020
+ });
5021
+ var focusedValueRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useRef)('');
4740
5022
  return (0,jsx_runtime_.jsx)(base_text_field, {
4741
5023
  value: value,
4742
5024
  onChange: onChange,
@@ -4750,7 +5032,15 @@ var TextField = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_rea
4750
5032
  className: (0,classNames/* classNames */.x)('nuri-theme text-field-input-wrapper', className),
4751
5033
  style: style,
4752
5034
  children: [leftIcon, (0,jsx_runtime_.jsx)(base_text_field.Input, text_field_assign({
4753
- ref: ref
5035
+ ref: ref,
5036
+ onFocus: function onFocus(e) {
5037
+ focusedValueRef.current = e.target.value;
5038
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
5039
+ },
5040
+ onBlur: function onBlur(e) {
5041
+ if (e.target.value !== focusedValueRef.current) emit('change');
5042
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
5043
+ }
4754
5044
  }, restProps)), rightIcon]
4755
5045
  }), helperText && (0,jsx_runtime_.jsx)(base_text_field.HelperText, {
4756
5046
  className: (0,classNames/* classNames */.x)('text-field-helper-text', isError && 'error'),
@@ -4967,6 +5257,8 @@ var SvgExclamation = function SvgExclamation(props) {
4967
5257
  /* harmony default export */ const exclamation = (SvgExclamation);
4968
5258
  // EXTERNAL MODULE: ./assets/icons/multifly.svg
4969
5259
  var multifly = __nuri_require__(6713);
5260
+ // EXTERNAL MODULE: ./helpers/hooks/useTrack.ts
5261
+ var useTrack = __nuri_require__(4560);
4970
5262
  // EXTERNAL MODULE: ./helpers/utils/classNames.js
4971
5263
  var classNames = __nuri_require__(3274);
4972
5264
  // EXTERNAL MODULE: ./helpers/utils/getMergedProps.ts
@@ -5007,6 +5299,7 @@ var __rest = undefined && undefined.__rest || function (s, e) {
5007
5299
 
5008
5300
 
5009
5301
 
5302
+
5010
5303
  // 상태를 뜻하는 variant 는 앞에 아이콘을 둔다. error 는 닫기와 같은 X 를 쓴다
5011
5304
  var VARIANT_ICON = {
5012
5305
  success: check/* default */.A,
@@ -5014,14 +5307,26 @@ var VARIANT_ICON = {
5014
5307
  error: multifly/* default */.A
5015
5308
  };
5016
5309
  var Toast = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.forwardRef)(function (props, ref) {
5310
+ var _a, _b;
5017
5311
  var className = props.className,
5018
5312
  title = props.title,
5019
5313
  description = props.description,
5020
5314
  variant = props.variant,
5021
5315
  action = props.action,
5022
- _a = props.showClose,
5023
- showClose = _a === void 0 ? true : _a,
5024
- restProps = __rest(props, ["className", "title", "description", "variant", "action", "showClose"]);
5316
+ _c = props.showClose,
5317
+ showClose = _c === void 0 ? true : _c,
5318
+ track = props.track,
5319
+ trackProps = props.trackProps,
5320
+ restProps = __rest(props, ["className", "title", "description", "variant", "action", "showClose", "track", "trackProps"]);
5321
+ var emit = (0,useTrack/* useTrack */.n)('Toast', {
5322
+ track: track,
5323
+ trackProps: trackProps
5324
+ });
5325
+ // Radix 는 open·defaultOpen 이 없으면 연 채로 시작한다. Radix 가 스스로 닫는 것은 이 값에 보이지 않아 다시 보내지 않는다.
5326
+ var shown = (_b = (_a = restProps.open) !== null && _a !== void 0 ? _a : restProps.defaultOpen) !== null && _b !== void 0 ? _b : true;
5327
+ (0,external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.useEffect)(function () {
5328
+ if (shown) emit('show');
5329
+ }, [shown]);
5025
5330
  var variantClassName = (0,getMergedProps/* getMergedProps */.p)({
5026
5331
  className: className,
5027
5332
  variant: variant
@@ -5207,10 +5512,11 @@ var tooltipContentProps = __assign(__assign({}, commonTooltipProps), {
5207
5512
  /* harmony export */ });
5208
5513
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
5209
5514
  /* 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);
5515
+ /* harmony import */ var _helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(4560);
5516
+ /* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(3274);
5517
+ /* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(7335);
5518
+ /* harmony import */ var _base_tooltip__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(909);
5519
+ /* harmony import */ var _tooltip_props__WEBPACK_IMPORTED_MODULE_6__ = __nuri_require__(8690);
5214
5520
  var __assign = undefined && undefined.__assign || function () {
5215
5521
  __assign = Object.assign || function (t) {
5216
5522
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -5236,6 +5542,7 @@ var __rest = undefined && undefined.__rest || function (s, e) {
5236
5542
 
5237
5543
 
5238
5544
 
5545
+
5239
5546
  // ref 는 Trigger 를 거쳐 trigger 로 넘긴 요소에 붙는다.
5240
5547
  var Tooltip = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
5241
5548
  var trigger = props.trigger,
@@ -5244,22 +5551,33 @@ var Tooltip = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(fun
5244
5551
  direction = _a === void 0 ? 'bottom' : _a,
5245
5552
  _b = props.disabled,
5246
5553
  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;
5554
+ _onOpenChange = props.onOpenChange,
5555
+ track = props.track,
5556
+ trackProps = props.trackProps,
5557
+ restProps = __rest(props, ["trigger", "content", "direction", "disabled", "onOpenChange", "track", "trackProps"]);
5558
+ var contentClassName = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_4__/* .getMergedProps */ .p)(props, _tooltip_props__WEBPACK_IMPORTED_MODULE_6__/* .tooltipContentProps */ .bZ).className;
5559
+ var emit = (0,_helpers_hooks_useTrack__WEBPACK_IMPORTED_MODULE_2__/* .useTrack */ .n)('Tooltip', {
5560
+ track: track,
5561
+ trackProps: trackProps
5562
+ });
5249
5563
  // radix 트리를 아예 그리지 않는다. open 으로 막으면 열린 채 남는 경우가 있다.
5250
5564
  if (disabled) return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
5251
5565
  children: trigger
5252
5566
  });
5253
5567
  // 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
5568
+ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_base_tooltip__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, __assign({
5569
+ disableHoverableContent: true,
5570
+ onOpenChange: function onOpenChange(open) {
5571
+ if (open) emit('show');
5572
+ _onOpenChange === null || _onOpenChange === void 0 ? void 0 : _onOpenChange(open);
5573
+ }
5256
5574
  }, restProps, {
5257
- children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A.Trigger, {
5575
+ children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Trigger, {
5258
5576
  ref: ref,
5259
5577
  asChild: true,
5260
5578
  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'),
5579
+ }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_tooltip__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A.Content, {
5580
+ className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_3__/* .classNames */ .x)(contentClassName, 'tooltip-content'),
5263
5581
  direction: direction,
5264
5582
  children: content
5265
5583
  })]
@@ -5320,6 +5638,34 @@ var useExternalState = function useExternalState(_a) {
5320
5638
 
5321
5639
  /***/ },
5322
5640
 
5641
+ /***/ 4560
5642
+ (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
5643
+
5644
+ /* harmony export */ __nuri_require__.d(__webpack_exports__, {
5645
+ /* harmony export */ n: () => (/* binding */ useTrack)
5646
+ /* harmony export */ });
5647
+ /* harmony import */ var _components_logging_log_context__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(4804);
5648
+
5649
+ /** 컴포넌트 하나가 쓸 emit 함수. Provider 가 없거나 track 이 없으면 아무것도 보내지 않는다. */
5650
+ var useTrack = function useTrack(component, props) {
5651
+ var track = props.track,
5652
+ trackProps = props.trackProps;
5653
+ var emit = (0,_components_logging_log_context__WEBPACK_IMPORTED_MODULE_0__/* .useLogEmitter */ .e)();
5654
+ return function (action, value) {
5655
+ if (!track) return;
5656
+ emit === null || emit === void 0 ? void 0 : emit({
5657
+ component: component,
5658
+ action: action,
5659
+ track: track,
5660
+ value: value,
5661
+ props: trackProps,
5662
+ timestamp: Date.now()
5663
+ });
5664
+ };
5665
+ };
5666
+
5667
+ /***/ },
5668
+
5323
5669
  /***/ 7298
5324
5670
  (__unused_webpack_module, __webpack_exports__, __nuri_require__) {
5325
5671
 
@@ -5538,7 +5884,7 @@ var x = (y) => {
5538
5884
  var x = {}; __nuri_require__.d(x, y); return x
5539
5885
  }
5540
5886
  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) });
5887
+ 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
5888
 
5543
5889
  /***/ },
5544
5890
 
@@ -5909,6 +6255,10 @@ var bottom_nav = __nuri_require__(1768);
5909
6255
  var step_progress = __nuri_require__(7131);
5910
6256
  // EXTERNAL MODULE: ./components/chip-group/chip-group.tsx + 2 modules
5911
6257
  var chip_group = __nuri_require__(3894);
6258
+ // EXTERNAL MODULE: ./components/logging/logging.tsx
6259
+ var logging = __nuri_require__(7111);
6260
+ // EXTERNAL MODULE: ./components/logging/log-context.tsx
6261
+ var log_context = __nuri_require__(4804);
5912
6262
  ;// ./tokens/generated/primitive.ts
5913
6263
  // tokens/figma.json 에서 생성됨 — 손으로 고치지 않는다. `npm run tokens`
5914
6264
  var primitive = {
@@ -6317,6 +6667,7 @@ var colors = __nuri_require__(7232);
6317
6667
 
6318
6668
 
6319
6669
 
6670
+
6320
6671
 
6321
6672
 
6322
6673
  const __webpack_exports__colors = colors/* colors */.T;
@@ -6334,6 +6685,7 @@ export const DropDown = drop_down/* default */.A;
6334
6685
  export const Icon = icon/* default */.A;
6335
6686
  export const IconTextBadge = icon_text_badge/* default */.A;
6336
6687
  export const IconTextOptionBadge = icon_text_option_badge/* default */.A;
6688
+ export const LogProvider = log_context/* LogProvider */._;
6337
6689
  export const Modal = modal/* default */.A;
6338
6690
  export const ModalWithDoubleButton = modal_with_double_button/* default */.A;
6339
6691
  export const OptionBadge = option_badge/* default */.A;
@@ -6351,3 +6703,4 @@ export const Toast = toast/* default */.A;
6351
6703
  export const ToastProvider = base_toast/* ToastProvider */.t;
6352
6704
  export const Tooltip = tooltip/* default */.A;
6353
6705
  export const TooltipProvider = base_tooltip/* TooltipProvider */.B;
6706
+ export const useLog = logging/* useLog */.e;