@spaced-out/ui-design-system 0.6.29 → 0.6.33

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.
@@ -94,7 +94,14 @@ jobs:
94
94
  fi
95
95
  # Note(Nishant): Unified step for version bump, respecting prerelease condition
96
96
 
97
- # Push changes
97
+ # Publish version to NPM repository
98
+ - name: Publish to NPM
99
+ env:
100
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
101
+ run: yarn publish --verbose --access public --tag "$RELEASE_TAG"
102
+
103
+ # Push changes only after a successful publish, so a failed publish
104
+ # never leaves a chore(release) commit/tag behind on the branch.
98
105
  - name: Push CHANGELOG.md and created release tag
99
106
  env:
100
107
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -103,9 +110,3 @@ jobs:
103
110
  git push --follow-tags origin "${GITHUB_REF_NAME}"
104
111
 
105
112
  # Note(Nishant): Push to selected branch, not hardcoded master
106
-
107
- # Publish version to NPM repository
108
- - name: Publish to NPM
109
- env:
110
- NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
111
- run: yarn publish --verbose --access public --tag "$RELEASE_TAG"
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.6.33](https://github.com/spaced-out/ui-design-system/compare/v0.6.32...v0.6.33) (2026-09-15)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **chore-release:** commit version update only after successful npm publish ([#503](https://github.com/spaced-out/ui-design-system/issues/503)) ([3e89b88](https://github.com/spaced-out/ui-design-system/commit/3e89b88492fb0461fb5e9ddf32481f13005e0633))
11
+ * **truncated-text-with-tooltip:** re-attach ResizeObserver when truncated node changes ([#502](https://github.com/spaced-out/ui-design-system/issues/502)) ([5305ba6](https://github.com/spaced-out/ui-design-system/commit/5305ba6fceb6643f8432b4c8bd85c07ff25d4c4b))
12
+
13
+ ### [0.6.32](https://github.com/spaced-out/ui-design-system/compare/v0.6.31...v0.6.32) (2026-09-04)
14
+
15
+ ### [0.6.31](https://github.com/spaced-out/ui-design-system/compare/v0.6.30...v0.6.31) (2026-08-31)
16
+
17
+ ### [0.6.30](https://github.com/spaced-out/ui-design-system/compare/v0.6.29...v0.6.30) (2026-08-24)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **date-range-picker:** fixed year selection edge case behavior ([#499](https://github.com/spaced-out/ui-design-system/issues/499)) ([1bd840a](https://github.com/spaced-out/ui-design-system/commit/1bd840a70254127afe77d8e26905475395505189))
23
+
5
24
  ### [0.6.29](https://github.com/spaced-out/ui-design-system/compare/v0.6.28...v0.6.29) (2026-08-20)
6
25
 
7
26
 
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAIrD,OAAO,KAAK,EAEV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAsBnB,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAClE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAClD,oBAAoB,EACpB,cAAc,CA2Of,CAAC"}
1
+ {"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAIrD,OAAO,KAAK,EAEV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAsBnB,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAClE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAClD,oBAAoB,EACpB,cAAc,CAuQf,CAAC"}
@@ -59,19 +59,39 @@ const DateRangePicker = exports.DateRangePicker = /*#__PURE__*/React.forwardRef(
59
59
  const [rangeStartMonth, setRangeStartMonth] = React.useState(validRangeStartMonth);
60
60
  const [rangeEndMonth, setRangeEndMonth] = React.useState(validRangeEndMonth);
61
61
  const [isMobileSyncedToStartMonth, setIsMobileSyncedToStartMonth] = React.useState(false);
62
- const setRangeStartMonthValidated = date => {
63
- if ((0, _dateRangePicker.isSameOrAfter)(date, validMinDate) && (0, _dateRangePicker.isBefore)(date, rangeEndMonth)) {
64
- setRangeStartMonth(date);
65
- } else {
66
- setRangeStartMonth((0, _utils.getMonthEndDate)(validMinDate));
62
+ const clampMonthToBounds = date => {
63
+ const minMonth = (0, _utils.getMonthEndDate)(validMinDate);
64
+ const maxMonth = (0, _utils.getMonthEndDate)(validMaxDate);
65
+ if ((0, _dateRangePicker.isBefore)(date, minMonth)) {
66
+ return minMonth;
67
+ }
68
+ if ((0, _dateRangePicker.isAfter)(date, maxMonth)) {
69
+ return maxMonth;
67
70
  }
71
+ return date;
72
+ };
73
+
74
+ // The single mobile calendar drives both month cursors at once, so it only
75
+ // gets the minDate/maxDate clamp — the ordering is already worked out by
76
+ // handleMobileCalendarMonthSelection.
77
+ const setRangeStartMonthInBounds = date => {
78
+ setRangeStartMonth(clampMonthToBounds(date));
79
+ };
80
+ const setRangeEndMonthInBounds = date => {
81
+ setRangeEndMonth(clampMonthToBounds(date));
82
+ };
83
+
84
+ // The two desktop panes must stay ordered. A month/year pick that would
85
+ // collide with (or overshoot) the other pane lands on the month adjacent to
86
+ // it rather than resetting to minDate/maxDate, so the user still arrives in
87
+ // the year they asked for.
88
+ const setRangeStartMonthValidated = date => {
89
+ const latestAllowed = (0, _utils.getMonthEndDate)((0, _utils.getSubtractedDate)(rangeEndMonth, 1, 'M'));
90
+ setRangeStartMonthInBounds((0, _dateRangePicker.isSameOrAfter)(date, rangeEndMonth, 'month') ? latestAllowed : date);
68
91
  };
69
92
  const setRangeEndMonthValidated = date => {
70
- if ((0, _dateRangePicker.isSameOrBefore)(date, validMaxDate) && (0, _dateRangePicker.isAfter)(date, rangeStartMonth)) {
71
- setRangeEndMonth(date);
72
- } else {
73
- setRangeEndMonth((0, _utils.getMonthEndDate)(validMaxDate));
74
- }
93
+ const earliestAllowed = (0, _utils.getMonthEndDate)((0, _utils.getAddedDate)(rangeStartMonth, 1, 'M'));
94
+ setRangeEndMonthInBounds((0, _dateRangePicker.isSameOrBefore)(date, rangeStartMonth, 'month') ? earliestAllowed : date);
75
95
  };
76
96
  const onMonthNavigate = (marker, action) => {
77
97
  if (marker === _utils.MARKERS.DATE_RANGE_START) {
@@ -106,8 +126,8 @@ const DateRangePicker = exports.DateRangePicker = /*#__PURE__*/React.forwardRef(
106
126
  syncToStart = (0, _dateRangePicker.isBefore)(newMonth, rangeEndMonth);
107
127
  [start, end] = syncToStart ? [newMonth, validMaxDate] : [(0, _utils.getSubtractedDate)(newMonth, 1, 'M'), newMonth];
108
128
  }
109
- setRangeStartMonthValidated(start);
110
- setRangeEndMonthValidated(end);
129
+ setRangeStartMonthInBounds(start);
130
+ setRangeEndMonthInBounds(end);
111
131
  setIsMobileSyncedToStartMonth(syncToStart);
112
132
  };
113
133
  const handleMobileMonthSelection = date => {
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangeWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAIrD,OAAO,KAAK,EAAC,SAAS,EAAE,qBAAqB,EAAC,MAAM,WAAW,CAAC;AAChE,OAAO,EAML,OAAO,EACP,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAkEnB,UAAU,qBAAqB;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAClE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE;QACR,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,eAAe,EAAE,CACf,MAAM,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,EAC9C,MAAM,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,KAC/D,IAAI,CAAC;KACX,CAAC;IACF,sBAAsB,EAAE;QACtB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,eAAe,EAAE,CACf,MAAM,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,KAC/D,IAAI,CAAC;KACX,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkSD,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CACnD,qBAAqB,EACrB,cAAc,CAkHf,CAAC"}
1
+ {"version":3,"file":"DateRangeWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangeWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAIrD,OAAO,KAAK,EAAC,SAAS,EAAE,qBAAqB,EAAC,MAAM,WAAW,CAAC;AAChE,OAAO,EAOL,OAAO,EACP,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAmEnB,UAAU,qBAAqB;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAClE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE;QACR,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,eAAe,EAAE,CACf,MAAM,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,EAC9C,MAAM,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,KAC/D,IAAI,CAAC;KACX,CAAC;IACF,sBAAsB,EAAE;QACtB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,eAAe,EAAE,CACf,MAAM,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,KAC/D,IAAI,CAAC;KACX,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkSD,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CACnD,qBAAqB,EACrB,cAAc,CAmHf,CAAC"}
@@ -228,7 +228,9 @@ const DateRangeWrapper = exports.DateRangeWrapper = /*#__PURE__*/React.forwardRe
228
228
  locale,
229
229
  testId
230
230
  } = _ref4;
231
- const canNavigateCloser = _moment.default.utc(rangeStartMonth).year() !== _moment.default.utc(rangeEndMonth).year() || Math.abs(_moment.default.utc(rangeStartMonth).month() - _moment.default.utc(rangeEndMonth).month()) > 1;
231
+ // True only while the panes are ordered and more than one month apart, so
232
+ // the chevrons can never push them into (or further past) each other.
233
+ const canNavigateCloser = (0, _dateRangePicker.isBefore)((0, _utils.getMonthEndDate)((0, _utils.getAddedDate)(rangeStartMonth, 1, 'M')), rangeEndMonth);
232
234
  const handleApplyClick = () => {
233
235
  const {
234
236
  startDate,
@@ -1 +1 @@
1
- {"version":3,"file":"TruncatedTextWithTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAM7D,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,eAAO,MAAM,wBAAwB,GAAI,uEAQtC,6BAA6B,sBAuF/B,CAAC"}
1
+ {"version":3,"file":"TruncatedTextWithTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAM7D,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,eAAO,MAAM,wBAAwB,GAAI,uEAQtC,6BAA6B,sBAkG/B,CAAC"}
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.TruncatedTextWithTooltip = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
9
- var _useWindowSize = require("../../hooks/useWindowSize");
10
9
  var _classify = _interopRequireDefault(require("../../utils/classify"));
11
10
  var _qa = require("../../utils/qa");
12
11
  var _ConditionalWrapper = require("../ConditionalWrapper");
@@ -29,23 +28,32 @@ const TruncatedTextWithTooltip = _ref => {
29
28
  wordBreak = 'break-all',
30
29
  testId
31
30
  } = _ref;
32
- const {
33
- width
34
- } = (0, _useWindowSize.useWindowSize)();
35
31
  const [showMouseTip, setShowMouseTip] = React.useState(false);
36
- const truncatedRef = React.useRef(null);
32
+ const [truncatedNode, setTruncatedNode] = React.useState(null);
37
33
  const checkIfTextOverflowing = React.useMemo(() => (0, _debounce.default)(() => {
38
- if (!wrapText && truncatedRef && truncatedRef.current && truncatedRef.current.scrollHeight > truncatedRef.current.clientHeight) {
34
+ if (!wrapText && truncatedNode && truncatedNode.scrollHeight > truncatedNode.clientHeight) {
39
35
  setShowMouseTip(true);
40
36
  } else {
41
37
  setShowMouseTip(false);
42
38
  }
43
39
  }, 200, {
44
40
  leading: true
45
- }), []);
41
+ }), [truncatedNode, wrapText]);
46
42
  React.useEffect(() => {
47
43
  checkIfTextOverflowing();
48
- }, [width, line, children, wrapText]);
44
+ }, [line, children, wrapText, checkIfTextOverflowing]);
45
+ React.useEffect(() => {
46
+ if (!truncatedNode) {
47
+ return undefined;
48
+ }
49
+ const observer = new ResizeObserver(() => {
50
+ checkIfTextOverflowing();
51
+ });
52
+ observer.observe(truncatedNode);
53
+ return () => {
54
+ observer.disconnect();
55
+ };
56
+ }, [truncatedNode, checkIfTextOverflowing]);
49
57
  const styles = {
50
58
  '--line-clamp': wrapText ? 'unset' : line,
51
59
  '--word-break': wordBreak
@@ -94,7 +102,7 @@ const TruncatedTextWithTooltip = _ref => {
94
102
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
95
103
  className: (0, _classify.default)(_TruncatedTextWithTooltipModule.default.truncateLineClamp, classNames?.wrapper),
96
104
  style: styles,
97
- ref: truncatedRef,
105
+ ref: setTruncatedNode,
98
106
  "data-testid": (0, _qa.generateTestId)({
99
107
  base: testId,
100
108
  slot: 'text'
package/mcp/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/genesis-mcp",
3
- "version": "1.0.43",
3
+ "version": "1.0.45",
4
4
  "description": "MCP server for Genesis UI Design System - provides AI assistants with access to components, hooks, and design tokens",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/ui-design-system",
3
- "version": "0.6.29",
3
+ "version": "0.6.33",
4
4
  "description": "Sense UI components library",
5
5
  "author": {
6
6
  "name": "Spaced Out"