@arbor-education/design-system.components 4.0.0-react19-alpha.0 → 4.1.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 (141) hide show
  1. package/.github/workflows/pr-review-approve.yaml +2 -1
  2. package/CHANGELOG.md +28 -0
  3. package/dist/components/formField/FormField.d.ts +4 -0
  4. package/dist/components/formField/FormField.d.ts.map +1 -1
  5. package/dist/components/formField/FormField.js +2 -1
  6. package/dist/components/formField/FormField.js.map +1 -1
  7. package/dist/components/formField/FormField.stories.d.ts.map +1 -1
  8. package/dist/components/formField/FormField.stories.js +10 -7
  9. package/dist/components/formField/FormField.stories.js.map +1 -1
  10. package/dist/components/formField/FormField.test.js +14 -0
  11. package/dist/components/formField/FormField.test.js.map +1 -1
  12. package/dist/components/formField/inputs/singleFile/SingleFileInput.d.ts +14 -0
  13. package/dist/components/formField/inputs/singleFile/SingleFileInput.d.ts.map +1 -0
  14. package/dist/components/formField/inputs/singleFile/SingleFileInput.js +35 -0
  15. package/dist/components/formField/inputs/singleFile/SingleFileInput.js.map +1 -0
  16. package/dist/components/formField/inputs/singleFile/SingleFileInput.stories.d.ts +170 -0
  17. package/dist/components/formField/inputs/singleFile/SingleFileInput.stories.d.ts.map +1 -0
  18. package/dist/components/formField/inputs/singleFile/SingleFileInput.stories.js +242 -0
  19. package/dist/components/formField/inputs/singleFile/SingleFileInput.stories.js.map +1 -0
  20. package/dist/components/formField/inputs/singleFile/SingleFileInput.test.d.ts +2 -0
  21. package/dist/components/formField/inputs/singleFile/SingleFileInput.test.d.ts.map +1 -0
  22. package/dist/components/formField/inputs/singleFile/SingleFileInput.test.js +135 -0
  23. package/dist/components/formField/inputs/singleFile/SingleFileInput.test.js.map +1 -0
  24. package/dist/components/widget/types.d.ts +9 -0
  25. package/dist/components/widget/types.d.ts.map +1 -1
  26. package/dist/components/widgetCalendar/WidgetCalendar.d.ts +5 -2
  27. package/dist/components/widgetCalendar/WidgetCalendar.d.ts.map +1 -1
  28. package/dist/components/widgetCalendar/WidgetCalendar.js +30 -5
  29. package/dist/components/widgetCalendar/WidgetCalendar.js.map +1 -1
  30. package/dist/components/widgetCalendar/WidgetCalendar.stories.d.ts +20 -2
  31. package/dist/components/widgetCalendar/WidgetCalendar.stories.d.ts.map +1 -1
  32. package/dist/components/widgetCalendar/WidgetCalendar.stories.js +269 -2
  33. package/dist/components/widgetCalendar/WidgetCalendar.stories.js.map +1 -1
  34. package/dist/components/widgetCalendar/WidgetCalendar.test.js +179 -2
  35. package/dist/components/widgetCalendar/WidgetCalendar.test.js.map +1 -1
  36. package/dist/components/widgetCalendar/WidgetCalendarItem.d.ts +1 -0
  37. package/dist/components/widgetCalendar/WidgetCalendarItem.d.ts.map +1 -1
  38. package/dist/components/widgetCalendar/WidgetCalendarItem.js +7 -2
  39. package/dist/components/widgetCalendar/WidgetCalendarItem.js.map +1 -1
  40. package/dist/components/widgetFavourites/WidgetFavourites.d.ts.map +1 -1
  41. package/dist/components/widgetFavourites/WidgetFavourites.js +5 -4
  42. package/dist/components/widgetFavourites/WidgetFavourites.js.map +1 -1
  43. package/dist/components/widgetFavourites/WidgetFavourites.stories.d.ts +3 -0
  44. package/dist/components/widgetFavourites/WidgetFavourites.stories.d.ts.map +1 -1
  45. package/dist/components/widgetFavourites/WidgetFavourites.stories.js +157 -0
  46. package/dist/components/widgetFavourites/WidgetFavourites.stories.js.map +1 -1
  47. package/dist/components/widgetFavourites/WidgetFavourites.test.js +41 -1
  48. package/dist/components/widgetFavourites/WidgetFavourites.test.js.map +1 -1
  49. package/dist/components/widgetFavourites/WidgetFavouritesItem.d.ts.map +1 -1
  50. package/dist/components/widgetFavourites/WidgetFavouritesItem.js +2 -2
  51. package/dist/components/widgetFavourites/WidgetFavouritesItem.js.map +1 -1
  52. package/dist/components/widgetFavourites/types.d.ts +4 -2
  53. package/dist/components/widgetFavourites/types.d.ts.map +1 -1
  54. package/dist/index.css +34 -0
  55. package/dist/index.css.map +1 -1
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/packageManifest.test.d.ts +2 -0
  61. package/dist/packageManifest.test.d.ts.map +1 -0
  62. package/dist/packageManifest.test.js +22 -0
  63. package/dist/packageManifest.test.js.map +1 -0
  64. package/package.json +1 -1
  65. package/src/components/formField/FormField.stories.tsx +10 -7
  66. package/src/components/formField/FormField.test.tsx +35 -0
  67. package/src/components/formField/FormField.tsx +5 -0
  68. package/src/components/formField/inputs/singleFile/SingleFileInput.stories.tsx +339 -0
  69. package/src/components/formField/inputs/singleFile/SingleFileInput.test.tsx +181 -0
  70. package/src/components/formField/inputs/singleFile/SingleFileInput.tsx +101 -0
  71. package/src/components/formField/inputs/singleFile/singleFileInput.scss +17 -0
  72. package/src/components/widget/types.ts +13 -0
  73. package/src/components/widgetCalendar/WidgetCalendar.stories.tsx +310 -2
  74. package/src/components/widgetCalendar/WidgetCalendar.test.tsx +315 -1
  75. package/src/components/widgetCalendar/WidgetCalendar.tsx +77 -31
  76. package/src/components/widgetCalendar/WidgetCalendarItem.tsx +14 -1
  77. package/src/components/widgetCalendar/widgetCalendar.scss +9 -0
  78. package/src/components/widgetFavourites/WidgetFavourites.stories.tsx +217 -0
  79. package/src/components/widgetFavourites/WidgetFavourites.test.tsx +99 -0
  80. package/src/components/widgetFavourites/WidgetFavourites.tsx +6 -2
  81. package/src/components/widgetFavourites/WidgetFavouritesItem.tsx +2 -1
  82. package/src/components/widgetFavourites/types.ts +5 -2
  83. package/src/components/widgetFavourites/widgetFavourites.scss +7 -0
  84. package/src/index.scss +1 -0
  85. package/src/index.ts +1 -0
  86. package/src/packageManifest.test.ts +43 -0
  87. package/src/tokens.scss +1 -0
  88. package/tokens/json/Arbor.json +4 -0
  89. package/.changeset/empty-clocks-jog.md +0 -5
  90. package/dist/components/combobox/useElementWidth.d.ts +0 -2
  91. package/dist/components/combobox/useElementWidth.d.ts.map +0 -1
  92. package/dist/components/combobox/useElementWidth.js +0 -31
  93. package/dist/components/combobox/useElementWidth.js.map +0 -1
  94. package/dist/components/combobox/useVisibleChips.d.ts +0 -21
  95. package/dist/components/combobox/useVisibleChips.d.ts.map +0 -1
  96. package/dist/components/combobox/useVisibleChips.js +0 -59
  97. package/dist/components/combobox/useVisibleChips.js.map +0 -1
  98. package/dist/components/combobox/useVisibleChips.test.d.ts +0 -2
  99. package/dist/components/combobox/useVisibleChips.test.d.ts.map +0 -1
  100. package/dist/components/combobox/useVisibleChips.test.js +0 -81
  101. package/dist/components/combobox/useVisibleChips.test.js.map +0 -1
  102. package/dist/components/icoText/IcoText.d.ts +0 -37
  103. package/dist/components/icoText/IcoText.d.ts.map +0 -1
  104. package/dist/components/icoText/IcoText.js +0 -29
  105. package/dist/components/icoText/IcoText.js.map +0 -1
  106. package/dist/components/icoText/IcoText.stories.d.ts +0 -60
  107. package/dist/components/icoText/IcoText.stories.d.ts.map +0 -1
  108. package/dist/components/icoText/IcoText.stories.js +0 -319
  109. package/dist/components/icoText/IcoText.stories.js.map +0 -1
  110. package/dist/components/icoText/IcoText.test.d.ts +0 -2
  111. package/dist/components/icoText/IcoText.test.d.ts.map +0 -1
  112. package/dist/components/icoText/IcoText.test.js +0 -27
  113. package/dist/components/icoText/IcoText.test.js.map +0 -1
  114. package/dist/components/tree-row/TreeRow.d.ts +0 -32
  115. package/dist/components/tree-row/TreeRow.d.ts.map +0 -1
  116. package/dist/components/tree-row/TreeRow.js +0 -19
  117. package/dist/components/tree-row/TreeRow.js.map +0 -1
  118. package/dist/components/tree-row/TreeRow.stories.d.ts +0 -13
  119. package/dist/components/tree-row/TreeRow.stories.d.ts.map +0 -1
  120. package/dist/components/tree-row/TreeRow.stories.js +0 -774
  121. package/dist/components/tree-row/TreeRow.stories.js.map +0 -1
  122. package/dist/components/tree-row/TreeRow.test.d.ts +0 -2
  123. package/dist/components/tree-row/TreeRow.test.d.ts.map +0 -1
  124. package/dist/components/tree-row/TreeRow.test.js +0 -262
  125. package/dist/components/tree-row/TreeRow.test.js.map +0 -1
  126. package/dist/components/tree-row/TreeRowSection.d.ts +0 -12
  127. package/dist/components/tree-row/TreeRowSection.d.ts.map +0 -1
  128. package/dist/components/tree-row/TreeRowSection.js +0 -20
  129. package/dist/components/tree-row/TreeRowSection.js.map +0 -1
  130. package/dist/utils/PopupParentContext.d.ts +0 -3
  131. package/dist/utils/PopupParentContext.d.ts.map +0 -1
  132. package/dist/utils/PopupParentContext.js +0 -6
  133. package/dist/utils/PopupParentContext.js.map +0 -1
  134. package/dist/utils/PopupParentContext.stories.d.ts +0 -17
  135. package/dist/utils/PopupParentContext.stories.d.ts.map +0 -1
  136. package/dist/utils/PopupParentContext.stories.js +0 -266
  137. package/dist/utils/PopupParentContext.stories.js.map +0 -1
  138. package/dist/utils/getDefaultPopupParent.d.ts +0 -2
  139. package/dist/utils/getDefaultPopupParent.d.ts.map +0 -1
  140. package/dist/utils/getDefaultPopupParent.js +0 -19
  141. package/dist/utils/getDefaultPopupParent.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetCalendarItem.d.ts","sourceRoot":"","sources":["../../../src/components/widgetCalendar/WidgetCalendarItem.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC;IACxC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,KAAG,KAAK,CAAC,GAAG,CAAC,OAmF7E,CAAC"}
1
+ {"version":3,"file":"WidgetCalendarItem.d.ts","sourceRoot":"","sources":["../../../src/components/widgetCalendar/WidgetCalendarItem.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC;IACxC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,KAAG,KAAK,CAAC,GAAG,CAAC,OA8F7E,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  import { Icon } from '../icon/Icon.js';
4
+ import { TooltipWrapper } from '../tooltip/TooltipWrapper.js';
4
5
  import { ENTER_KEY, SPACE_KEY } from '../../utils/keyboardConstants.js';
5
6
  export const WidgetCalendarItem = (props) => {
6
- const { id, eventType = 'primary', eventPrimaryTerm, eventPrimaryDefinition, eventSecondaryTerm, eventDateTime, eventTimeLabel, eventLocation, eventSecondaryDefinition, buttonA11yText, onItemClick, className, } = props;
7
+ const { id, eventType = 'primary', eventPrimaryTerm, eventPrimaryDefinition, eventSecondaryTerm, eventDateTime, eventTimeLabel, eventLocation, eventSecondaryDefinition, buttonA11yText, onItemClick, className, tooltip, } = props;
7
8
  const isInteractive = Boolean(onItemClick);
8
9
  const defaultA11yLabel = typeof eventPrimaryDefinition === 'string'
9
10
  ? `Open ${eventPrimaryDefinition}`
@@ -18,8 +19,12 @@ export const WidgetCalendarItem = (props) => {
18
19
  onItemClick?.();
19
20
  }
20
21
  };
21
- return (_jsxs("li", { className: classNames('ds-widget-calendar__item', eventType === 'secondary'
22
+ const item = (_jsxs("li", { className: classNames('ds-widget-calendar__item', eventType === 'secondary'
22
23
  ? 'ds-widget-calendar__item--secondary'
23
24
  : 'ds-widget-calendar__item--primary', isInteractive && 'ds-widget-calendar__item--interactive', className), "data-testid": `widget-calendar-item-${id}`, role: isInteractive ? 'button' : undefined, tabIndex: isInteractive ? 0 : undefined, "aria-label": isInteractive ? (buttonA11yText ?? defaultA11yLabel) : undefined, onClick: isInteractive ? onItemClick : undefined, onKeyDown: handleKeyDown, children: [_jsx("div", { className: "ds-widget-calendar__content", children: _jsxs("dl", { className: "ds-widget-calendar__details", children: [_jsx("dt", { className: "sr-only", children: eventPrimaryTerm }), _jsx("dd", { className: "ds-widget-calendar__primary-definition", children: eventPrimaryDefinition }), _jsx("dt", { className: "sr-only", children: eventSecondaryTerm }), _jsx("dd", { className: "ds-widget-calendar__secondary-definition", children: secondaryContent })] }) }), isInteractive && (_jsxs("div", { className: "ds-widget-calendar__action", "aria-hidden": "true", children: [_jsx(Icon, { name: "chevron-right", size: 16, className: "ds-widget-calendar__icon-chevron" }), _jsx(Icon, { name: "arrow-right", size: 16, className: "ds-widget-calendar__icon-arrow" })] }))] }));
25
+ if (tooltip) {
26
+ return (_jsx(TooltipWrapper, { tooltipContent: tooltip, children: item }));
27
+ }
28
+ return item;
24
29
  };
25
30
  //# sourceMappingURL=WidgetCalendarItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetCalendarItem.js","sourceRoot":"","sources":["../../../src/components/widgetCalendar/WidgetCalendarItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAmB/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAqB,EAAE;IACtF,MAAM,EACJ,EAAE,EACF,SAAS,GAAG,SAAS,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,MAAM,gBAAgB,GAAG,OAAO,sBAAsB,KAAK,QAAQ;QACjE,CAAC,CAAC,QAAQ,sBAAsB,EAAE;QAClC,CAAC,CAAC,YAAY,CAAC;IAEjB,MAAM,gBAAgB,GAAG,wBAAwB,IAAI,CACnD,8BACE,eAAM,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAC,0BAA0B,YAChE,cAAc,GACV,EACN,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,IAC3C,CACJ,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAyC,EAAE,EAAE;QAClE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,WAAW,EAAE,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,UAAU,CACnB,0BAA0B,EAC1B,SAAS,KAAK,WAAW;YACvB,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,mCAAmC,EACvC,aAAa,IAAI,uCAAuC,EACxD,SAAS,CACV,iBACY,wBAAwB,EAAE,EAAE,EACzC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC1C,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,gBAC3B,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,EAC5E,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAChD,SAAS,EAAE,aAAa,aAExB,cAAK,SAAS,EAAC,6BAA6B,YAC1C,cAAI,SAAS,EAAC,6BAA6B,aACzC,aAAI,SAAS,EAAC,SAAS,YAAE,gBAAgB,GAAM,EAC/C,aAAI,SAAS,EAAC,wCAAwC,YAAE,sBAAsB,GAAM,EACpF,aAAI,SAAS,EAAC,SAAS,YAAE,kBAAkB,GAAM,EACjD,aAAI,SAAS,EAAC,0CAA0C,YAAE,gBAAgB,GAAM,IAC7E,GACD,EACL,aAAa,IAAI,CAChB,eAAK,SAAS,EAAC,4BAA4B,iBAAa,MAAM,aAC5D,KAAC,IAAI,IACH,IAAI,EAAC,eAAe,EACpB,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,kCAAkC,GAC5C,EACF,KAAC,IAAI,IACH,IAAI,EAAC,aAAa,EAClB,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,gCAAgC,GAC1C,IACE,CACP,IACE,CACN,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"WidgetCalendarItem.js","sourceRoot":"","sources":["../../../src/components/widgetCalendar/WidgetCalendarItem.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavourites.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAWnF,eAAO,MAAM,gBAAgB;YAAW,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAsDhF,CAAC;AAIF,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,KAAK,GAAG,qBAAqB,CAAC;IAC1C,KAAY,SAAS,GAAG,yBAAyB,CAAC;IAClD,KAAY,QAAQ,GAAG,OAAO,YAAY,EAAE,wBAAwB,CAAC;CACtE;AAED,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"WidgetFavourites.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAWnF,eAAO,MAAM,gBAAgB;YAAW,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAyDhF,CAAC;AAIF,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,KAAK,GAAG,qBAAqB,CAAC;IAC1C,KAAY,SAAS,GAAG,yBAAyB,CAAC;IAClD,KAAY,QAAQ,GAAG,OAAO,YAAY,EAAE,wBAAwB,CAAC;CACtE;AAED,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
@@ -1,22 +1,23 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
2
3
  import { EmptyState } from '../emptyState/EmptyState.js';
3
4
  import { Widget } from '../widget/Widget.js';
4
5
  import { WidgetFavouritesItem } from './WidgetFavouritesItem.js';
5
6
  const defaultEmptyState = (_jsx(EmptyState, { padding: "md", heading: "No favourites yet", subHeading: "Star pages from the sidebar to see them here." }));
6
7
  export const WidgetFavourites = (props) => {
7
- const { heading, tooltip, items, headingHref, isFloating = false, onRemoveItem, emptyState = defaultEmptyState, className, } = props;
8
+ const { heading, tooltip, items, headingHref, renderLink, linkProps, isFloating = false, onRemoveItem, emptyState = defaultEmptyState, className, } = props;
8
9
  const isEmpty = items.length === 0;
9
10
  const widgetCommonProps = {
10
11
  tooltip,
11
12
  isFloating,
12
13
  isEmpty,
13
14
  emptyState,
14
- className,
15
+ className: classNames('ds-widget-favourites', className),
15
16
  };
16
- const body = (_jsxs(_Fragment, { children: [_jsx(Widget.Header, { children: heading }), _jsx(Widget.Body, { children: !isEmpty && (_jsx("ul", { className: "ds-widget-favourites__list", children: items.map(item => (_jsx(WidgetFavouritesItem, { id: item.id, label: item.label, href: item.href, removeLabel: item.removeLabel, onRemove: onRemoveItem ? () => onRemoveItem(item.id) : undefined }, item.id))) })) })] }));
17
+ const body = (_jsxs(_Fragment, { children: [_jsx(Widget.Header, { children: heading }), _jsx(Widget.Body, { children: !isEmpty && (_jsx("ul", { className: "ds-widget-favourites__list", children: items.map(item => (_jsx(WidgetFavouritesItem, { id: item.id, label: item.label, href: item.href, removeLabel: item.removeLabel, linkProps: item.linkProps, onRemove: onRemoveItem ? () => onRemoveItem(item.id) : undefined }, item.id))) })) })] }));
17
18
  return (_jsx(Widget, { ...{
18
19
  ...widgetCommonProps,
19
- ...(headingHref ? { href: headingHref } : {}),
20
+ ...(headingHref ? { href: headingHref, renderLink, linkProps } : {}),
20
21
  }, children: body }));
21
22
  };
22
23
  WidgetFavourites.Item = WidgetFavouritesItem;
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavourites.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,iBAAiB,GAAG,CACxB,KAAC,UAAU,IACT,OAAO,EAAC,IAAI,EACZ,OAAO,EAAC,mBAAmB,EAC3B,UAAU,EAAC,+CAA+C,GAC1D,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAA4B,EAAqB,EAAE;IAClF,MAAM,EACJ,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAW,EACX,UAAU,GAAG,KAAK,EAClB,YAAY,EACZ,UAAU,GAAG,iBAAiB,EAC9B,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAEnC,MAAM,iBAAiB,GAAG;QACxB,OAAO;QACP,UAAU;QACV,OAAO;QACP,UAAU;QACV,SAAS;KACV,CAAC;IAEF,MAAM,IAAI,GAAG,CACX,8BACE,KAAC,MAAM,CAAC,MAAM,cAAE,OAAO,GAAiB,EACxC,KAAC,MAAM,CAAC,IAAI,cACT,CAAC,OAAO,IAAI,CACX,aAAI,SAAS,EAAC,4BAA4B,YACvC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACjB,KAAC,oBAAoB,IAEnB,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAL3D,IAAI,CAAC,EAAE,CAMZ,CACH,CAAC,GACC,CACN,GACW,IACb,CACJ,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,OACA;YACH,GAAG,iBAAiB;YACpB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpB,YAE1B,IAAI,GACE,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,IAAI,GAAG,oBAAoB,CAAC"}
1
+ {"version":3,"file":"WidgetFavourites.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,iBAAiB,GAAG,CACxB,KAAC,UAAU,IACT,OAAO,EAAC,IAAI,EACZ,OAAO,EAAC,mBAAmB,EAC3B,UAAU,EAAC,+CAA+C,GAC1D,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAA4B,EAAqB,EAAE;IAClF,MAAM,EACJ,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,GAAG,KAAK,EAClB,YAAY,EACZ,UAAU,GAAG,iBAAiB,EAC9B,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAEnC,MAAM,iBAAiB,GAAG;QACxB,OAAO;QACP,UAAU;QACV,OAAO;QACP,UAAU;QACV,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC;KACzD,CAAC;IAEF,MAAM,IAAI,GAAG,CACX,8BACE,KAAC,MAAM,CAAC,MAAM,cAAE,OAAO,GAAiB,EACxC,KAAC,MAAM,CAAC,IAAI,cACT,CAAC,OAAO,IAAI,CACX,aAAI,SAAS,EAAC,4BAA4B,YACvC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACjB,KAAC,oBAAoB,IAEnB,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAN3D,IAAI,CAAC,EAAE,CAOZ,CACH,CAAC,GACC,CACN,GACW,IACb,CACJ,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,OACA;YACH,GAAG,iBAAiB;YACpB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3C,YAE1B,IAAI,GACE,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,IAAI,GAAG,oBAAoB,CAAC"}
@@ -79,6 +79,9 @@ declare const meta: {
79
79
  export default meta;
80
80
  type Story = StoryObj<typeof meta>;
81
81
  export declare const Default: Story;
82
+ export declare const WithHeadingLinkProps: Story;
83
+ export declare const WithItemLinkProps: Story;
82
84
  export declare const WithConfirmRemove: Story;
85
+ export declare const LongList: Story;
83
86
  export declare const Empty: Story;
84
87
  //# sourceMappingURL=WidgetFavourites.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavourites.stories.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.stories.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AA8E3D,iBAAS,wBAAwB,gCAmBhC;AAED,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+C+B,CAAC;AAE1C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAkJnC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAQ/B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAQnB,CAAC"}
1
+ {"version":3,"file":"WidgetFavourites.stories.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.stories.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AA+F3D,iBAAS,wBAAwB,gCAmBhC;AAED,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+C+B,CAAC;AAE1C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAsOnC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAgDlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAsD/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAQ/B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAQnB,CAAC"}
@@ -14,6 +14,11 @@ const initialItems = [
14
14
  { id: 'behaviour', label: 'Behaviour Incidents', href: '/behaviour/incidents' },
15
15
  { id: 'calendar', label: 'School Calendar', href: '/calendar' },
16
16
  ];
17
+ const longListItems = Array.from({ length: 20 }, (_, index) => ({
18
+ id: `favourite-${index + 1}`,
19
+ label: `Favourite page ${index + 1}`,
20
+ href: `/favourites/${index + 1}`,
21
+ }));
17
22
  const DESCRIPTION_INTRO = [
18
23
  '`WidgetFavourites` is a pre-composed dashboard widget for starred pages.',
19
24
  'It wraps [`Widget`](?path=/docs/components-widget--docs) with a linked header and a list of favourite rows —',
@@ -46,11 +51,22 @@ const DEVELOPER_NOTES = [
46
51
  '**Row link and remove are siblings.** The remove button is not nested inside the row anchor —',
47
52
  'same pattern as sidebar favourites. Click handlers call `event.stopPropagation()`.',
48
53
  '',
54
+ '**Height is bounded by a token.** `WidgetFavourites` caps itself at `--widget-favourites-max-height` (375px),',
55
+ 'so a long list scrolls inside the widget body instead of growing the page. Override the token on an ancestor',
56
+ 'to change the cap; no parent height is required.',
57
+ '',
49
58
  '**Empty list uses Widget empty state.** When `items` is empty, `WidgetFavourites` sets `isEmpty` on the',
50
59
  'underlying `Widget` and renders the default or custom `emptyState`.',
51
60
  '',
52
61
  '**Undo removal.** Wire removal in the parent and pass a foreground toast with `toastActions` for the recommended product flow.',
53
62
  '',
63
+ '**`renderLink` and `linkProps` apply to the heading link only.** Both are forwarded to `Widget` only when',
64
+ '`headingHref` is set, and the types reject either prop without `headingHref`.',
65
+ '',
66
+ '**Items accept `linkProps` for row click handling.** `items[].linkProps` (or `linkProps` on',
67
+ '`WidgetFavourites.Item`) is spread onto the row `<a>`. `href` and `className` are applied after the spread',
68
+ 'and cannot be overridden.',
69
+ '',
54
70
  '---',
55
71
  '',
56
72
  '### Accessibility',
@@ -188,6 +204,43 @@ const WithConfirmRemoveTemplate = () => {
188
204
  };
189
205
  return (_jsxs(_Fragment, { children: [_jsx(WidgetFavourites, { heading: `Favourites (${items.length})`, tooltip: "Your starred pages appear here", headingHref: "/favourites", isFloating: true, items: items, onRemoveItem: setPendingRemoveId }), _jsxs(Modal, { open: pendingRemoveId !== null, title: pendingItem ? `Remove ${pendingItem.label}?` : 'Remove favourite?', children: [_jsx(Modal.Body, { children: _jsxs("p", { style: { margin: 0 }, children: ["Are you sure you want to remove", ' ', _jsx("strong", { children: pendingItem?.label }), ' ', "from your favourites?"] }) }), _jsxs(Modal.Footer, { children: [_jsx(Button, { variant: "secondary", onClick: () => setPendingRemoveId(null), children: "Cancel" }), _jsx(Button, { variant: "primary-destructive", onClick: handleConfirmRemove, children: "Yes, remove" })] })] })] }));
190
206
  };
207
+ // Modifier-clicks (cmd/ctrl/shift/alt) open new tabs or windows, so leave them to the browser.
208
+ const isModifiedClick = (event) => event.metaKey || event.ctrlKey || event.shiftKey || event.altKey;
209
+ const LastClicked = ({ label, placeholder }) => (_jsx("span", { className: "ds-text", style: { color: 'var(--color-grey-600)' }, children: label
210
+ ? (_jsxs(_Fragment, { children: ["Last clicked:", ' ', label] }))
211
+ : placeholder }));
212
+ const handleHeadingLinkClick = fn().mockName('linkProps.onClick');
213
+ const handleItemLinkClick = fn().mockName('items[].linkProps.onClick');
214
+ const WithHeadingLinkPropsTemplate = () => {
215
+ const [lastClickedHref, setLastClickedHref] = useState(null);
216
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-large)' }, children: [_jsx(WidgetFavourites, { heading: `Favourites (${initialItems.length})`, tooltip: "Your starred pages appear here", headingHref: "/favourites", isFloating: true, items: initialItems, linkProps: {
217
+ onClick: (event) => {
218
+ handleHeadingLinkClick(event);
219
+ if (isModifiedClick(event)) {
220
+ return;
221
+ }
222
+ event.preventDefault();
223
+ setLastClickedHref(event.currentTarget.getAttribute('href'));
224
+ },
225
+ } }), _jsx(LastClicked, { label: lastClickedHref, placeholder: "Click the heading to see the handled navigation captured here." })] }));
226
+ };
227
+ const WithItemLinkPropsTemplate = () => {
228
+ const [lastClickedLabel, setLastClickedLabel] = useState(null);
229
+ const items = initialItems.map((item) => ({
230
+ ...item,
231
+ linkProps: {
232
+ onClick: (event) => {
233
+ handleItemLinkClick(item.id, event);
234
+ if (isModifiedClick(event)) {
235
+ return;
236
+ }
237
+ event.preventDefault();
238
+ setLastClickedLabel(item.label);
239
+ },
240
+ },
241
+ }));
242
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-large)' }, children: [_jsx(WidgetFavourites, { heading: `Favourites (${items.length})`, tooltip: "Your starred pages appear here", isFloating: true, items: items }), _jsx(LastClicked, { label: lastClickedLabel, placeholder: "Click a favourite to see it captured here." })] }));
243
+ };
191
244
  const EmptyTemplate = () => (_jsx(WidgetFavourites, { heading: "Favourites (0)", tooltip: "Your starred pages appear here", headingHref: "/favourites", isFloating: true, items: [] }));
192
245
  export const Default = withDescription({
193
246
  render: UndoableFavouritesTemplate,
@@ -195,12 +248,116 @@ export const Default = withDescription({
195
248
  controls: { disable: true },
196
249
  },
197
250
  }, 'Recommended product flow: remove a favourite, then undo via a foreground toast. Each row shows the remove button when `onRemoveItem` is wired.');
251
+ export const WithHeadingLinkProps = {
252
+ name: 'With heading linkProps',
253
+ ...withDescription({
254
+ render: WithHeadingLinkPropsTemplate,
255
+ parameters: {
256
+ controls: { disable: true },
257
+ docs: {
258
+ source: {
259
+ language: 'tsx',
260
+ code: `
261
+ import { WidgetFavourites } from '@arbor-education/design-system.components';
262
+
263
+ function FavouritesHeadingLinkPropsExample() {
264
+ return (
265
+ <WidgetFavourites
266
+ heading="Favourites"
267
+ headingHref="/favourites"
268
+ isFloating
269
+ items={items}
270
+ linkProps={{
271
+ onClick: (event) => {
272
+ // Leave modifier-clicks (new tab/window) to the browser.
273
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
274
+ return;
275
+ }
276
+ event.preventDefault();
277
+ navigate('/favourites');
278
+ },
279
+ }}
280
+ />
281
+ );
282
+ }
283
+ export default FavouritesHeadingLinkPropsExample;
284
+ `.trim(),
285
+ },
286
+ },
287
+ },
288
+ }, [
289
+ '**Demonstrates the `linkProps` prop** (forwarded to `Widget` when `headingHref` is set). `linkProps` is',
290
+ 'spread onto the heading `<a>`, so consumers can attach `onClick` for analytics or client-side navigation.',
291
+ 'Each click is logged to the Actions panel as `linkProps.onClick`. A plain click calls `preventDefault()`',
292
+ 'and shows the destination below the widget as "Last clicked: {href}"; modifier-clicks (cmd/ctrl/shift/alt)',
293
+ 'are left to the browser. For a custom link element (e.g. a router link) use `renderLink` instead, as in',
294
+ 'the `Widget` "With Render Link" story. For row clicks, see "With item linkProps".',
295
+ ].join(' ')),
296
+ };
297
+ export const WithItemLinkProps = {
298
+ name: 'With item linkProps',
299
+ ...withDescription({
300
+ render: WithItemLinkPropsTemplate,
301
+ parameters: {
302
+ controls: { disable: true },
303
+ docs: {
304
+ source: {
305
+ language: 'tsx',
306
+ code: `
307
+ import { useState } from 'react';
308
+ import { WidgetFavourites } from '@arbor-education/design-system.components';
309
+ import type { WidgetFavouritesItemData } from '@arbor-education/design-system.components';
310
+
311
+ function FavouritesItemLinkPropsExample() {
312
+ const [lastClicked, setLastClicked] = useState<string | null>(null);
313
+
314
+ const items: WidgetFavouritesItemData[] = favourites.map(item => ({
315
+ ...item,
316
+ linkProps: {
317
+ onClick: (event) => {
318
+ // Leave modifier-clicks (new tab/window) to the browser.
319
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
320
+ return;
321
+ }
322
+ event.preventDefault();
323
+ setLastClicked(item.label);
324
+ navigate(item.href);
325
+ },
326
+ },
327
+ }));
328
+
329
+ return (
330
+ <>
331
+ <WidgetFavourites heading="Favourites" isFloating items={items} />
332
+ <span>Last clicked: {lastClicked ?? 'none yet'}</span>
333
+ </>
334
+ );
335
+ }
336
+ export default FavouritesItemLinkPropsExample;
337
+ `.trim(),
338
+ },
339
+ },
340
+ },
341
+ }, [
342
+ '**Demonstrates the `linkProps` field on `items`** (also accepted by `WidgetFavourites.Item`). Each item\'s',
343
+ '`linkProps` is spread onto its row `<a>`; `href` and `className` are applied after the spread and cannot',
344
+ 'be overridden. Each click is logged to the Actions panel as `items[].linkProps.onClick` with the item id.',
345
+ 'A plain click calls `preventDefault()` and shows the clicked favourite below the widget as',
346
+ '"Last clicked: {label}"; modifier-clicks (cmd/ctrl/shift/alt) are left to the browser.',
347
+ ].join(' ')),
348
+ };
198
349
  export const WithConfirmRemove = withDescription({
199
350
  render: WithConfirmRemoveTemplate,
200
351
  parameters: {
201
352
  controls: { disable: true },
202
353
  },
203
354
  }, 'Alternative flow when removal must be confirmed before mutating state. The remove button opens a destructive modal.');
355
+ export const LongList = withDescription({
356
+ args: {
357
+ heading: `Favourites (${longListItems.length})`,
358
+ items: longListItems,
359
+ },
360
+ }, 'A long list stays within `--widget-favourites-max-height` (375px). The header stays fixed and only the list scrolls.');
204
361
  export const Empty = withDescription({
205
362
  render: EmptyTemplate,
206
363
  parameters: {
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavourites.stories.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.stories.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WidgetFavourites.stories.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.stories.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import '@testing-library/jest-dom/vitest';
3
3
  import { fireEvent, render, screen } from '@testing-library/react';
4
4
  import userEvent from '@testing-library/user-event';
@@ -39,10 +39,50 @@ describe('WidgetFavourites', () => {
39
39
  const { container } = render(_jsx(WidgetFavourites, { heading: "Favourites", items: mockItems, isFloating: true }));
40
40
  expect(container.querySelector('.ds-widget--floating')).toBeInTheDocument();
41
41
  });
42
+ test('applies the bounded root class alongside a consumer className', () => {
43
+ const { container } = render(_jsx(WidgetFavourites, { heading: "Favourites", items: mockItems, className: "consumer-class" }));
44
+ expect(container.querySelector('.ds-widget')).toHaveClass('ds-widget-favourites', 'consumer-class');
45
+ });
42
46
  test('renders linked widget header when headingHref is provided', () => {
43
47
  render(_jsx(WidgetFavourites, { heading: "Favourites (2)", headingHref: "/favourites", items: mockItems }));
44
48
  expect(screen.getByRole('link', { name: 'Favourites (2)' })).toHaveAttribute('href', '/favourites');
45
49
  });
50
+ test('forwards linkProps to the linked header', () => {
51
+ const onClick = vi.fn();
52
+ render(_jsx(WidgetFavourites, { heading: "Favourites (2)", headingHref: "/favourites", linkProps: { onClick, target: '_blank' }, items: mockItems }));
53
+ const link = screen.getByRole('link', { name: 'Favourites (2)' });
54
+ fireEvent.click(link);
55
+ expect(onClick).toHaveBeenCalledTimes(1);
56
+ expect(link).toHaveAttribute('target', '_blank');
57
+ });
58
+ test('renders the linked header through renderLink', () => {
59
+ render(_jsx(WidgetFavourites, { heading: "Favourites (2)", headingHref: "/favourites", renderLink: ({ href, className, children }) => (_jsx("a", { href: href, className: className, "data-router-link": "true", children: children })), items: mockItems }));
60
+ expect(screen.getByRole('link', { name: 'Favourites (2)' })).toHaveAttribute('data-router-link', 'true');
61
+ });
62
+ test('rejects heading link props without headingHref at the type level', () => {
63
+ render(_jsxs(_Fragment, { children: [_jsx(WidgetFavourites, { heading: "Favourites", items: mockItems, linkProps: { onClick: vi.fn() } }), _jsx(WidgetFavourites, { heading: "Favourites", items: mockItems, renderLink: () => _jsx("a", {}) })] }));
64
+ expect(screen.queryByRole('link', { name: 'Favourites' })).not.toBeInTheDocument();
65
+ });
66
+ test('applies item linkProps to the row link', () => {
67
+ const onClick = vi.fn();
68
+ render(_jsx(WidgetFavourites, { heading: "Favourites", items: [{
69
+ id: 'daily',
70
+ label: 'Daily Attendance',
71
+ href: '/attendance/daily',
72
+ linkProps: { onClick, target: '_blank' },
73
+ }] }));
74
+ const link = screen.getByRole('link', { name: 'Daily Attendance' });
75
+ fireEvent.click(link);
76
+ expect(onClick).toHaveBeenCalledTimes(1);
77
+ expect(link).toHaveAttribute('target', '_blank');
78
+ expect(link).toHaveAttribute('href', '/attendance/daily');
79
+ });
80
+ test('WidgetFavourites.Item applies linkProps to the row link', () => {
81
+ const onClick = vi.fn();
82
+ render(_jsx("ul", { children: _jsx(WidgetFavourites.Item, { id: "daily", label: "Daily Attendance", href: "/attendance/daily", linkProps: { onClick } }) }));
83
+ fireEvent.click(screen.getByRole('link', { name: 'Daily Attendance' }));
84
+ expect(onClick).toHaveBeenCalledTimes(1);
85
+ });
46
86
  test('uses default remove label on remove button', () => {
47
87
  render(_jsx(WidgetFavourites, { heading: "Favourites", items: mockItems, onRemoveItem: vi.fn() }));
48
88
  expect(screen.getByTestId('widget-favourites-remove-daily')).toHaveAttribute('aria-label', 'Remove from favourites');
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavourites.test.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.test.tsx"],"names":[],"mappings":";AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,SAAS,GAAG;IAChB,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE;IACrE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;CACjE,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,CACJ,KAAC,gBAAgB,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,GAAI,CAC5D,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAChF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC5G,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAClE,MAAM,CACJ,KAAC,gBAAgB,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,GAAI,CACnF,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;QAE1E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,qBAAqB,EAAE,6BAA6B,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAClE,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE7B,MAAM,CACJ,KAAC,gBAAgB,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAI,CACxF,CAAC;QAEF,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAEtE,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACnD,MAAM,CACJ,KAAC,gBAAgB,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,GAAI,CACrD,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACvF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,gBAAgB,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,UAAU,SAAG,CACvE,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,MAAM,CACJ,KAAC,gBAAgB,IACf,OAAO,EAAC,gBAAgB,EACxB,WAAW,EAAC,aAAa,EACzB,KAAK,EAAE,SAAS,GAChB,CACH,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,CACJ,KAAC,gBAAgB,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,GAAI,CACnF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,CAAC,eAAe,CAC1E,YAAY,EACZ,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,CACJ,KAAC,gBAAgB,IACf,OAAO,EAAC,YAAY,EACpB,KAAK,EAAE,CAAC;oBACN,EAAE,EAAE,OAAO;oBACX,KAAK,EAAE,kBAAkB;oBACzB,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,yBAAyB;iBACvC,CAAC,EACF,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,GACrB,CACH,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAE/B,MAAM,CACJ,KAAC,gBAAgB,CAAC,QAAQ,IAAC,aAAa,EAAE,GAAG,YAC3C,uBACE,KAAC,gBAAgB,CAAC,IAAI,IACpB,EAAE,EAAC,OAAO,EACV,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,mBAAmB,EACxB,QAAQ,EAAE,QAAQ,GAClB,GACC,GACqB,CAC7B,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAEvE,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"WidgetFavourites.test.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavourites.test.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavouritesItem.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavouritesItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAI5D,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,KAAG,KAAK,CAAC,GAAG,CAAC,OA6BjF,CAAC"}
1
+ {"version":3,"file":"WidgetFavouritesItem.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavouritesItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAI5D,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,KAAG,KAAK,CAAC,GAAG,CAAC,OA8BjF,CAAC"}
@@ -4,7 +4,7 @@ import { FavouriteButton } from '../favourite/FavouriteButton.js';
4
4
  import { FAVOURITE_TOOLTIP } from '../../utils/favourites/favouriteConstants.js';
5
5
  const linkClassName = 'ds-widget-favourites__link';
6
6
  export const WidgetFavouritesItem = (props) => {
7
- const { id, label, href, removeLabel = FAVOURITE_TOOLTIP.remove, onRemove, className, } = props;
8
- return (_jsxs("li", { className: classNames('ds-widget-favourites__item', className), "data-testid": `widget-favourites-item-${id}`, children: [_jsx("a", { href: href, className: linkClassName, children: label }), onRemove && (_jsx(FavouriteButton, { variant: "remove", label: removeLabel, className: "remove-default-button-styles", "data-testid": `widget-favourites-remove-${id}`, onClick: onRemove }))] }));
7
+ const { id, label, href, removeLabel = FAVOURITE_TOOLTIP.remove, linkProps, onRemove, className, } = props;
8
+ return (_jsxs("li", { className: classNames('ds-widget-favourites__item', className), "data-testid": `widget-favourites-item-${id}`, children: [_jsx("a", { ...linkProps, href: href, className: linkClassName, children: label }), onRemove && (_jsx(FavouriteButton, { variant: "remove", label: removeLabel, className: "remove-default-button-styles", "data-testid": `widget-favourites-remove-${id}`, onClick: onRemove }))] }));
9
9
  };
10
10
  //# sourceMappingURL=WidgetFavouritesItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFavouritesItem.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavouritesItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAqB,EAAE;IAC1F,MAAM,EACJ,EAAE,EACF,KAAK,EACL,IAAI,EACJ,WAAW,GAAG,iBAAiB,CAAC,MAAM,EACtC,QAAQ,EACR,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,cACE,SAAS,EAAE,UAAU,CAAC,4BAA4B,EAAE,SAAS,CAAC,iBACjD,0BAA0B,EAAE,EAAE,aAE3C,YAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,YACpC,KAAK,GACJ,EACH,QAAQ,IAAI,CACX,KAAC,eAAe,IACd,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAC,8BAA8B,iBAC3B,4BAA4B,EAAE,EAAE,EAC7C,OAAO,EAAE,QAAQ,GACjB,CACH,IACE,CACN,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"WidgetFavouritesItem.js","sourceRoot":"","sources":["../../../src/components/widgetFavourites/WidgetFavouritesItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAqB,EAAE;IAC1F,MAAM,EACJ,EAAE,EACF,KAAK,EACL,IAAI,EACJ,WAAW,GAAG,iBAAiB,CAAC,MAAM,EACtC,SAAS,EACT,QAAQ,EACR,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,cACE,SAAS,EAAE,UAAU,CAAC,4BAA4B,EAAE,SAAS,CAAC,iBACjD,0BAA0B,EAAE,EAAE,aAE3C,eAAO,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,YACnD,KAAK,GACJ,EACH,QAAQ,IAAI,CACX,KAAC,eAAe,IACd,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAC,8BAA8B,iBAC3B,4BAA4B,EAAE,EAAE,EAC7C,OAAO,EAAE,QAAQ,GACjB,CACH,IACE,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -1,14 +1,15 @@
1
+ import type { WidgetHeadingLinkProps, WidgetLinkedProps } from '../widget/types.js';
1
2
  export type WidgetFavouritesItemData = {
2
3
  id: string;
3
4
  label: string;
4
5
  href: string;
5
6
  removeLabel?: string;
7
+ linkProps?: WidgetLinkedProps['linkProps'];
6
8
  };
7
- export type WidgetFavouritesProps = {
9
+ export type WidgetFavouritesProps = WidgetHeadingLinkProps & {
8
10
  heading: React.ReactNode;
9
11
  tooltip?: string;
10
12
  items: WidgetFavouritesItemData[];
11
- headingHref?: string;
12
13
  isFloating?: boolean;
13
14
  onRemoveItem?: (id: string) => void;
14
15
  emptyState?: React.ReactNode;
@@ -19,6 +20,7 @@ export type WidgetFavouritesItemProps = {
19
20
  label: string;
20
21
  href: string;
21
22
  removeLabel?: string;
23
+ linkProps?: WidgetLinkedProps['linkProps'];
22
24
  onRemove?: () => void;
23
25
  className?: string;
24
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/widgetFavourites/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEzF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
package/dist/index.css CHANGED
@@ -1487,6 +1487,7 @@
1487
1487
  --widget-favourites-weight-border: var(--border-weight);
1488
1488
  --widget-favourites-spacing-vertical: var(--spacing-small);
1489
1489
  --widget-favourites-spacing-horizontal: var(--spacing-small);
1490
+ --widget-favourites-max-height: 375px;
1490
1491
  --widget-attachments-hover-color-icon: var(--color-grey-900);
1491
1492
  --widget-attachments-hover-color-text: var(--color-grey-900);
1492
1493
  --widget-attachments-hover-color-background: var(--color-grey-100);
@@ -2888,6 +2889,24 @@ h4.ds-heading, h4.ds-heading .ds-heading__inner-container, h4 .ds-editable-text_
2888
2889
  cursor: not-allowed;
2889
2890
  }
2890
2891
 
2892
+ .ds-single-file-input {
2893
+ position: relative;
2894
+ display: flex;
2895
+ align-items: center;
2896
+ gap: var(--spacing-small);
2897
+ width: 100%;
2898
+ }
2899
+
2900
+ .ds-single-file-input__name {
2901
+ flex: 1 1 auto;
2902
+ min-width: 0;
2903
+ text-overflow: ellipsis;
2904
+ }
2905
+
2906
+ .ds-single-file-input__trigger {
2907
+ flex: none;
2908
+ }
2909
+
2891
2910
  .ds-radio-button-input__container {
2892
2911
  cursor: pointer;
2893
2912
  display: inline-flex;
@@ -6465,6 +6484,21 @@ li.ds-combobox__option--disabled {
6465
6484
  color: var(--widget-list-row-hover-color-icon-arrow);
6466
6485
  }
6467
6486
 
6487
+ .ds-widget-calendar__group-heading {
6488
+ color: var(--widget-calendar-color-text);
6489
+ font-family: var(--type-body-bold-family);
6490
+ font-size: var(--type-body-bold-size);
6491
+ font-style: normal;
6492
+ font-weight: var(--type-body-bold-weight);
6493
+ line-height: 150%;
6494
+ }
6495
+
6496
+ .ds-widget.ds-widget-favourites {
6497
+ display: grid;
6498
+ grid-template-rows: minmax(0, 1fr);
6499
+ max-height: var(--widget-favourites-max-height);
6500
+ }
6501
+
6468
6502
  .ds-widget-favourites__list {
6469
6503
  list-style: none;
6470
6504
  margin: 0;