@economic/taco 1.25.2 → 1.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. package/dist/components/ButtonGroup/ButtonGroup.d.ts +5 -0
  2. package/dist/esm/packages/taco/src/components/ButtonGroup/ButtonGroup.js +46 -0
  3. package/dist/esm/packages/taco/src/components/ButtonGroup/ButtonGroup.js.map +1 -0
  4. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +1 -1
  5. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js +1 -1
  6. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +2 -2
  7. package/dist/esm/packages/taco/src/components/Group/Group.js +1 -1
  8. package/dist/esm/packages/taco/src/components/Group/Group.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js +20 -13
  10. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Header/components/PrimaryNavigation.js +1 -1
  14. package/dist/esm/packages/taco/src/components/Input/Input.js +1 -1
  15. package/dist/esm/packages/taco/src/components/Layout/components/Sidebar.js +26 -22
  16. package/dist/esm/packages/taco/src/components/Layout/components/Sidebar.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +1 -1
  18. package/dist/esm/packages/taco/src/components/Listbox/useListbox.js +1 -1
  19. package/dist/esm/packages/taco/src/components/Listbox/useMultiListbox.js +1 -1
  20. package/dist/esm/packages/taco/src/components/Menu/Menu.js +2 -2
  21. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +1 -1
  22. package/dist/esm/packages/taco/src/components/Menu/components/Header.js +1 -1
  23. package/dist/esm/packages/taco/src/components/Menu/components/Item.js +2 -2
  24. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Menu/components/Link.js +1 -1
  26. package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js +1 -1
  27. package/dist/esm/packages/taco/src/components/Select/useSelect.js +1 -1
  28. package/dist/esm/packages/taco/src/components/Select2/Select2.js +2 -2
  29. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +2 -2
  30. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +1 -1
  31. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js +1 -1
  32. package/dist/esm/packages/taco/src/components/Table/hooks/useTableKeyboardNavigation.js +1 -1
  33. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +1 -1
  34. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +1 -1
  35. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js +48 -0
  36. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js.map +1 -0
  37. package/dist/esm/packages/taco/src/index.js +6 -4
  38. package/dist/esm/packages/taco/src/index.js.map +1 -1
  39. package/dist/hooks/useIntersectionObserver.d.ts +2 -0
  40. package/dist/index.d.ts +2 -0
  41. package/dist/taco.cjs.development.js +843 -750
  42. package/dist/taco.cjs.development.js.map +1 -1
  43. package/dist/taco.cjs.production.min.js +1 -1
  44. package/dist/taco.cjs.production.min.js.map +1 -1
  45. package/package.json +2 -2
@@ -10,6 +10,9 @@ var cn = _interopDefault(require('classnames'));
10
10
  var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
11
11
  var AccordionPrimitive = require('@radix-ui/react-accordion');
12
12
  var TooltipPrimitive = require('@radix-ui/react-tooltip');
13
+ var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
14
+ var reactUseControllableState = require('@radix-ui/react-use-controllable-state');
15
+ var RadioGroupPrimitive = require('@radix-ui/react-radio-group');
13
16
  var ReactDayPicker = _interopDefault(require('react-day-picker'));
14
17
  var CheckboxPrimitive = require('@radix-ui/react-checkbox');
15
18
  var uuid = require('uuid');
@@ -21,10 +24,7 @@ var interactions = require('@react-aria/interactions');
21
24
  var framerMotion = require('framer-motion');
22
25
  var focus = require('@react-aria/focus');
23
26
  var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
24
- var reactUseControllableState = require('@radix-ui/react-use-controllable-state');
25
27
  var HoverCardPrimitive = require('@radix-ui/react-hover-card');
26
- var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
27
- var RadioGroupPrimitive = require('@radix-ui/react-radio-group');
28
28
  var reactTable = require('react-table');
29
29
  var reactIntersectionObserver = require('react-intersection-observer');
30
30
  var reactWindow = require('react-window');
@@ -3998,241 +3998,732 @@ const Button$1 = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
3998
3998
  }, button);
3999
3999
  });
4000
4000
 
4001
- const thisYear = /*#__PURE__*/new Date().getFullYear();
4002
- const years = [];
4003
- for (let i = thisYear - 50; i <= thisYear + 10; i += 1) {
4004
- years.push(i);
4005
- }
4006
- const Navbar = /*#__PURE__*/React.memo(({
4007
- onMonthChange,
4008
- onNextClick,
4009
- onPreviousClick,
4010
- value = new Date()
4011
- }) => {
4012
- const {
4013
- texts: {
4014
- calendar: {
4015
- actions,
4016
- months
4001
+ // merges an external ref (optional) with an internal ref (required)
4002
+ const useMergedRef = ref => {
4003
+ const internalRef = React__default.useRef(null);
4004
+ React__default.useEffect(() => {
4005
+ if (ref) {
4006
+ if (typeof ref === 'function') {
4007
+ ref(internalRef.current);
4008
+ } else {
4009
+ ref.current = internalRef.current;
4017
4010
  }
4018
4011
  }
4019
- } = useLocalization();
4020
- const handleChange = function handleChange(event) {
4021
- const {
4022
- year,
4023
- month
4024
- } = event.target.form;
4025
- onMonthChange(new Date(year.value, month.value));
4026
- };
4027
- return /*#__PURE__*/React.createElement("div", {
4028
- className: "mb-2 flex items-center justify-between"
4029
- }, /*#__PURE__*/React.createElement("form", {
4030
- className: "inline-flex space-x-1"
4031
- }, /*#__PURE__*/React.createElement("select", {
4032
- className: "h-8 px-2",
4033
- name: "month",
4034
- onChange: handleChange,
4035
- value: value.getMonth()
4036
- }, months.map((month, i) => /*#__PURE__*/React.createElement("option", {
4037
- key: month,
4038
- value: i
4039
- }, month))), /*#__PURE__*/React.createElement("select", {
4040
- className: "h-8 px-2",
4041
- name: "year",
4042
- onChange: handleChange,
4043
- value: value.getFullYear()
4044
- }, years.map(year => /*#__PURE__*/React.createElement("option", {
4045
- key: year,
4046
- value: year
4047
- }, String(year))))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(IconButton, {
4048
- appearance: "discrete",
4049
- icon: "chevron-left",
4050
- "aria-label": actions.previousMonth,
4051
- onClick: () => onPreviousClick(),
4052
- rounded: true
4053
- }), /*#__PURE__*/React.createElement(IconButton, {
4054
- appearance: "discrete",
4055
- icon: "chevron-right",
4056
- "aria-label": actions.nextMonth,
4057
- onClick: () => onNextClick(),
4058
- rounded: true
4059
- })));
4060
- });
4061
- const Calendar$1 = /*#__PURE__*/React.forwardRef(function Calendar(props, ref) {
4012
+ }, [ref]);
4013
+ return internalRef;
4014
+ };
4015
+
4016
+ const Group = /*#__PURE__*/React.forwardRef(function Group(props, ref) {
4062
4017
  const {
4063
- onChange: handleChange,
4064
- value,
4065
- disabledDays,
4018
+ as: Tag = 'span',
4019
+ orientation = 'horizontal',
4066
4020
  ...otherProps
4067
4021
  } = props;
4068
- const {
4069
- locale,
4070
- texts
4071
- } = useLocalization();
4072
- const [visibleMonth, setVisibleMonth] = React.useState(value !== null && value !== void 0 ? value : new Date());
4073
- React.useEffect(() => {
4074
- if (visibleMonth !== value) {
4075
- setVisibleMonth(value !== null && value !== void 0 ? value : new Date());
4076
- }
4077
- }, [value]);
4078
- const handleDayClick = (date, modifiers, event) => {
4079
- if (modifiers.outside || modifiers.disabled) {
4080
- return;
4081
- }
4082
- handleChange(date, event);
4083
- };
4084
- const handleCalendarClickToday = () => {
4085
- const today = new Date();
4086
- // set to midday to avoid UTC offset causing dates to be mismatched server side
4087
- today.setHours(12);
4088
- today.setMinutes(0);
4089
- today.setSeconds(0);
4090
- handleChange(today);
4091
- };
4092
- const className = cn('flex bg-white text-xs p-4', otherProps.className);
4093
- return /*#__PURE__*/React.createElement("div", {
4094
- "data-taco": "calendar"
4095
- }, /*#__PURE__*/React.createElement(ReactDayPicker, Object.assign({}, otherProps, {
4096
- className: className,
4097
- month: visibleMonth,
4098
- selectedDays: value,
4099
- locale: locale.substring(0, 2),
4100
- firstDayOfWeek: 1,
4101
- months: texts.calendar.months,
4102
- weekdaysShort: texts.calendar.weekdaysShort,
4103
- navbarElement: navProps => /*#__PURE__*/React.createElement(Navbar, Object.assign({}, navProps, {
4104
- onMonthChange: setVisibleMonth,
4105
- value: visibleMonth
4106
- })),
4107
- onDayClick: handleDayClick,
4108
- onMonthChange: setVisibleMonth,
4109
- onTodayButtonClick: handleCalendarClickToday,
4110
- captionElement: () => null,
4111
- todayButton: texts.calendar.actions.today,
4112
- numberOfMonths: 1,
4113
- ref: ref,
4114
- disabledDays: disabledDays
4115
- })));
4116
- });
4117
-
4118
- const Content$2 = /*#__PURE__*/React.forwardRef(function CardContent(externalProps, ref) {
4119
- const {
4120
- noPadding,
4121
- ...props
4122
- } = externalProps;
4123
- const className = cn('flex-grow overflow-auto', {
4124
- 'mx-4 mb-4': !noPadding
4022
+ const className = cn('flex gap-2', {
4023
+ 'flex-col ': orientation === 'vertical'
4125
4024
  }, props.className);
4126
- return /*#__PURE__*/React.createElement("div", Object.assign({}, props, {
4025
+ return /*#__PURE__*/React.createElement(Tag, Object.assign({}, otherProps, {
4127
4026
  className: className,
4027
+ "data-taco": "group",
4128
4028
  ref: ref
4129
4029
  }));
4130
4030
  });
4131
- const Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4132
- const {
4133
- title,
4134
- menu,
4135
- children
4136
- } = props;
4137
- const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500', props.className);
4138
- return /*#__PURE__*/React.createElement("div", {
4139
- className: className,
4140
- "data-taco": "card",
4141
- ref: ref
4142
- }, /*#__PURE__*/React.createElement("div", {
4143
- className: "mx-4 mt-4 mb-2 flex"
4144
- }, title && /*#__PURE__*/React.createElement("h4", {
4145
- className: "mb-0 flex-grow text-left"
4146
- }, title), menu ? /*#__PURE__*/React.createElement(IconButton, {
4147
- icon: "ellipsis-horizontal",
4148
- appearance: "discrete",
4149
- menu: menu,
4150
- className: "-mt-[4px]"
4151
- }) : null), children);
4152
- });
4153
- Card.Content = Content$2;
4154
4031
 
4155
- // React 18 has this built-in, when we upgrade this hook should be removed and the uuid dependency should be removed
4156
- const useId = nativeId => {
4157
- return React__default.useMemo(() => nativeId !== null && nativeId !== void 0 ? nativeId : uuid.v4(), []);
4032
+ const MenuContext = /*#__PURE__*/React.createContext(undefined);
4033
+ const useCurrentMenu = () => {
4034
+ return React.useContext(MenuContext);
4158
4035
  };
4159
4036
 
4160
- const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4037
+ const Content$2 = /*#__PURE__*/React.forwardRef(function MenuContent(props, ref) {
4038
+ const internalRef = useMergedRef(ref);
4039
+ const menu = useCurrentMenu();
4161
4040
  const {
4162
- checked,
4163
- highlighted,
4164
- indeterminate,
4165
- invalid,
4166
- label,
4167
- onChange,
4041
+ align = 'start',
4042
+ children,
4043
+ placement: side,
4168
4044
  ...otherProps
4169
4045
  } = props;
4170
- const id = useId(props.id);
4171
- const className = cn('bg-white h-5 w-5 border rounded text-sm flex-shrink-0 mt-[0.1rem] focus:yt-focus',
4172
- //hover:shadow-[0_0_0_1px_rgba(235,235,235,1)]
4173
- {
4174
- 'border-grey-300 text-blue-500 hover:text-blue-300 focus:border-blue-500 focus:hover:border-blue-300': !props.disabled && !invalid,
4175
- 'border-grey-200 text-blue-300 cursor-not-allowed': props.disabled,
4176
- 'bg-[rgba(255,255,0,0.2)] disabled:bg-[rgba(255,255,0,0.075)]': highlighted,
4177
- 'border-red-500 text-red-500 hover:text-red-300 hover:border-red-300 focus:border-red-500 focus:hover:border-red-300': invalid && !props.disabled,
4178
- 'self-start': !!label
4179
- }, props.className);
4180
- let handleChange;
4181
- if (onChange) {
4182
- handleChange = checked => onChange(checked === 'indeterminate' ? false : checked);
4183
- }
4184
- let labelledByProps = null;
4185
- if (label) {
4186
- labelledByProps = {
4187
- 'aria-labelledby': `${id}-label`,
4188
- id
4189
- };
4190
- }
4191
- // the enter keyboard shortcut isn't supported by default, but we want it
4192
- const handleKeyDown = event => {
4193
- if (event.key === 'Enter') {
4194
- event.currentTarget.click();
4195
- }
4196
- };
4197
- const element = /*#__PURE__*/React.createElement(CheckboxPrimitive.Root, Object.assign({}, otherProps, labelledByProps, {
4198
- "data-taco": "checkbox",
4199
- checked: indeterminate ? 'indeterminate' : checked,
4046
+ const className = cn('border border-transparent rounded block outline-none p-1 yt-shadow wcag-white', props.className);
4047
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, null, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Content, Object.assign({}, otherProps, {
4048
+ align: align,
4200
4049
  className: className,
4201
- onCheckedChange: handleChange,
4202
- onKeyDown: handleKeyDown,
4203
- ref: ref
4204
- }), /*#__PURE__*/React.createElement(CheckboxPrimitive.Indicator, {
4205
- className: "flex h-full w-full"
4206
- }, /*#__PURE__*/React.createElement(Icon, {
4207
- name: indeterminate ? 'line' : 'tick',
4208
- className: "!h-full !w-full"
4209
- })));
4210
- if (label) {
4211
- const labelContainerClassName = cn('flex items-center cursor-pointer gap-2', {
4212
- 'cursor-not-allowed text-grey-300': props.disabled
4213
- });
4214
- return /*#__PURE__*/React.createElement("span", {
4215
- className: labelContainerClassName
4216
- }, element, /*#__PURE__*/React.createElement("label", {
4217
- htmlFor: id,
4218
- id: `${id}-label`
4219
- }, label));
4220
- }
4221
- return element;
4050
+ "data-taco": "menu",
4051
+ side: side,
4052
+ sideOffset: 3,
4053
+ style: {
4054
+ minWidth: menu === null || menu === void 0 ? void 0 : menu.minWidth
4055
+ },
4056
+ ref: internalRef
4057
+ }), children));
4222
4058
  });
4223
- Checkbox.displayName = 'Checkbox';
4224
4059
 
4225
- const getInputClasses = props => {
4226
- const disabled = props.disabled || !!props['aria-disabled'];
4227
- const readOnly = props.readOnly || !!props['aria-readonly'];
4228
- const invalid = props.invalid || !!props['aria-invalid'];
4229
- return cn('peer bg-white text-black text-sm border font-normal not-italic no-underline rounded flex items-center leading-6 px-2 relative w-full text-ellipsis transition-colors transition-opacity ease-in min-h-[theme(spacing.8)]', {
4230
- // default
4231
- 'border-grey-300 focus:border-blue-300 focus:yt-focus': !invalid,
4232
- 'hover:shadow-[0_0_0.1rem_theme(colors.grey.500)] active:border-blue-700': !invalid && !disabled,
4233
- // disabled
4234
- 'border-grey-200 text-opacity-25 cursor-not-allowed placeholder:text-grey-700': disabled,
4235
- // highlighted
4060
+ const Icon$1 = ({
4061
+ name
4062
+ }) => /*#__PURE__*/React.createElement("span", {
4063
+ className: "absolute left-0 ml-1"
4064
+ }, /*#__PURE__*/React.createElement(Icon, {
4065
+ className: "-ml-px -mt-px !h-5 !w-5",
4066
+ name: name
4067
+ }));
4068
+ const useItemStyling = ({
4069
+ disabled,
4070
+ indented,
4071
+ className
4072
+ }) => {
4073
+ const menu = useCurrentMenu();
4074
+ React.useEffect(() => {
4075
+ if (indented && !(menu !== null && menu !== void 0 && menu.indented)) {
4076
+ menu === null || menu === void 0 ? void 0 : menu.registerIndentation();
4077
+ }
4078
+ }, [indented]);
4079
+ return cn('flex items-center justify-start h-8 pr-1.5 relative rounded w-full focus:outline-none group', {
4080
+ 'pl-7': menu === null || menu === void 0 ? void 0 : menu.indented,
4081
+ 'pl-1.5': !(menu !== null && menu !== void 0 && menu.indented),
4082
+ 'cursor-pointer text-black hover:wcag-grey-200 data-[highlighted]:wcag-grey-200': !disabled,
4083
+ 'cursor-not-allowed hover:bg-white text-grey-300': disabled
4084
+ }, className);
4085
+ };
4086
+ const Shortcut = props => {
4087
+ return /*#__PURE__*/React.createElement("span", Object.assign({}, props, {
4088
+ className: "text-grey-700 ml-auto pl-3"
4089
+ }));
4090
+ };
4091
+ const Item$1 = /*#__PURE__*/React.forwardRef(function MenuItem(props, ref) {
4092
+ var _props$disabled;
4093
+ const {
4094
+ dialog,
4095
+ icon,
4096
+ onClick,
4097
+ shortcut,
4098
+ ...otherProps
4099
+ } = props;
4100
+ const menu = useCurrentMenu();
4101
+ const className = useItemStyling({
4102
+ disabled: props.disabled,
4103
+ indented: !!icon,
4104
+ className: props.className
4105
+ });
4106
+ const disabled = (_props$disabled = props.disabled) !== null && _props$disabled !== void 0 ? _props$disabled : props['aria-disabled'];
4107
+ let handleClick;
4108
+ // radix has a bug that does not disable clicks when disabled is set on items
4109
+ if (disabled) {
4110
+ handleClick = event => {
4111
+ event.preventDefault();
4112
+ event.stopPropagation();
4113
+ };
4114
+ }
4115
+ const handleSelect = event => {
4116
+ if (onClick) {
4117
+ onClick(event);
4118
+ }
4119
+ if (props['aria-haspopup'] || typeof dialog === 'function') {
4120
+ event.preventDefault();
4121
+ }
4122
+ };
4123
+ let button = /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Item, Object.assign({}, otherProps, {
4124
+ className: className,
4125
+ onClick: handleClick,
4126
+ onSelect: handleSelect,
4127
+ ref: ref
4128
+ }), icon && /*#__PURE__*/React.createElement(Icon$1, {
4129
+ name: icon
4130
+ }), props.children, shortcut && /*#__PURE__*/React.createElement(Shortcut, null, shortcut));
4131
+ if (typeof dialog === 'function') {
4132
+ button = dialog({
4133
+ trigger: button,
4134
+ onClose: menu === null || menu === void 0 ? void 0 : menu.close
4135
+ });
4136
+ }
4137
+ return button;
4138
+ });
4139
+
4140
+ const Link = /*#__PURE__*/React.forwardRef(function MenuLink(props, ref) {
4141
+ const {
4142
+ href,
4143
+ icon,
4144
+ onClick,
4145
+ ...otherProps
4146
+ } = props;
4147
+ const menu = useCurrentMenu();
4148
+ const className = useItemStyling({
4149
+ disabled: props.disabled,
4150
+ indented: !!icon,
4151
+ className: props.className
4152
+ });
4153
+ const handleClick = event => {
4154
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
4155
+ menu === null || menu === void 0 ? void 0 : menu.close();
4156
+ };
4157
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Item, Object.assign({}, otherProps, {
4158
+ asChild: true,
4159
+ className: className,
4160
+ ref: ref,
4161
+ onClick: handleClick
4162
+ }), /*#__PURE__*/React.createElement("a", {
4163
+ href: href,
4164
+ target: "_blank"
4165
+ }, icon && /*#__PURE__*/React.createElement(Icon$1, {
4166
+ name: icon
4167
+ }), props.children));
4168
+ });
4169
+
4170
+ const Trigger$2 = /*#__PURE__*/React.forwardRef(function MenuTrigger(props, ref) {
4171
+ const menu = useCurrentMenu();
4172
+ const internalRef = useMergedRef(ref);
4173
+ React.useEffect(() => {
4174
+ if (internalRef.current) {
4175
+ menu === null || menu === void 0 ? void 0 : menu.setMinWidth(internalRef.current.getBoundingClientRect().width);
4176
+ }
4177
+ }, [internalRef]);
4178
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Trigger, Object.assign({}, props, {
4179
+ asChild: true,
4180
+ ref: internalRef
4181
+ }));
4182
+ });
4183
+
4184
+ const Checkbox = /*#__PURE__*/React.forwardRef(function MenuCheckboxItem(props, ref) {
4185
+ const {
4186
+ checked,
4187
+ children,
4188
+ onChange,
4189
+ ...otherProps
4190
+ } = props;
4191
+ const className = useItemStyling({
4192
+ disabled: props.disabled,
4193
+ indented: true,
4194
+ className: props.className
4195
+ });
4196
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.CheckboxItem, Object.assign({}, otherProps, {
4197
+ checked: checked,
4198
+ className: className,
4199
+ onCheckedChange: onChange,
4200
+ ref: ref
4201
+ }), /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, {
4202
+ className: "absolute left-0 ml-1.5"
4203
+ }, /*#__PURE__*/React.createElement(Icon, {
4204
+ name: "tick",
4205
+ className: "-ml-px !h-4 !w-4"
4206
+ })), children);
4207
+ });
4208
+
4209
+ const getRadioGroupItemValueAsString = value => String(value !== null && value !== void 0 ? value : '');
4210
+ const findByValue = (values, valueAsString) => values.find(value => getRadioGroupItemValueAsString(value) === valueAsString);
4211
+ const RadioGroupContext = /*#__PURE__*/React.createContext({
4212
+ disabled: false,
4213
+ invalid: false
4214
+ });
4215
+ const RadioGroupItem = /*#__PURE__*/React.forwardRef(function RadioGroupItem(props, ref) {
4216
+ const context = React.useContext(RadioGroupContext);
4217
+ const {
4218
+ children,
4219
+ value,
4220
+ ...otherProps
4221
+ } = props;
4222
+ const isDisabled = context.disabled || props.disabled;
4223
+ const className = cn('flex flex-shrink-0 self-start items-center justify-center h-4 w-4 mt-[0.2rem] rounded-full bg-white border-2', {
4224
+ 'border-grey-300 hover:border-4 focus:yt-focus aria-checked:bg-blue-500 aria-checked:border-blue-500 hover:aria-checked:border-blue-300': !isDisabled && !context.invalid,
4225
+ 'border-grey-200 cursor-not-allowed aria-checked:bg-blue-300 aria-checked:border-blue-300 ': isDisabled,
4226
+ 'border-red-500 hover:border-4 text-red-500 focus:border-red-500 focus:yt-focus-red aria-checked:bg-red-500 aria-checked:border-red': context.invalid && !isDisabled
4227
+ });
4228
+ const labelClassName = cn('flex items-center gap-2', {
4229
+ 'cursor-pointer': !isDisabled,
4230
+ 'cursor-not-allowed text-grey-300': isDisabled
4231
+ }, props.className);
4232
+ return /*#__PURE__*/React.createElement("label", {
4233
+ className: labelClassName
4234
+ }, /*#__PURE__*/React.createElement(RadioGroupPrimitive.Item, Object.assign({}, otherProps, {
4235
+ className: className,
4236
+ disabled: isDisabled,
4237
+ ref: ref,
4238
+ value: getRadioGroupItemValueAsString(value)
4239
+ }), /*#__PURE__*/React.createElement(RadioGroupPrimitive.Indicator, {
4240
+ className: "h-2 w-2 rounded-full bg-white"
4241
+ })), children);
4242
+ });
4243
+ const useRadioGroup = props => {
4244
+ const {
4245
+ children,
4246
+ defaultValue,
4247
+ disabled,
4248
+ invalid,
4249
+ onChange,
4250
+ orientation = 'vertical',
4251
+ value,
4252
+ ...otherProps
4253
+ } = props;
4254
+ const values = React.useMemo(() => {
4255
+ const radioGroupItemValues = [];
4256
+ React.Children.forEach(children, child => {
4257
+ if ( /*#__PURE__*/React.isValidElement(child)) {
4258
+ radioGroupItemValues.push(child.props.value);
4259
+ }
4260
+ });
4261
+ return radioGroupItemValues;
4262
+ }, [children]);
4263
+ const context = React.useMemo(() => ({
4264
+ disabled: disabled !== null && disabled !== void 0 ? disabled : false,
4265
+ invalid: invalid !== null && invalid !== void 0 ? invalid : false
4266
+ }), [disabled, invalid]);
4267
+ let valueProps;
4268
+ if (onChange !== undefined) {
4269
+ const handleChange = value => onChange(findByValue(values, value));
4270
+ valueProps = {
4271
+ onValueChange: handleChange,
4272
+ value: value !== undefined ? getRadioGroupItemValueAsString(value) : undefined
4273
+ };
4274
+ } else {
4275
+ valueProps = {
4276
+ defaultValue: defaultValue !== undefined ? getRadioGroupItemValueAsString(defaultValue) : undefined
4277
+ };
4278
+ }
4279
+ return {
4280
+ context,
4281
+ props: {
4282
+ ...otherProps,
4283
+ ...valueProps,
4284
+ children,
4285
+ disabled,
4286
+ orientation
4287
+ }
4288
+ };
4289
+ };
4290
+ const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {
4291
+ const {
4292
+ context,
4293
+ props: otherProps
4294
+ } = useRadioGroup(props);
4295
+ const className = cn('flex items-start gap-y-2', {
4296
+ 'flex-wrap gap-x-4 ': otherProps.orientation === 'horizontal',
4297
+ 'flex-col': otherProps.orientation === 'vertical'
4298
+ }, otherProps.className);
4299
+ return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {
4300
+ value: context
4301
+ }, /*#__PURE__*/React.createElement(RadioGroupPrimitive.Root, Object.assign({}, otherProps, {
4302
+ className: className,
4303
+ "data-taco": "radio-group",
4304
+ ref: ref
4305
+ })));
4306
+ });
4307
+ RadioGroup.Item = RadioGroupItem;
4308
+
4309
+ const RadioItem = props => {
4310
+ const context = React.useContext(MenuRadioGroupContext);
4311
+ const {
4312
+ children,
4313
+ value,
4314
+ ...otherProps
4315
+ } = props;
4316
+ const disabled = context.disabled || props.disabled;
4317
+ const className = useItemStyling({
4318
+ disabled: disabled,
4319
+ indented: true,
4320
+ className: props.className
4321
+ });
4322
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioItem, Object.assign({}, otherProps, {
4323
+ className: className,
4324
+ disabled: disabled,
4325
+ value: getRadioGroupItemValueAsString(value)
4326
+ }), /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, {
4327
+ className: "absolute left-0 ml-1.5"
4328
+ }, /*#__PURE__*/React.createElement("span", {
4329
+ className: "ml-1 flex h-1.5 w-1.5 rounded-full bg-current "
4330
+ })), children);
4331
+ };
4332
+ const MenuRadioGroupContext = /*#__PURE__*/React.createContext({
4333
+ disabled: false
4334
+ });
4335
+ const RadioGroup$1 = /*#__PURE__*/React.forwardRef(function MenuRadioItem(props, ref) {
4336
+ const {
4337
+ context,
4338
+ props: otherProps
4339
+ } = useRadioGroup(props);
4340
+ const className = cn('flex flex-col', props.className);
4341
+ return /*#__PURE__*/React.createElement(MenuRadioGroupContext.Provider, {
4342
+ value: context
4343
+ }, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioGroup, Object.assign({}, otherProps, {
4344
+ className: className,
4345
+ ref: ref
4346
+ })));
4347
+ });
4348
+ RadioGroup$1.Item = RadioItem;
4349
+
4350
+ const Separator = () => {
4351
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Separator, {
4352
+ className: "bg-grey-300 my-1 h-px"
4353
+ });
4354
+ };
4355
+
4356
+ const Header = /*#__PURE__*/React.forwardRef(function MenuHeader(props, ref) {
4357
+ const menu = useCurrentMenu();
4358
+ const className = cn('flex items-center justify-start h-7 pr-1.5 text-xs text-grey-700', {
4359
+ 'pl-7': menu === null || menu === void 0 ? void 0 : menu.indented,
4360
+ 'pl-1.5': !(menu !== null && menu !== void 0 && menu.indented)
4361
+ }, props.className);
4362
+ return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Label, Object.assign({}, props, {
4363
+ className: className,
4364
+ ref: ref
4365
+ }));
4366
+ });
4367
+
4368
+ const Menu$1 = /*#__PURE__*/React.forwardRef(function Menu(externalProps, ref) {
4369
+ const {
4370
+ children,
4371
+ defaultOpen: defaultProp,
4372
+ onChange,
4373
+ open: prop,
4374
+ trigger,
4375
+ ...props
4376
+ } = externalProps;
4377
+ const [indented, setIndented] = React.useState(false);
4378
+ const [minWidth, setMinWidth] = React.useState(undefined);
4379
+ const [open, setOpen] = reactUseControllableState.useControllableState({
4380
+ // uncontrolled
4381
+ defaultProp,
4382
+ // controlled
4383
+ onChange,
4384
+ prop
4385
+ });
4386
+ const context = React.useMemo(() => ({
4387
+ indented,
4388
+ registerIndentation: () => setIndented(true),
4389
+ minWidth,
4390
+ setMinWidth: width => setMinWidth(width),
4391
+ close: () => setOpen(false)
4392
+ }), [indented, minWidth]);
4393
+ return /*#__PURE__*/React.createElement(MenuContext.Provider, {
4394
+ value: context
4395
+ }, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Root, Object.assign({}, props, {
4396
+ modal: false,
4397
+ open: open,
4398
+ onOpenChange: setOpen
4399
+ }), trigger && /*#__PURE__*/React.createElement(Trigger$2, {
4400
+ ref: ref
4401
+ }, trigger), children));
4402
+ });
4403
+ Menu$1.Trigger = Trigger$2;
4404
+ Menu$1.Content = Content$2;
4405
+ Menu$1.Item = Item$1;
4406
+ Menu$1.Link = Link;
4407
+ Menu$1.Checkbox = Checkbox;
4408
+ Menu$1.Separator = Separator;
4409
+ Menu$1.Header = Header;
4410
+ Menu$1.RadioGroup = RadioGroup$1;
4411
+
4412
+ const useIntersectionObserver = (ref, offset) => {
4413
+ const [intersectedIndexes, setIntersectedIndexes] = React__default.useState({});
4414
+ const handleIntersection = (entries, observer) => {
4415
+ if (observer.root) {
4416
+ const children = Array.from(observer.root.children);
4417
+ const map = {};
4418
+ entries.forEach(entry => {
4419
+ // entries only contains the items being intersected not all children of the ref
4420
+ // so use root and the the entry being intersected to find its real index
4421
+ // on first mount this is different - all children are present
4422
+ map[children.indexOf(entry.target)] = entry.isIntersecting;
4423
+ });
4424
+ setIntersectedIndexes(prev => ({
4425
+ ...prev,
4426
+ ...map
4427
+ }));
4428
+ }
4429
+ };
4430
+ const intersectedChildIndex = React__default.useMemo(() => {
4431
+ const index = Object.values(intersectedIndexes).indexOf(false);
4432
+ return index > -1 ? index : undefined;
4433
+ }, [intersectedIndexes]);
4434
+ const hasRootMargin = intersectedChildIndex !== undefined && offset;
4435
+ React__default.useEffect(() => {
4436
+ const observer = new IntersectionObserver(handleIntersection, {
4437
+ root: ref.current,
4438
+ // offset the button, but only after the first item has been intersected
4439
+ rootMargin: hasRootMargin ? `0px -${offset}px 0px 0px` : undefined,
4440
+ threshold: 1
4441
+ });
4442
+ if (observer.root) {
4443
+ Array.from(observer.root.children).forEach(item => {
4444
+ if (item.getAttribute('data-intersection-observer') !== 'ignore') {
4445
+ observer.observe(item);
4446
+ }
4447
+ });
4448
+ }
4449
+ return () => {
4450
+ observer.disconnect();
4451
+ };
4452
+ }, [hasRootMargin]);
4453
+ return intersectedChildIndex;
4454
+ };
4455
+
4456
+ const sanitizeButtonPropsForMenuItem = props => {
4457
+ const {
4458
+ appearance: _1,
4459
+ drawer: _2,
4460
+ fluid: _3,
4461
+ hanger: _4,
4462
+ menu: _5,
4463
+ popover: _6,
4464
+ tooltip: _7,
4465
+ ...attributes
4466
+ } = props;
4467
+ return attributes;
4468
+ };
4469
+ const OFFSET = 32 + 8;
4470
+ const ButtonGroup = /*#__PURE__*/React__default.forwardRef(function ButtonGroup(props, ref) {
4471
+ const internalRef = useMergedRef(ref);
4472
+ const intersectedChildIndex = useIntersectionObserver(internalRef, OFFSET);
4473
+ const children = React__default.Children.toArray(props.children);
4474
+ const hidden = intersectedChildIndex !== undefined ? children.slice(intersectedChildIndex) : [];
4475
+ return /*#__PURE__*/React__default.createElement(Group, Object.assign({}, props, {
4476
+ ref: internalRef
4477
+ }), children.map((child, index) => /*#__PURE__*/React__default.cloneElement(child, {
4478
+ className: cn(child.props.className, {
4479
+ visible: intersectedChildIndex === undefined || index < intersectedChildIndex,
4480
+ 'invisible order-[100] pointer-events-none': intersectedChildIndex !== undefined && index >= intersectedChildIndex
4481
+ })
4482
+ })), hidden.length ? /*#__PURE__*/React__default.createElement(IconButton, {
4483
+ className: "sticky right-0 order-[99]",
4484
+ "data-intesection-observer": "ignore",
4485
+ icon: "more",
4486
+ menu: menuProps => /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, hidden.map((button, index) => /*#__PURE__*/React__default.createElement(Menu$1.Item, Object.assign({
4487
+ key: index
4488
+ }, sanitizeButtonPropsForMenuItem(button.props))))))
4489
+ }) : null);
4490
+ });
4491
+
4492
+ const thisYear = /*#__PURE__*/new Date().getFullYear();
4493
+ const years = [];
4494
+ for (let i = thisYear - 50; i <= thisYear + 10; i += 1) {
4495
+ years.push(i);
4496
+ }
4497
+ const Navbar = /*#__PURE__*/React.memo(({
4498
+ onMonthChange,
4499
+ onNextClick,
4500
+ onPreviousClick,
4501
+ value = new Date()
4502
+ }) => {
4503
+ const {
4504
+ texts: {
4505
+ calendar: {
4506
+ actions,
4507
+ months
4508
+ }
4509
+ }
4510
+ } = useLocalization();
4511
+ const handleChange = function handleChange(event) {
4512
+ const {
4513
+ year,
4514
+ month
4515
+ } = event.target.form;
4516
+ onMonthChange(new Date(year.value, month.value));
4517
+ };
4518
+ return /*#__PURE__*/React.createElement("div", {
4519
+ className: "mb-2 flex items-center justify-between"
4520
+ }, /*#__PURE__*/React.createElement("form", {
4521
+ className: "inline-flex space-x-1"
4522
+ }, /*#__PURE__*/React.createElement("select", {
4523
+ className: "h-8 px-2",
4524
+ name: "month",
4525
+ onChange: handleChange,
4526
+ value: value.getMonth()
4527
+ }, months.map((month, i) => /*#__PURE__*/React.createElement("option", {
4528
+ key: month,
4529
+ value: i
4530
+ }, month))), /*#__PURE__*/React.createElement("select", {
4531
+ className: "h-8 px-2",
4532
+ name: "year",
4533
+ onChange: handleChange,
4534
+ value: value.getFullYear()
4535
+ }, years.map(year => /*#__PURE__*/React.createElement("option", {
4536
+ key: year,
4537
+ value: year
4538
+ }, String(year))))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(IconButton, {
4539
+ appearance: "discrete",
4540
+ icon: "chevron-left",
4541
+ "aria-label": actions.previousMonth,
4542
+ onClick: () => onPreviousClick(),
4543
+ rounded: true
4544
+ }), /*#__PURE__*/React.createElement(IconButton, {
4545
+ appearance: "discrete",
4546
+ icon: "chevron-right",
4547
+ "aria-label": actions.nextMonth,
4548
+ onClick: () => onNextClick(),
4549
+ rounded: true
4550
+ })));
4551
+ });
4552
+ const Calendar$1 = /*#__PURE__*/React.forwardRef(function Calendar(props, ref) {
4553
+ const {
4554
+ onChange: handleChange,
4555
+ value,
4556
+ disabledDays,
4557
+ ...otherProps
4558
+ } = props;
4559
+ const {
4560
+ locale,
4561
+ texts
4562
+ } = useLocalization();
4563
+ const [visibleMonth, setVisibleMonth] = React.useState(value !== null && value !== void 0 ? value : new Date());
4564
+ React.useEffect(() => {
4565
+ if (visibleMonth !== value) {
4566
+ setVisibleMonth(value !== null && value !== void 0 ? value : new Date());
4567
+ }
4568
+ }, [value]);
4569
+ const handleDayClick = (date, modifiers, event) => {
4570
+ if (modifiers.outside || modifiers.disabled) {
4571
+ return;
4572
+ }
4573
+ handleChange(date, event);
4574
+ };
4575
+ const handleCalendarClickToday = () => {
4576
+ const today = new Date();
4577
+ // set to midday to avoid UTC offset causing dates to be mismatched server side
4578
+ today.setHours(12);
4579
+ today.setMinutes(0);
4580
+ today.setSeconds(0);
4581
+ handleChange(today);
4582
+ };
4583
+ const className = cn('flex bg-white text-xs p-4', otherProps.className);
4584
+ return /*#__PURE__*/React.createElement("div", {
4585
+ "data-taco": "calendar"
4586
+ }, /*#__PURE__*/React.createElement(ReactDayPicker, Object.assign({}, otherProps, {
4587
+ className: className,
4588
+ month: visibleMonth,
4589
+ selectedDays: value,
4590
+ locale: locale.substring(0, 2),
4591
+ firstDayOfWeek: 1,
4592
+ months: texts.calendar.months,
4593
+ weekdaysShort: texts.calendar.weekdaysShort,
4594
+ navbarElement: navProps => /*#__PURE__*/React.createElement(Navbar, Object.assign({}, navProps, {
4595
+ onMonthChange: setVisibleMonth,
4596
+ value: visibleMonth
4597
+ })),
4598
+ onDayClick: handleDayClick,
4599
+ onMonthChange: setVisibleMonth,
4600
+ onTodayButtonClick: handleCalendarClickToday,
4601
+ captionElement: () => null,
4602
+ todayButton: texts.calendar.actions.today,
4603
+ numberOfMonths: 1,
4604
+ ref: ref,
4605
+ disabledDays: disabledDays
4606
+ })));
4607
+ });
4608
+
4609
+ const Content$3 = /*#__PURE__*/React.forwardRef(function CardContent(externalProps, ref) {
4610
+ const {
4611
+ noPadding,
4612
+ ...props
4613
+ } = externalProps;
4614
+ const className = cn('flex-grow overflow-auto', {
4615
+ 'mx-4 mb-4': !noPadding
4616
+ }, props.className);
4617
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, props, {
4618
+ className: className,
4619
+ ref: ref
4620
+ }));
4621
+ });
4622
+ const Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4623
+ const {
4624
+ title,
4625
+ menu,
4626
+ children
4627
+ } = props;
4628
+ const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500', props.className);
4629
+ return /*#__PURE__*/React.createElement("div", {
4630
+ className: className,
4631
+ "data-taco": "card",
4632
+ ref: ref
4633
+ }, /*#__PURE__*/React.createElement("div", {
4634
+ className: "mx-4 mt-4 mb-2 flex"
4635
+ }, title && /*#__PURE__*/React.createElement("h4", {
4636
+ className: "mb-0 flex-grow text-left"
4637
+ }, title), menu ? /*#__PURE__*/React.createElement(IconButton, {
4638
+ icon: "ellipsis-horizontal",
4639
+ appearance: "discrete",
4640
+ menu: menu,
4641
+ className: "-mt-[4px]"
4642
+ }) : null), children);
4643
+ });
4644
+ Card.Content = Content$3;
4645
+
4646
+ // React 18 has this built-in, when we upgrade this hook should be removed and the uuid dependency should be removed
4647
+ const useId = nativeId => {
4648
+ return React__default.useMemo(() => nativeId !== null && nativeId !== void 0 ? nativeId : uuid.v4(), []);
4649
+ };
4650
+
4651
+ const Checkbox$1 = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4652
+ const {
4653
+ checked,
4654
+ highlighted,
4655
+ indeterminate,
4656
+ invalid,
4657
+ label,
4658
+ onChange,
4659
+ ...otherProps
4660
+ } = props;
4661
+ const id = useId(props.id);
4662
+ const className = cn('bg-white h-5 w-5 border rounded text-sm flex-shrink-0 mt-[0.1rem] focus:yt-focus',
4663
+ //hover:shadow-[0_0_0_1px_rgba(235,235,235,1)]
4664
+ {
4665
+ 'border-grey-300 text-blue-500 hover:text-blue-300 focus:border-blue-500 focus:hover:border-blue-300': !props.disabled && !invalid,
4666
+ 'border-grey-200 text-blue-300 cursor-not-allowed': props.disabled,
4667
+ 'bg-[rgba(255,255,0,0.2)] disabled:bg-[rgba(255,255,0,0.075)]': highlighted,
4668
+ 'border-red-500 text-red-500 hover:text-red-300 hover:border-red-300 focus:border-red-500 focus:hover:border-red-300': invalid && !props.disabled,
4669
+ 'self-start': !!label
4670
+ }, props.className);
4671
+ let handleChange;
4672
+ if (onChange) {
4673
+ handleChange = checked => onChange(checked === 'indeterminate' ? false : checked);
4674
+ }
4675
+ let labelledByProps = null;
4676
+ if (label) {
4677
+ labelledByProps = {
4678
+ 'aria-labelledby': `${id}-label`,
4679
+ id
4680
+ };
4681
+ }
4682
+ // the enter keyboard shortcut isn't supported by default, but we want it
4683
+ const handleKeyDown = event => {
4684
+ if (event.key === 'Enter') {
4685
+ event.currentTarget.click();
4686
+ }
4687
+ };
4688
+ const element = /*#__PURE__*/React.createElement(CheckboxPrimitive.Root, Object.assign({}, otherProps, labelledByProps, {
4689
+ "data-taco": "checkbox",
4690
+ checked: indeterminate ? 'indeterminate' : checked,
4691
+ className: className,
4692
+ onCheckedChange: handleChange,
4693
+ onKeyDown: handleKeyDown,
4694
+ ref: ref
4695
+ }), /*#__PURE__*/React.createElement(CheckboxPrimitive.Indicator, {
4696
+ className: "flex h-full w-full"
4697
+ }, /*#__PURE__*/React.createElement(Icon, {
4698
+ name: indeterminate ? 'line' : 'tick',
4699
+ className: "!h-full !w-full"
4700
+ })));
4701
+ if (label) {
4702
+ const labelContainerClassName = cn('flex items-center cursor-pointer gap-2', {
4703
+ 'cursor-not-allowed text-grey-300': props.disabled
4704
+ });
4705
+ return /*#__PURE__*/React.createElement("span", {
4706
+ className: labelContainerClassName
4707
+ }, element, /*#__PURE__*/React.createElement("label", {
4708
+ htmlFor: id,
4709
+ id: `${id}-label`
4710
+ }, label));
4711
+ }
4712
+ return element;
4713
+ });
4714
+ Checkbox$1.displayName = 'Checkbox';
4715
+
4716
+ const getInputClasses = props => {
4717
+ const disabled = props.disabled || !!props['aria-disabled'];
4718
+ const readOnly = props.readOnly || !!props['aria-readonly'];
4719
+ const invalid = props.invalid || !!props['aria-invalid'];
4720
+ return cn('peer bg-white text-black text-sm border font-normal not-italic no-underline rounded flex items-center leading-6 px-2 relative w-full text-ellipsis transition-colors transition-opacity ease-in min-h-[theme(spacing.8)]', {
4721
+ // default
4722
+ 'border-grey-300 focus:border-blue-300 focus:yt-focus': !invalid,
4723
+ 'hover:shadow-[0_0_0.1rem_theme(colors.grey.500)] active:border-blue-700': !invalid && !disabled,
4724
+ // disabled
4725
+ 'border-grey-200 text-opacity-25 cursor-not-allowed placeholder:text-grey-700': disabled,
4726
+ // highlighted
4236
4727
  'bg-[rgba(255,255,0,0.075)]': props.highlighted && disabled,
4237
4728
  'bg-[rgba(255,255,0,0.2)]': props.highlighted && !disabled,
4238
4729
  // invalid
@@ -4285,29 +4776,14 @@ const useBoundingClientRectListener = (ref, dependencies) => {
4285
4776
  // the consumer to rerender and that will cause the above hook to recalculate the dimensions
4286
4777
  setVisibility(newRefElementVisibility);
4287
4778
  }
4288
- });
4289
- React.useEffect(() => {
4290
- if (dependencies) {
4291
- var _ref$current2;
4292
- setDimensions((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.getBoundingClientRect());
4293
- }
4294
- }, dependencies);
4295
- return dimensions;
4296
- };
4297
-
4298
- // merges an external ref (optional) with an internal ref (required)
4299
- const useMergedRef = ref => {
4300
- const internalRef = React__default.useRef(null);
4301
- React__default.useEffect(() => {
4302
- if (ref) {
4303
- if (typeof ref === 'function') {
4304
- ref(internalRef.current);
4305
- } else {
4306
- ref.current = internalRef.current;
4307
- }
4779
+ });
4780
+ React.useEffect(() => {
4781
+ if (dependencies) {
4782
+ var _ref$current2;
4783
+ setDimensions((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.getBoundingClientRect());
4308
4784
  }
4309
- }, [ref]);
4310
- return internalRef;
4785
+ }, dependencies);
4786
+ return dimensions;
4311
4787
  };
4312
4788
 
4313
4789
  const validSetSelectionRangeTypes = ['text', 'search', 'url', 'tel', 'password'];
@@ -4661,7 +5137,7 @@ const ScrollableList = /*#__PURE__*/React.forwardRef(function ScrollableList(pro
4661
5137
  ...optionProps
4662
5138
  }) => /*#__PURE__*/React.createElement("li", Object.assign({}, optionProps), icon, /*#__PURE__*/React.createElement("span", {
4663
5139
  className: "flex-grow truncate text-left"
4664
- }, children), multiselect && /*#__PURE__*/React.createElement(Checkbox
5140
+ }, children), multiselect && /*#__PURE__*/React.createElement(Checkbox$1
4665
5141
  // In multiselect variant, this checkbox only acts as visual representation of item being selected,
4666
5142
  // so need to be taken out of screen reader scope.
4667
5143
  , {
@@ -4727,7 +5203,7 @@ const getSelectedIndexesFromValue = (data, value) => {
4727
5203
  if (typeof value !== 'string') return [];
4728
5204
  return value.split(',').map(v => data.findIndex(o => String(o.value) === v)).filter(v => v !== -1);
4729
5205
  };
4730
- const findByValue = (data, value) => {
5206
+ const findByValue$1 = (data, value) => {
4731
5207
  return data.find(option => getValue(option.value) === getValue(value));
4732
5208
  };
4733
5209
  const searchForString = (child, value, strategy = 'includes') => {
@@ -4938,7 +5414,7 @@ const useCombobox = ({
4938
5414
  return;
4939
5415
  }
4940
5416
  if (onChange && event.target.value !== value) {
4941
- const item = findByValue(flattenedData, event.target.value);
5417
+ const item = findByValue$1(flattenedData, event.target.value);
4942
5418
  event.detail = sanitizeItem(item);
4943
5419
  const parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
4944
5420
  if (parents !== null && parents.length > 0) {
@@ -5323,7 +5799,7 @@ const PopoverContext = /*#__PURE__*/React.createContext({
5323
5799
  props: {},
5324
5800
  ref: null
5325
5801
  });
5326
- const Trigger$2 = /*#__PURE__*/React.forwardRef(function PopoverAnchor(props, externalRef) {
5802
+ const Trigger$3 = /*#__PURE__*/React.forwardRef(function PopoverAnchor(props, externalRef) {
5327
5803
  var _props$children;
5328
5804
  const {
5329
5805
  ref: parentRef,
@@ -5352,7 +5828,7 @@ const RenderPropWrapper = /*#__PURE__*/React.forwardRef(function RenderPropWrapp
5352
5828
  ref
5353
5829
  });
5354
5830
  });
5355
- const Content$3 = /*#__PURE__*/React.forwardRef(function PopoverContent(props, ref) {
5831
+ const Content$4 = /*#__PURE__*/React.forwardRef(function PopoverContent(props, ref) {
5356
5832
  const {
5357
5833
  placement: side,
5358
5834
  ...popoverContentProps
@@ -5401,10 +5877,10 @@ const Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {
5401
5877
  modal: modal,
5402
5878
  open: open,
5403
5879
  onOpenChange: onChange
5404
- }, trigger && /*#__PURE__*/React.createElement(Trigger$2, null, trigger), children));
5880
+ }, trigger && /*#__PURE__*/React.createElement(Trigger$3, null, trigger), children));
5405
5881
  });
5406
- Popover.Trigger = Trigger$2;
5407
- Popover.Content = Content$3;
5882
+ Popover.Trigger = Trigger$3;
5883
+ Popover.Content = Content$4;
5408
5884
  Popover.Close = Close$1;
5409
5885
  Popover.Portal = PopoverPrimitive.Portal;
5410
5886
 
@@ -5494,7 +5970,7 @@ const useCurrentDialog = () => {
5494
5970
  return React.useContext(DialogContext);
5495
5971
  };
5496
5972
 
5497
- const Trigger$3 = /*#__PURE__*/React.forwardRef(function DialogTrigger(props, externalRef) {
5973
+ const Trigger$4 = /*#__PURE__*/React.forwardRef(function DialogTrigger(props, externalRef) {
5498
5974
  const {
5499
5975
  ref: parentRef,
5500
5976
  props: parentProps
@@ -5592,7 +6068,7 @@ const RenderPropWrapper$1 = /*#__PURE__*/React.forwardRef(function RenderPropWra
5592
6068
  ...renderProps
5593
6069
  });
5594
6070
  });
5595
- const Content$4 = /*#__PURE__*/React.forwardRef(function DialogContent(props, ref) {
6071
+ const Content$5 = /*#__PURE__*/React.forwardRef(function DialogContent(props, ref) {
5596
6072
  const dialog = useCurrentDialog();
5597
6073
  const internalRef = useMergedRef(ref);
5598
6074
  const {
@@ -5759,37 +6235,16 @@ const Dialog = /*#__PURE__*/React.forwardRef(function Dialog(props, ref) {
5759
6235
  defaultOpen: defaultOpen,
5760
6236
  open: open,
5761
6237
  onOpenChange: onChange
5762
- }, trigger && /*#__PURE__*/React.createElement(Trigger$3, null, trigger), children));
6238
+ }, trigger && /*#__PURE__*/React.createElement(Trigger$4, null, trigger), children));
5763
6239
  });
5764
- Dialog.Trigger = Trigger$3;
5765
- Dialog.Content = Content$4;
6240
+ Dialog.Trigger = Trigger$4;
6241
+ Dialog.Content = Content$5;
5766
6242
  Dialog.Title = Title$1;
5767
6243
  Dialog.Footer = Footer$1;
5768
6244
  Dialog.Extra = Extra;
5769
6245
  Dialog.Drawer = DialogDrawer;
5770
6246
  Dialog.Close = Close$2;
5771
6247
 
5772
- const Group = /*#__PURE__*/React.forwardRef(function Group(props, ref) {
5773
- const {
5774
- as: Tag = 'span',
5775
- orientation = 'horizontal',
5776
- ...otherProps
5777
- } = props;
5778
- const className = cn('flex ', 'gap-2', {
5779
- 'flex-col ': orientation === 'vertical'
5780
- }, props.className);
5781
- return /*#__PURE__*/React.createElement(Tag, Object.assign({}, otherProps, {
5782
- className: className,
5783
- "data-taco": "group",
5784
- ref: ref
5785
- }));
5786
- });
5787
-
5788
- const MenuContext = /*#__PURE__*/React.createContext(undefined);
5789
- const useCurrentMenu = () => {
5790
- return React.useContext(MenuContext);
5791
- };
5792
-
5793
6248
  /* eslint-disable @typescript-eslint/no-empty-function */
5794
6249
  const DrawerContext = /*#__PURE__*/React.createContext({
5795
6250
  closeOnEscape: true,
@@ -6143,7 +6598,7 @@ const DrawerContent = /*#__PURE__*/React__default.forwardRef(function Content(pr
6143
6598
  ref: ref
6144
6599
  }, content);
6145
6600
  });
6146
- const Content$5 = /*#__PURE__*/React__default.forwardRef(function Content(props, externalRef) {
6601
+ const Content$6 = /*#__PURE__*/React__default.forwardRef(function Content(props, externalRef) {
6147
6602
  const {
6148
6603
  children
6149
6604
  } = props;
@@ -6152,7 +6607,7 @@ const Content$5 = /*#__PURE__*/React__default.forwardRef(function Content(props,
6152
6607
  }), children));
6153
6608
  });
6154
6609
 
6155
- const Trigger$4 = /*#__PURE__*/React.forwardRef(function DrawerTrigger(props, ref) {
6610
+ const Trigger$5 = /*#__PURE__*/React.forwardRef(function DrawerTrigger(props, ref) {
6156
6611
  return /*#__PURE__*/React.createElement(DialogPrimitive.Trigger, Object.assign({}, props, {
6157
6612
  ref: ref,
6158
6613
  asChild: true
@@ -6240,10 +6695,10 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(props, ref) {
6240
6695
  modal: variant === 'overlay' ? true : false,
6241
6696
  open: open,
6242
6697
  onOpenChange: setOpen
6243
- }, trigger && /*#__PURE__*/React.createElement(Trigger$4, null, trigger), children));
6698
+ }, trigger && /*#__PURE__*/React.createElement(Trigger$5, null, trigger), children));
6244
6699
  });
6245
- Drawer.Trigger = Trigger$4;
6246
- Drawer.Content = Content$5;
6700
+ Drawer.Trigger = Trigger$5;
6701
+ Drawer.Content = Content$6;
6247
6702
  Drawer.InnerContent = InnerContent;
6248
6703
  Drawer.Title = Title$2;
6249
6704
  Drawer.Footer = Footer$2;
@@ -6321,7 +6776,7 @@ const Title$3 = /*#__PURE__*/React.forwardRef(function DialogTitle(props, ref) {
6321
6776
  ref: ref
6322
6777
  }));
6323
6778
  });
6324
- const Content$6 = /*#__PURE__*/React.forwardRef(function HangerContent(props, ref) {
6779
+ const Content$7 = /*#__PURE__*/React.forwardRef(function HangerContent(props, ref) {
6325
6780
  const {
6326
6781
  placement: side
6327
6782
  } = props;
@@ -6380,7 +6835,7 @@ const Hanger = /*#__PURE__*/React.forwardRef(function Hanger(props, ref) {
6380
6835
  }, anchor && /*#__PURE__*/React.createElement(Anchor, null, anchor), children));
6381
6836
  });
6382
6837
  Hanger.Anchor = Anchor;
6383
- Hanger.Content = Content$6;
6838
+ Hanger.Content = Content$7;
6384
6839
  Hanger.Title = Title$3;
6385
6840
 
6386
6841
  const UnstyledArrow$1 = /*#__PURE__*/React.forwardRef(function HoverCardArrow(props, ref) {
@@ -6405,13 +6860,13 @@ const UnstyledArrow$1 = /*#__PURE__*/React.forwardRef(function HoverCardArrow(pr
6405
6860
  })));
6406
6861
  });
6407
6862
 
6408
- const Trigger$5 = /*#__PURE__*/React.forwardRef(function HoverCardTrigger(props, ref) {
6863
+ const Trigger$6 = /*#__PURE__*/React.forwardRef(function HoverCardTrigger(props, ref) {
6409
6864
  return /*#__PURE__*/React.createElement(HoverCardPrimitive.Trigger, Object.assign({}, props, {
6410
6865
  asChild: true,
6411
6866
  ref: ref
6412
6867
  }));
6413
6868
  });
6414
- const Content$7 = /*#__PURE__*/React.forwardRef(function HoverCardContent(props, ref) {
6869
+ const Content$8 = /*#__PURE__*/React.forwardRef(function HoverCardContent(props, ref) {
6415
6870
  const {
6416
6871
  placement: side
6417
6872
  } = props;
@@ -6431,8 +6886,8 @@ const HoverCard = props => {
6431
6886
  openDelay: 300
6432
6887
  }));
6433
6888
  };
6434
- HoverCard.Trigger = Trigger$5;
6435
- HoverCard.Content = Content$7;
6889
+ HoverCard.Trigger = Trigger$6;
6890
+ HoverCard.Content = Content$8;
6436
6891
 
6437
6892
  const SearchInput = /*#__PURE__*/React.forwardRef(function SearchInput({
6438
6893
  onSearch,
@@ -6632,7 +7087,7 @@ const useListbox = ({
6632
7087
  event.persist();
6633
7088
  if (onChange) {
6634
7089
  var _item$path$split, _item$path;
6635
- const item = findByValue(data, event.target.value);
7090
+ const item = findByValue$1(data, event.target.value);
6636
7091
  event.detail = sanitizeItem(item);
6637
7092
  const indexes = (_item$path$split = item === null || item === void 0 ? void 0 : (_item$path = item.path) === null || _item$path === void 0 ? void 0 : _item$path.split('.')) !== null && _item$path$split !== void 0 ? _item$path$split : [];
6638
7093
  if (indexes.length > 1) {
@@ -6803,7 +7258,7 @@ const useMultiListbox = ({
6803
7258
  const detail = [];
6804
7259
  const valuesArray = event.target.value.split(',');
6805
7260
  valuesArray.forEach(val => {
6806
- const item = findByValue(data, val);
7261
+ const item = findByValue$1(data, val);
6807
7262
  if (item) {
6808
7263
  detail.push(item);
6809
7264
  }
@@ -6834,436 +7289,61 @@ const useMultiListbox = ({
6834
7289
  name,
6835
7290
  onChange: handleInputChange,
6836
7291
  ref: inputRef,
6837
- tabIndex: -1,
6838
- value: value !== null && value !== void 0 ? value : ''
6839
- };
6840
- return {
6841
- list,
6842
- input
6843
- };
6844
- };
6845
-
6846
- const Listbox = /*#__PURE__*/React.forwardRef(function Listbox(props, ref) {
6847
- const {
6848
- className: externalClassName,
6849
- ...otherProps
6850
- } = props;
6851
- const {
6852
- list,
6853
- input
6854
- } = useListbox(otherProps, ref);
6855
- const className = cn('bg-white inline-flex relative w-full', externalClassName);
6856
- return /*#__PURE__*/React.createElement("span", {
6857
- "data-taco": "listbox",
6858
- className: className
6859
- }, /*#__PURE__*/React.createElement(ScrollableList, Object.assign({}, list, {
6860
- style: {
6861
- ...list.style,
6862
- maxHeight: 'calc(12rem + 2px)' /* (6 * option height) + listbox border */
6863
- }
6864
- })), /*#__PURE__*/React.createElement("input", Object.assign({}, input, {
6865
- className: "hidden",
6866
- type: "text"
6867
- })));
6868
- });
6869
- const MultiListbox = /*#__PURE__*/React.forwardRef(function Listbox(props, ref) {
6870
- const {
6871
- className: externalClassName,
6872
- ...otherProps
6873
- } = props;
6874
- const {
6875
- list,
6876
- input
6877
- } = useMultiListbox(otherProps, ref);
6878
- const className = cn('bg-white inline-flex relative w-full', externalClassName);
6879
- return /*#__PURE__*/React.createElement("span", {
6880
- "data-taco": "listbox",
6881
- className: className
6882
- }, /*#__PURE__*/React.createElement(ScrollableList, Object.assign({}, list, {
6883
- style: {
6884
- ...list.style,
6885
- maxHeight: 'calc(12rem + 2px + 2px)' /* (6 * option height) + listbox border + ALL_OPTIONS bottom border */
6886
- }
6887
- })), /*#__PURE__*/React.createElement("input", Object.assign({}, input, {
6888
- className: "hidden",
6889
- type: "text"
6890
- })));
6891
- });
6892
-
6893
- const Content$8 = /*#__PURE__*/React.forwardRef(function MenuContent(props, ref) {
6894
- const internalRef = useMergedRef(ref);
6895
- const menu = useCurrentMenu();
6896
- const {
6897
- align = 'start',
6898
- children,
6899
- placement: side,
6900
- ...otherProps
6901
- } = props;
6902
- const className = cn('border border-transparent rounded block outline-none p-1 yt-shadow wcag-white', props.className);
6903
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, null, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Content, Object.assign({}, otherProps, {
6904
- align: align,
6905
- className: className,
6906
- "data-taco": "menu",
6907
- side: side,
6908
- sideOffset: 3,
6909
- style: {
6910
- minWidth: menu === null || menu === void 0 ? void 0 : menu.minWidth
6911
- },
6912
- ref: internalRef
6913
- }), children));
6914
- });
6915
-
6916
- const Icon$1 = ({
6917
- name
6918
- }) => /*#__PURE__*/React.createElement("span", {
6919
- className: "absolute left-0 ml-1"
6920
- }, /*#__PURE__*/React.createElement(Icon, {
6921
- className: "-ml-px -mt-px !h-5 !w-5",
6922
- name: name
6923
- }));
6924
- const useItemStyling = ({
6925
- disabled,
6926
- indented,
6927
- className
6928
- }) => {
6929
- const menu = useCurrentMenu();
6930
- React.useEffect(() => {
6931
- if (indented && !(menu !== null && menu !== void 0 && menu.indented)) {
6932
- menu === null || menu === void 0 ? void 0 : menu.registerIndentation();
6933
- }
6934
- }, [indented]);
6935
- return cn('flex items-center justify-start h-8 pr-1.5 relative rounded w-full focus:outline-none group', {
6936
- 'pl-7': menu === null || menu === void 0 ? void 0 : menu.indented,
6937
- 'pl-1.5': !(menu !== null && menu !== void 0 && menu.indented),
6938
- 'cursor-pointer hover:wcag-grey-200 text-black': !disabled,
6939
- 'cursor-not-allowed hover:bg-white text-grey-300': disabled
6940
- }, className);
6941
- };
6942
- const Shortcut = props => {
6943
- return /*#__PURE__*/React.createElement("span", Object.assign({}, props, {
6944
- className: "text-grey-700 ml-auto pl-3"
6945
- }));
6946
- };
6947
- const Item$1 = /*#__PURE__*/React.forwardRef(function MenuItem(props, ref) {
6948
- var _props$disabled;
6949
- const {
6950
- dialog,
6951
- icon,
6952
- onClick,
6953
- shortcut,
6954
- ...otherProps
6955
- } = props;
6956
- const menu = useCurrentMenu();
6957
- const className = useItemStyling({
6958
- disabled: props.disabled,
6959
- indented: !!icon,
6960
- className: props.className
6961
- });
6962
- const disabled = (_props$disabled = props.disabled) !== null && _props$disabled !== void 0 ? _props$disabled : props['aria-disabled'];
6963
- let handleClick;
6964
- // radix has a bug that does not disable clicks when disabled is set on items
6965
- if (disabled) {
6966
- handleClick = event => {
6967
- event.preventDefault();
6968
- event.stopPropagation();
6969
- };
6970
- }
6971
- const handleSelect = event => {
6972
- if (onClick) {
6973
- onClick(event);
6974
- }
6975
- if (props['aria-haspopup'] || typeof dialog === 'function') {
6976
- event.preventDefault();
6977
- }
6978
- };
6979
- let button = /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Item, Object.assign({}, otherProps, {
6980
- className: className,
6981
- onClick: handleClick,
6982
- onSelect: handleSelect,
6983
- ref: ref
6984
- }), icon && /*#__PURE__*/React.createElement(Icon$1, {
6985
- name: icon
6986
- }), props.children, shortcut && /*#__PURE__*/React.createElement(Shortcut, null, shortcut));
6987
- if (typeof dialog === 'function') {
6988
- button = dialog({
6989
- trigger: button,
6990
- onClose: menu === null || menu === void 0 ? void 0 : menu.close
6991
- });
6992
- }
6993
- return button;
6994
- });
6995
-
6996
- const Link = /*#__PURE__*/React.forwardRef(function MenuLink(props, ref) {
6997
- const {
6998
- href,
6999
- icon,
7000
- onClick,
7001
- ...otherProps
7002
- } = props;
7003
- const menu = useCurrentMenu();
7004
- const className = useItemStyling({
7005
- disabled: props.disabled,
7006
- indented: !!icon,
7007
- className: props.className
7008
- });
7009
- const handleClick = event => {
7010
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
7011
- menu === null || menu === void 0 ? void 0 : menu.close();
7012
- };
7013
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Item, Object.assign({}, otherProps, {
7014
- asChild: true,
7015
- className: className,
7016
- ref: ref,
7017
- onClick: handleClick
7018
- }), /*#__PURE__*/React.createElement("a", {
7019
- href: href,
7020
- target: "_blank"
7021
- }, icon && /*#__PURE__*/React.createElement(Icon$1, {
7022
- name: icon
7023
- }), props.children));
7024
- });
7025
-
7026
- const Trigger$6 = /*#__PURE__*/React.forwardRef(function MenuTrigger(props, ref) {
7027
- const menu = useCurrentMenu();
7028
- const internalRef = useMergedRef(ref);
7029
- React.useEffect(() => {
7030
- if (internalRef.current) {
7031
- menu === null || menu === void 0 ? void 0 : menu.setMinWidth(internalRef.current.getBoundingClientRect().width);
7032
- }
7033
- }, [internalRef]);
7034
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Trigger, Object.assign({}, props, {
7035
- asChild: true,
7036
- ref: internalRef
7037
- }));
7038
- });
7039
-
7040
- const Checkbox$1 = /*#__PURE__*/React.forwardRef(function MenuCheckboxItem(props, ref) {
7041
- const {
7042
- checked,
7043
- children,
7044
- onChange,
7045
- ...otherProps
7046
- } = props;
7047
- const className = useItemStyling({
7048
- disabled: props.disabled,
7049
- indented: true,
7050
- className: props.className
7051
- });
7052
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.CheckboxItem, Object.assign({}, otherProps, {
7053
- checked: checked,
7054
- className: className,
7055
- onCheckedChange: onChange,
7056
- ref: ref
7057
- }), /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, {
7058
- className: "absolute left-0 ml-1.5"
7059
- }, /*#__PURE__*/React.createElement(Icon, {
7060
- name: "tick",
7061
- className: "-ml-px !h-4 !w-4"
7062
- })), children);
7063
- });
7292
+ tabIndex: -1,
7293
+ value: value !== null && value !== void 0 ? value : ''
7294
+ };
7295
+ return {
7296
+ list,
7297
+ input
7298
+ };
7299
+ };
7064
7300
 
7065
- const getRadioGroupItemValueAsString = value => String(value !== null && value !== void 0 ? value : '');
7066
- const findByValue$1 = (values, valueAsString) => values.find(value => getRadioGroupItemValueAsString(value) === valueAsString);
7067
- const RadioGroupContext = /*#__PURE__*/React.createContext({
7068
- disabled: false,
7069
- invalid: false
7070
- });
7071
- const RadioGroupItem = /*#__PURE__*/React.forwardRef(function RadioGroupItem(props, ref) {
7072
- const context = React.useContext(RadioGroupContext);
7301
+ const Listbox = /*#__PURE__*/React.forwardRef(function Listbox(props, ref) {
7073
7302
  const {
7074
- children,
7075
- value,
7303
+ className: externalClassName,
7076
7304
  ...otherProps
7077
7305
  } = props;
7078
- const isDisabled = context.disabled || props.disabled;
7079
- const className = cn('flex flex-shrink-0 self-start items-center justify-center h-4 w-4 mt-[0.2rem] rounded-full bg-white border-2', {
7080
- 'border-grey-300 hover:border-4 focus:yt-focus aria-checked:bg-blue-500 aria-checked:border-blue-500 hover:aria-checked:border-blue-300': !isDisabled && !context.invalid,
7081
- 'border-grey-200 cursor-not-allowed aria-checked:bg-blue-300 aria-checked:border-blue-300 ': isDisabled,
7082
- 'border-red-500 hover:border-4 text-red-500 focus:border-red-500 focus:yt-focus-red aria-checked:bg-red-500 aria-checked:border-red': context.invalid && !isDisabled
7083
- });
7084
- const labelClassName = cn('flex items-center gap-2', {
7085
- 'cursor-pointer': !isDisabled,
7086
- 'cursor-not-allowed text-grey-300': isDisabled
7087
- }, props.className);
7088
- return /*#__PURE__*/React.createElement("label", {
7089
- className: labelClassName
7090
- }, /*#__PURE__*/React.createElement(RadioGroupPrimitive.Item, Object.assign({}, otherProps, {
7091
- className: className,
7092
- disabled: isDisabled,
7093
- ref: ref,
7094
- value: getRadioGroupItemValueAsString(value)
7095
- }), /*#__PURE__*/React.createElement(RadioGroupPrimitive.Indicator, {
7096
- className: "h-2 w-2 rounded-full bg-white"
7097
- })), children);
7098
- });
7099
- const useRadioGroup = props => {
7100
7306
  const {
7101
- children,
7102
- defaultValue,
7103
- disabled,
7104
- invalid,
7105
- onChange,
7106
- orientation = 'vertical',
7107
- value,
7108
- ...otherProps
7109
- } = props;
7110
- const values = React.useMemo(() => {
7111
- const radioGroupItemValues = [];
7112
- React.Children.forEach(children, child => {
7113
- if ( /*#__PURE__*/React.isValidElement(child)) {
7114
- radioGroupItemValues.push(child.props.value);
7115
- }
7116
- });
7117
- return radioGroupItemValues;
7118
- }, [children]);
7119
- const context = React.useMemo(() => ({
7120
- disabled: disabled !== null && disabled !== void 0 ? disabled : false,
7121
- invalid: invalid !== null && invalid !== void 0 ? invalid : false
7122
- }), [disabled, invalid]);
7123
- let valueProps;
7124
- if (onChange !== undefined) {
7125
- const handleChange = value => onChange(findByValue$1(values, value));
7126
- valueProps = {
7127
- onValueChange: handleChange,
7128
- value: value !== undefined ? getRadioGroupItemValueAsString(value) : undefined
7129
- };
7130
- } else {
7131
- valueProps = {
7132
- defaultValue: defaultValue !== undefined ? getRadioGroupItemValueAsString(defaultValue) : undefined
7133
- };
7134
- }
7135
- return {
7136
- context,
7137
- props: {
7138
- ...otherProps,
7139
- ...valueProps,
7140
- children,
7141
- disabled,
7142
- orientation
7307
+ list,
7308
+ input
7309
+ } = useListbox(otherProps, ref);
7310
+ const className = cn('bg-white inline-flex relative w-full', externalClassName);
7311
+ return /*#__PURE__*/React.createElement("span", {
7312
+ "data-taco": "listbox",
7313
+ className: className
7314
+ }, /*#__PURE__*/React.createElement(ScrollableList, Object.assign({}, list, {
7315
+ style: {
7316
+ ...list.style,
7317
+ maxHeight: 'calc(12rem + 2px)' /* (6 * option height) + listbox border */
7143
7318
  }
7144
- };
7145
- };
7146
- const RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {
7147
- const {
7148
- context,
7149
- props: otherProps
7150
- } = useRadioGroup(props);
7151
- const className = cn('flex items-start gap-y-2', {
7152
- 'flex-wrap gap-x-4 ': otherProps.orientation === 'horizontal',
7153
- 'flex-col': otherProps.orientation === 'vertical'
7154
- }, otherProps.className);
7155
- return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {
7156
- value: context
7157
- }, /*#__PURE__*/React.createElement(RadioGroupPrimitive.Root, Object.assign({}, otherProps, {
7158
- className: className,
7159
- "data-taco": "radio-group",
7160
- ref: ref
7319
+ })), /*#__PURE__*/React.createElement("input", Object.assign({}, input, {
7320
+ className: "hidden",
7321
+ type: "text"
7161
7322
  })));
7162
7323
  });
7163
- RadioGroup.Item = RadioGroupItem;
7164
-
7165
- const RadioItem = props => {
7166
- const context = React.useContext(MenuRadioGroupContext);
7324
+ const MultiListbox = /*#__PURE__*/React.forwardRef(function Listbox(props, ref) {
7167
7325
  const {
7168
- children,
7169
- value,
7326
+ className: externalClassName,
7170
7327
  ...otherProps
7171
7328
  } = props;
7172
- const disabled = context.disabled || props.disabled;
7173
- const className = useItemStyling({
7174
- disabled: disabled,
7175
- indented: true,
7176
- className: props.className
7177
- });
7178
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioItem, Object.assign({}, otherProps, {
7179
- className: className,
7180
- disabled: disabled,
7181
- value: getRadioGroupItemValueAsString(value)
7182
- }), /*#__PURE__*/React.createElement(DropdownMenuPrimitive.ItemIndicator, {
7183
- className: "absolute left-0 ml-1.5"
7184
- }, /*#__PURE__*/React.createElement("span", {
7185
- className: "ml-1 flex h-1.5 w-1.5 rounded-full bg-current "
7186
- })), children);
7187
- };
7188
- const MenuRadioGroupContext = /*#__PURE__*/React.createContext({
7189
- disabled: false
7190
- });
7191
- const RadioGroup$1 = /*#__PURE__*/React.forwardRef(function MenuRadioItem(props, ref) {
7192
7329
  const {
7193
- context,
7194
- props: otherProps
7195
- } = useRadioGroup(props);
7196
- const className = cn('flex flex-col', props.className);
7197
- return /*#__PURE__*/React.createElement(MenuRadioGroupContext.Provider, {
7198
- value: context
7199
- }, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.RadioGroup, Object.assign({}, otherProps, {
7200
- className: className,
7201
- ref: ref
7330
+ list,
7331
+ input
7332
+ } = useMultiListbox(otherProps, ref);
7333
+ const className = cn('bg-white inline-flex relative w-full', externalClassName);
7334
+ return /*#__PURE__*/React.createElement("span", {
7335
+ "data-taco": "listbox",
7336
+ className: className
7337
+ }, /*#__PURE__*/React.createElement(ScrollableList, Object.assign({}, list, {
7338
+ style: {
7339
+ ...list.style,
7340
+ maxHeight: 'calc(12rem + 2px + 2px)' /* (6 * option height) + listbox border + ALL_OPTIONS bottom border */
7341
+ }
7342
+ })), /*#__PURE__*/React.createElement("input", Object.assign({}, input, {
7343
+ className: "hidden",
7344
+ type: "text"
7202
7345
  })));
7203
7346
  });
7204
- RadioGroup$1.Item = RadioItem;
7205
-
7206
- const Separator = () => {
7207
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Separator, {
7208
- className: "bg-grey-300 my-1 h-px"
7209
- });
7210
- };
7211
-
7212
- const Header = /*#__PURE__*/React.forwardRef(function MenuHeader(props, ref) {
7213
- const menu = useCurrentMenu();
7214
- const className = cn('flex items-center justify-start h-7 pr-1.5 text-xs text-grey-700', {
7215
- 'pl-7': menu === null || menu === void 0 ? void 0 : menu.indented,
7216
- 'pl-1.5': !(menu !== null && menu !== void 0 && menu.indented)
7217
- }, props.className);
7218
- return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Label, Object.assign({}, props, {
7219
- className: className,
7220
- ref: ref
7221
- }));
7222
- });
7223
-
7224
- const Menu$1 = /*#__PURE__*/React.forwardRef(function Menu(externalProps, ref) {
7225
- const {
7226
- children,
7227
- defaultOpen: defaultProp,
7228
- onChange,
7229
- open: prop,
7230
- trigger,
7231
- ...props
7232
- } = externalProps;
7233
- const [indented, setIndented] = React.useState(false);
7234
- const [minWidth, setMinWidth] = React.useState(undefined);
7235
- const [open, setOpen] = reactUseControllableState.useControllableState({
7236
- // uncontrolled
7237
- defaultProp,
7238
- // controlled
7239
- onChange,
7240
- prop
7241
- });
7242
- const context = React.useMemo(() => ({
7243
- indented,
7244
- registerIndentation: () => setIndented(true),
7245
- minWidth,
7246
- setMinWidth: width => setMinWidth(width),
7247
- close: () => setOpen(false)
7248
- }), [indented, minWidth]);
7249
- return /*#__PURE__*/React.createElement(MenuContext.Provider, {
7250
- value: context
7251
- }, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Root, Object.assign({}, props, {
7252
- modal: false,
7253
- open: open,
7254
- onOpenChange: setOpen
7255
- }), trigger && /*#__PURE__*/React.createElement(Trigger$6, {
7256
- ref: ref
7257
- }, trigger), children));
7258
- });
7259
- Menu$1.Trigger = Trigger$6;
7260
- Menu$1.Content = Content$8;
7261
- Menu$1.Item = Item$1;
7262
- Menu$1.Link = Link;
7263
- Menu$1.Checkbox = Checkbox$1;
7264
- Menu$1.Separator = Separator;
7265
- Menu$1.Header = Header;
7266
- Menu$1.RadioGroup = RadioGroup$1;
7267
7347
 
7268
7348
  const TreeviewItem = /*#__PURE__*/React__default.forwardRef(function TreeviewItem(props, ref) {
7269
7349
  return /*#__PURE__*/React__default.createElement("a", Object.assign({}, props, {
@@ -7544,7 +7624,7 @@ const useSelect = ({
7544
7624
  }, [open]);
7545
7625
  React.useEffect(() => {
7546
7626
  if (value === undefined) {
7547
- if (defaultValue !== undefined && findByValue(flattenedData, defaultValue)) {
7627
+ if (defaultValue !== undefined && findByValue$1(flattenedData, defaultValue)) {
7548
7628
  setInputValueByRef$1(inputRef.current, defaultValue);
7549
7629
  } else {
7550
7630
  if (emptyValue !== undefined) {
@@ -7554,7 +7634,7 @@ const useSelect = ({
7554
7634
  }
7555
7635
  }
7556
7636
  } else {
7557
- if (!multiselect && !findByValue(flattenedData, value)) {
7637
+ if (!multiselect && !findByValue$1(flattenedData, value)) {
7558
7638
  if (emptyValue !== undefined) {
7559
7639
  setInputValueByRef$1(inputRef.current, emptyValue);
7560
7640
  } else if (data.length > 0) {
@@ -7613,11 +7693,11 @@ const useSelect = ({
7613
7693
  text = texts.select.allOptionsSelected;
7614
7694
  } else {
7615
7695
  var _findByValue$text, _findByValue;
7616
- text = (_findByValue$text = (_findByValue = findByValue(flattenedData, selectedValues[0])) === null || _findByValue === void 0 ? void 0 : _findByValue.text) !== null && _findByValue$text !== void 0 ? _findByValue$text : '';
7696
+ text = (_findByValue$text = (_findByValue = findByValue$1(flattenedData, selectedValues[0])) === null || _findByValue === void 0 ? void 0 : _findByValue.text) !== null && _findByValue$text !== void 0 ? _findByValue$text : '';
7617
7697
  more = selectedValues.length > 1 ? selectedValues.length - 1 : 0;
7618
7698
  }
7619
7699
  } else {
7620
- const item = findByValue(flattenedData, value);
7700
+ const item = findByValue$1(flattenedData, value);
7621
7701
  if (item) {
7622
7702
  text = item.icon ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.cloneElement(item.icon, {
7623
7703
  className: cn(item.icon.props.className, 'mr-1 -mt-px')
@@ -7629,7 +7709,7 @@ const useSelect = ({
7629
7709
  event.persist();
7630
7710
  if (onChange) {
7631
7711
  var _item$path$split, _item$path;
7632
- const item = findByValue(flattenedData, event.target.value);
7712
+ const item = findByValue$1(flattenedData, event.target.value);
7633
7713
  event.detail = sanitizeItem(item);
7634
7714
  const indexes = (_item$path$split = item === null || item === void 0 ? void 0 : (_item$path = item.path) === null || _item$path === void 0 ? void 0 : _item$path.split('.')) !== null && _item$path$split !== void 0 ? _item$path$split : [];
7635
7715
  if (indexes.length > 1) {
@@ -10124,7 +10204,7 @@ const useRowSelect = onSelectedRows => {
10124
10204
  onSelectedRows({});
10125
10205
  }
10126
10206
  };
10127
- return /*#__PURE__*/React__default.createElement(Checkbox, Object.assign({}, props, {
10207
+ return /*#__PURE__*/React__default.createElement(Checkbox$1, Object.assign({}, props, {
10128
10208
  onChange: onChange
10129
10209
  }));
10130
10210
  },
@@ -10149,7 +10229,7 @@ const useRowSelect = onSelectedRows => {
10149
10229
  }
10150
10230
  lastSelectedSortedIndex.current = sortedIndex;
10151
10231
  };
10152
- return /*#__PURE__*/React__default.createElement(Checkbox, Object.assign({}, props, {
10232
+ return /*#__PURE__*/React__default.createElement(Checkbox$1, Object.assign({}, props, {
10153
10233
  className: "!mt-2.5",
10154
10234
  onClick: onClick,
10155
10235
  // this is necessary to remove console spam from eslint
@@ -11239,7 +11319,7 @@ const SelectCell = /*#__PURE__*/React__default.memo(({
11239
11319
  className: "ml-2",
11240
11320
  keys: ['Space']
11241
11321
  }))
11242
- }, /*#__PURE__*/React__default.createElement(Checkbox, {
11322
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
11243
11323
  "aria-label": isSelected ? texts.table2.columns.select.select : texts.table2.columns.select.deselect,
11244
11324
  className: "hover:border-blue !mt-0",
11245
11325
  checked: isSelected,
@@ -11260,7 +11340,7 @@ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowInd
11260
11340
  className: "ml-2",
11261
11341
  keys: ['Ctrl', 'A']
11262
11342
  }))
11263
- }, /*#__PURE__*/React__default.createElement(Checkbox, {
11343
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
11264
11344
  "aria-label": table.getIsAllPageRowsSelected() ? texts.table2.columns.select.deselectAll : texts.table2.columns.select.selectAll,
11265
11345
  className: "hover:border-blue !mt-0",
11266
11346
  checked: table.getIsAllPageRowsSelected(),
@@ -13283,7 +13363,7 @@ const OrderableColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
13283
13363
  ref: ref
13284
13364
  }), /*#__PURE__*/React__default.createElement("span", {
13285
13365
  className: "pointer-events-none"
13286
- }, icon, (_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : column.columnDef.id), column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox, {
13366
+ }, icon, (_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : column.columnDef.id), column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox$1, {
13287
13367
  checked: column.getIsVisible(),
13288
13368
  onChange: column.toggleVisibility
13289
13369
  }) : null);
@@ -14952,7 +15032,7 @@ const SecondaryNavigation = /*#__PURE__*/React__default.forwardRef(function Seco
14952
15032
  });
14953
15033
 
14954
15034
  const MenuButton = /*#__PURE__*/React__default.forwardRef(function MenuButton(props, ref) {
14955
- const className = cn(getButtonClasses$1(), 'ml-1 -mr-1 !bg-transparent hover:!bg-white/[.08] focus:!bg-white/[.08]] lg:hidden');
15035
+ const className = cn(getButtonClasses$1(), 'ml-1 -mr-1 !bg-transparent hover:!bg-white/[.08] focus:!bg-white/[.08]] lg:hidden z-[2]');
14956
15036
  return /*#__PURE__*/React__default.createElement(IconButton, Object.assign({}, props, {
14957
15037
  className: className,
14958
15038
  "data-taco": "header-toggle-sidebar",
@@ -15136,18 +15216,25 @@ const filterBySearchValue = search => agreement => {
15136
15216
  const isCurrentAgreement = (agreement, currentAgreement) => {
15137
15217
  return agreement.number === currentAgreement.number && agreement.userId === currentAgreement.userId;
15138
15218
  };
15139
- const createAgreementButton = (agreement, fallbackImageSrc, onChangeAgreement, isCurrentAgreement = false) => /*#__PURE__*/React__default.createElement("button", {
15140
- "aria-current": isCurrentAgreement ? 'true' : undefined,
15141
- className: "focus:yt-focus-dark w-full rounded outline-none",
15142
- "data-taco": "header-agreements-agreement",
15143
- key: `${agreement.number}_${agreement.userId}`,
15144
- onClick: () => onChangeAgreement(agreement),
15145
- onKeyDown: () => onChangeAgreement(agreement),
15146
- tabIndex: 0
15147
- }, /*#__PURE__*/React__default.createElement(AgreementDetails, Object.assign({}, agreement, {
15148
- className: "h-14 bg-white/[0.08] xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]",
15149
- fallbackImageSrc: fallbackImageSrc
15150
- })));
15219
+ const createAgreementButton = (agreement, fallbackImageSrc, onChangeAgreement, isCurrentAgreement = false) => {
15220
+ const handleKeyDown = event => {
15221
+ if (event.key === 'Enter') {
15222
+ onChangeAgreement(agreement);
15223
+ }
15224
+ };
15225
+ return /*#__PURE__*/React__default.createElement("button", {
15226
+ "aria-current": isCurrentAgreement ? 'true' : undefined,
15227
+ className: "focus:yt-focus-dark w-full rounded outline-none",
15228
+ "data-taco": "header-agreements-agreement",
15229
+ key: `${agreement.number}_${agreement.userId}`,
15230
+ onClick: () => onChangeAgreement(agreement),
15231
+ onKeyDown: handleKeyDown,
15232
+ tabIndex: 0
15233
+ }, /*#__PURE__*/React__default.createElement(AgreementDetails, Object.assign({}, agreement, {
15234
+ className: "h-14 bg-white/[0.08] xl:hover:bg-white/[0.16] [[aria-current='true']>&]:bg-white/[0.16]",
15235
+ fallbackImageSrc: fallbackImageSrc
15236
+ })));
15237
+ };
15151
15238
 
15152
15239
  const Header$2 = /*#__PURE__*/React__default.forwardRef(function Header(props, ref) {
15153
15240
  const className = cn('bg-blue-900 flex h-16 w-full shrink-0 items-center gap-4 pl-2', '[&>a:focus-visible]:yt-focus-dark [&>a]:px-2 [&>a]:rounded [&>a]:h-[calc(100%-14px)]',
@@ -15196,24 +15283,7 @@ const useMatchMedia = (query, defaultMatches = false) => {
15196
15283
 
15197
15284
  const useIsLargeScreen = () => useMatchMedia('(min-width: 1024px)', window.innerWidth > 1024);
15198
15285
 
15199
- const SidebarBackdrop = /*#__PURE__*/React__default.forwardRef(function SidebarBackdrop(props, ref) {
15200
- const internalRef = useMergedRef(ref);
15201
- React__default.useEffect(() => {
15202
- if (internalRef.current) {
15203
- internalRef.current.style.opacity = '1'; // Trigger the animation
15204
- }
15205
-
15206
- return () => {
15207
- if (internalRef.current) {
15208
- internalRef.current.style.opacity = '0'; // Reset to the initial value
15209
- }
15210
- };
15211
- }, []);
15212
- return /*#__PURE__*/React__default.createElement(Backdrop, Object.assign({}, props, {
15213
- className: "absolute z-[1] opacity-0 transition-opacity duration-300",
15214
- ref: internalRef
15215
- }));
15216
- });
15286
+ const SidebarBackdrop = /*#__PURE__*/framerMotion.motion(Backdrop);
15217
15287
  const Sidebar = /*#__PURE__*/React__default.forwardRef(function LayoutSidebar(props, ref) {
15218
15288
  const {
15219
15289
  children,
@@ -15247,10 +15317,21 @@ const Sidebar = /*#__PURE__*/React__default.forwardRef(function LayoutSidebar(pr
15247
15317
  };
15248
15318
  }, [isSmallScreen, sidebarOpen]);
15249
15319
  const showBackdrop = isSmallScreen && sidebarOpen === true;
15320
+ const [ready, setReady] = React__default.useState(isSmallScreen);
15250
15321
  const className = cn('bg-grey-50 h-full w-64 flex-shrink-0 flex-grow-0', {
15251
- 'transition-[transform] duration-300 absolute z-10 aria-hidden:-translate-x-64': isSmallScreen,
15322
+ 'absolute z-10 aria-hidden:-translate-x-64 ': isSmallScreen,
15323
+ // prevent animation when crossing the boundary from large to small screen,
15324
+ // this prevents awkward animation in the edge case (resizing the browser, instead of starting at a given size)
15325
+ invisible: isSmallScreen && !ready,
15326
+ 'transition-[transform] duration-300 visible': isSmallScreen && ready,
15252
15327
  'border-r-2 border-black/[.08] ': !showBackdrop
15253
15328
  }, props.className);
15329
+ React__default.useEffect(() => {
15330
+ // ensure state is updated in the next cpu tick so that the animation definitely doesn't run
15331
+ setTimeout(() => {
15332
+ setReady(isSmallScreen);
15333
+ }, 1);
15334
+ }, [isSmallScreen]);
15254
15335
  const toggleSidebar = () => setSidebarOpen(open => !open);
15255
15336
  const content = typeof children === 'function' ? children({
15256
15337
  isLargeScreen,
@@ -15265,9 +15346,19 @@ const Sidebar = /*#__PURE__*/React__default.forwardRef(function LayoutSidebar(pr
15265
15346
  "aria-hidden": !isVisible,
15266
15347
  className: className,
15267
15348
  ref: ref
15268
- }), content), showBackdrop ? /*#__PURE__*/React__default.createElement(SidebarBackdrop, {
15349
+ }), content), /*#__PURE__*/React__default.createElement(framerMotion.AnimatePresence, null, showBackdrop && /*#__PURE__*/React__default.createElement(SidebarBackdrop, {
15350
+ initial: {
15351
+ opacity: 0
15352
+ },
15353
+ animate: {
15354
+ opacity: 1
15355
+ },
15356
+ exit: {
15357
+ opacity: 0
15358
+ },
15359
+ className: "z-[1]",
15269
15360
  onClick: () => setSidebarOpen(false)
15270
- }) : null);
15361
+ })));
15271
15362
  });
15272
15363
 
15273
15364
  const Top = props => {
@@ -15497,9 +15588,10 @@ exports.BadgeIcon = BadgeIcon;
15497
15588
  exports.Banner = Banner;
15498
15589
  exports.Base = Base;
15499
15590
  exports.Button = Button$1;
15591
+ exports.ButtonGroup = ButtonGroup;
15500
15592
  exports.Calendar = Calendar$1;
15501
15593
  exports.Card = Card;
15502
- exports.Checkbox = Checkbox;
15594
+ exports.Checkbox = Checkbox$1;
15503
15595
  exports.CollectionPrimitive = Collection;
15504
15596
  exports.Combobox = Combobox;
15505
15597
  exports.Datepicker = Datepicker;
@@ -15549,7 +15641,7 @@ exports.VisuallyHidden = VisuallyHidden;
15549
15641
  exports.WindowedTable = WindowedTable;
15550
15642
  exports.convertRowIndexPathToNumberArray = convertRowIndexPathToNumberArray;
15551
15643
  exports.defaultLocalisationTexts = defaultLocalisationTexts;
15552
- exports.findByValue = findByValue$1;
15644
+ exports.findByValue = findByValue;
15553
15645
  exports.format = format;
15554
15646
  exports.getByRowIndexPath = getByRowIndexPath;
15555
15647
  exports.getNavigationLinkClasses = getNavigationLinkClasses;
@@ -15567,6 +15659,7 @@ exports.setByRowIndexPath = setByRowIndexPath;
15567
15659
  exports.useBoundaryOverflowDetection = useBoundaryOverflowDetection;
15568
15660
  exports.useBoundingClientRectListener = useBoundingClientRectListener;
15569
15661
  exports.useDropTarget = useDropTarget;
15662
+ exports.useIntersectionObserver = useIntersectionObserver;
15570
15663
  exports.useIsLargeScreen = useIsLargeScreen;
15571
15664
  exports.useListKeyboardNavigation = useListKeyboardNavigation;
15572
15665
  exports.useListScrollTo = useListScrollTo;