@itwin/itwinui-react 3.0.0-dev.8 → 3.0.0-dev.9

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 (61) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/core/Buttons/DropdownButton/DropdownButton.js +7 -19
  3. package/cjs/core/Buttons/SplitButton/SplitButton.d.ts +4 -4
  4. package/cjs/core/Buttons/SplitButton/SplitButton.js +53 -31
  5. package/cjs/core/ComboBox/ComboBox.d.ts +2 -2
  6. package/cjs/core/ComboBox/ComboBox.js +32 -24
  7. package/cjs/core/ComboBox/ComboBoxInput.js +29 -21
  8. package/cjs/core/ComboBox/ComboBoxMenu.js +73 -93
  9. package/cjs/core/ComboBox/helpers.d.ts +4 -1
  10. package/cjs/core/DropdownMenu/DropdownMenu.d.ts +6 -5
  11. package/cjs/core/DropdownMenu/DropdownMenu.js +59 -55
  12. package/cjs/core/Header/HeaderDropdownButton.js +1 -2
  13. package/cjs/core/Header/HeaderSplitButton.js +1 -2
  14. package/cjs/core/Menu/Menu.js +1 -1
  15. package/cjs/core/Menu/MenuItem.js +77 -55
  16. package/cjs/core/Select/Select.d.ts +5 -5
  17. package/cjs/core/Select/Select.js +74 -93
  18. package/cjs/core/Table/columns/actionColumn.js +3 -7
  19. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +36 -41
  20. package/cjs/core/Table/filters/FilterToggle.js +3 -2
  21. package/cjs/core/Tile/Tile.js +21 -22
  22. package/cjs/core/index.d.ts +1 -1
  23. package/cjs/core/index.js +8 -1
  24. package/cjs/core/utils/components/InputContainer.d.ts +4 -4
  25. package/cjs/core/utils/components/InputContainer.js +7 -3
  26. package/cjs/core/utils/components/Popover.d.ts +113 -27
  27. package/cjs/core/utils/components/Popover.js +156 -118
  28. package/cjs/styles.js +2 -5
  29. package/esm/core/Buttons/DropdownButton/DropdownButton.js +8 -24
  30. package/esm/core/Buttons/SplitButton/SplitButton.d.ts +4 -4
  31. package/esm/core/Buttons/SplitButton/SplitButton.js +53 -28
  32. package/esm/core/ComboBox/ComboBox.d.ts +2 -2
  33. package/esm/core/ComboBox/ComboBox.js +33 -24
  34. package/esm/core/ComboBox/ComboBoxInput.js +22 -21
  35. package/esm/core/ComboBox/ComboBoxMenu.js +67 -87
  36. package/esm/core/ComboBox/helpers.d.ts +4 -1
  37. package/esm/core/DropdownMenu/DropdownMenu.d.ts +6 -5
  38. package/esm/core/DropdownMenu/DropdownMenu.js +64 -56
  39. package/esm/core/Header/HeaderDropdownButton.js +1 -2
  40. package/esm/core/Header/HeaderSplitButton.js +1 -2
  41. package/esm/core/Menu/Menu.js +7 -2
  42. package/esm/core/Menu/MenuItem.js +84 -52
  43. package/esm/core/Select/Select.d.ts +5 -5
  44. package/esm/core/Select/Select.js +74 -90
  45. package/esm/core/Table/columns/actionColumn.js +3 -7
  46. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +36 -41
  47. package/esm/core/Table/filters/FilterToggle.js +3 -2
  48. package/esm/core/Tile/Tile.js +21 -22
  49. package/esm/core/index.d.ts +1 -1
  50. package/esm/core/index.js +1 -0
  51. package/esm/core/utils/components/InputContainer.d.ts +4 -4
  52. package/esm/core/utils/components/InputContainer.js +7 -2
  53. package/esm/core/utils/components/Popover.d.ts +113 -27
  54. package/esm/core/utils/components/Popover.js +175 -118
  55. package/esm/styles.js +2 -5
  56. package/package.json +2 -4
  57. package/styles.css +3 -3
  58. package/cjs/core/ComboBox/ComboBoxDropdown.d.ts +0 -7
  59. package/cjs/core/ComboBox/ComboBoxDropdown.js +0 -43
  60. package/esm/core/ComboBox/ComboBoxDropdown.d.ts +0 -7
  61. package/esm/core/ComboBox/ComboBoxDropdown.js +0 -37
@@ -65,4 +65,4 @@ export { Anchor, Blockquote, Code, Kbd, KbdKeys, Text, } from './Typography/inde
65
65
  export { Stepper, WorkflowDiagram } from './Stepper/index.js';
66
66
  export type { StepProperties, StepperLocalization } from './Stepper/index.js';
67
67
  export { SearchBox } from './SearchBox/index.js';
68
- export { getUserColor, ColorValue, MiddleTextTruncation, LinkBox, LinkAction, Icon, Flex, VisuallyHidden, Divider, } from './utils/index.js';
68
+ export { getUserColor, ColorValue, MiddleTextTruncation, LinkBox, LinkAction, Icon, Flex, VisuallyHidden, Divider, Popover, } from './utils/index.js';
package/esm/core/index.js CHANGED
@@ -128,4 +128,5 @@ export {
128
128
  Flex,
129
129
  VisuallyHidden,
130
130
  Divider,
131
+ Popover,
131
132
  } from './utils/index.js';
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- export type InputContainerProps<T extends React.ElementType = 'div'> = {
3
- as?: T;
2
+ import type { PolymorphicForwardRefComponent } from '../props.js';
3
+ export type InputContainerProps = {
4
4
  label?: React.ReactNode;
5
5
  disabled?: boolean;
6
6
  required?: boolean;
@@ -11,9 +11,9 @@ export type InputContainerProps<T extends React.ElementType = 'div'> = {
11
11
  statusMessage?: React.ReactNode;
12
12
  inputId?: string;
13
13
  labelId?: string;
14
- } & React.ComponentPropsWithoutRef<T>;
14
+ };
15
15
  /**
16
16
  * Input container to wrap inputs with label, and add optional message and icon.
17
17
  * @private
18
18
  */
19
- export declare const InputContainer: <T extends React.ElementType<any> = "div">(props: InputContainerProps<T>) => React.JSX.Element;
19
+ export declare const InputContainer: PolymorphicForwardRefComponent<"div", InputContainerProps>;
@@ -11,7 +11,7 @@ import { StatusMessage } from '../../StatusMessage/index.js';
11
11
  * Input container to wrap inputs with label, and add optional message and icon.
12
12
  * @private
13
13
  */
14
- export const InputContainer = (props) => {
14
+ export const InputContainer = React.forwardRef((props, forwardedRef) => {
15
15
  const {
16
16
  label,
17
17
  disabled,
@@ -35,12 +35,17 @@ export const InputContainer = (props) => {
35
35
  'data-iui-status': status,
36
36
  'data-iui-label-placement': isLabelInline ? 'inline' : undefined,
37
37
  style: style,
38
+ ref: forwardedRef,
38
39
  ...rest,
39
40
  },
40
41
  label &&
41
42
  React.createElement(
42
43
  Label,
44
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
45
+ // @ts-ignore
43
46
  {
47
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
48
+ // @ts-ignore
44
49
  as: inputId && props.as !== 'label' ? 'label' : 'div',
45
50
  required: required,
46
51
  disabled: disabled,
@@ -59,4 +64,4 @@ export const InputContainer = (props) => {
59
64
  message,
60
65
  ),
61
66
  );
62
- };
67
+ });
@@ -1,39 +1,125 @@
1
1
  import * as React from 'react';
2
- import type { TippyProps } from '@tippyjs/react';
3
- import type { Placement, Instance } from 'tippy.js';
4
- export type PopoverInstance = Instance;
5
- export type PopoverProps = {
2
+ import type { Placement } from '@floating-ui/react';
3
+ import type { PolymorphicForwardRefComponent } from '../index.js';
4
+ import type { PortalProps } from './Portal.js';
5
+ type PopoverOptions = {
6
+ /**
7
+ * Placement of the popover content.
8
+ * @default 'bottom-start'
9
+ */
10
+ placement?: Placement;
6
11
  /**
7
12
  * Controlled flag for whether the popover is visible.
8
13
  */
9
14
  visible?: boolean;
10
15
  /**
11
- * Determines the events that cause the popover to show.
12
- * Should not be used when `visible` is set.
13
- * @see [tippy.js trigger prop](https://atomiks.github.io/tippyjs/v6/all-props/#trigger)
16
+ * Callback invoked every time the popover visibility changes as a result
17
+ * of internal logic. Should be used alongside `visible` prop.
14
18
  */
15
- trigger?: string;
19
+ onVisibleChange?: (visible: boolean) => void;
16
20
  /**
17
- * Placement of the popover content.
18
- * @default 'bottom-start'
19
- * @see [tippy.js placement prop](https://atomiks.github.io/tippyjs/v6/all-props/#placement).
21
+ * If true, the popover will close when clicking outside it.
20
22
  */
21
- placement?: Placement;
22
- } & Omit<TippyProps, 'placement' | 'trigger' | 'visible'>;
23
- /**
24
- * Wrapper around [tippy.js](https://atomiks.github.io/tippyjs)
25
- * with pre-configured props and plugins (e.g. lazy mounting, focus, etc).
26
- * @private
27
- */
28
- export declare const Popover: React.ForwardRefExoticComponent<Omit<PopoverProps, "ref"> & React.RefAttributes<unknown>>;
29
- /**
30
- * Plugin to hide Popover when either Esc key is pressed,
31
- * or when the content inside is not tabbable and Tab key is pressed.
32
- */
33
- export declare const hideOnEscOrTab: {
34
- fn(instance: Instance): {
35
- onShow(): void;
36
- onHide(): void;
23
+ closeOnOutsideClick?: boolean;
24
+ /**
25
+ * Whether the popover should match the width of the trigger.
26
+ */
27
+ matchWidth?: boolean;
28
+ };
29
+ type PopoverInternalProps = {
30
+ /**
31
+ * autoUpdate options that recalculates position
32
+ * to ensure the floating element remains anchored
33
+ * to its reference element, such as when scrolling
34
+ * and resizing the screen
35
+ *
36
+ * https://floating-ui.com/docs/autoUpdate#options
37
+ */
38
+ autoUpdateOptions?: {
39
+ ancestorScroll?: boolean;
40
+ ancestorResize?: boolean;
41
+ elementResize?: boolean;
42
+ /**
43
+ * Use this if you want popover to follow moving trigger element
44
+ */
45
+ animationFrame?: boolean;
46
+ layoutShift?: boolean;
47
+ };
48
+ /**
49
+ * Middleware options.
50
+ *
51
+ * @see https://floating-ui.com/docs/offset
52
+ */
53
+ middleware?: {
54
+ offset?: number;
55
+ flip?: boolean;
56
+ shift?: boolean;
57
+ autoPlacement?: boolean;
58
+ hide?: boolean;
59
+ inline?: boolean;
37
60
  };
61
+ /**
62
+ * By default, the popover will only open on click.
63
+ * `hover` and `focus` can be manually specified as triggers.
64
+ */
65
+ trigger?: Partial<Record<'hover' | 'click' | 'focus', boolean>>;
66
+ role?: 'dialog' | 'menu' | 'listbox';
67
+ };
68
+ export declare const usePopover: (options: PopoverOptions & PopoverInternalProps) => {
69
+ placement: Placement;
70
+ strategy: import("@floating-ui/utils").Strategy;
71
+ middlewareData: import("@floating-ui/core").MiddlewareData;
72
+ x: number;
73
+ y: number;
74
+ isPositioned: boolean;
75
+ update: () => void;
76
+ floatingStyles: React.CSSProperties;
77
+ refs: {
78
+ reference: React.MutableRefObject<import("@floating-ui/react-dom").ReferenceType | null>;
79
+ floating: React.MutableRefObject<HTMLElement | null>;
80
+ setReference: (node: import("@floating-ui/react-dom").ReferenceType | null) => void;
81
+ setFloating: (node: HTMLElement | null) => void;
82
+ } & import("@floating-ui/react").ExtendedRefs<import("@floating-ui/react").ReferenceType>;
83
+ elements: {
84
+ reference: import("@floating-ui/react-dom").ReferenceType | null; /**
85
+ * Middleware options.
86
+ *
87
+ * @see https://floating-ui.com/docs/offset
88
+ */
89
+ floating: HTMLElement | null;
90
+ } & import("@floating-ui/react").ExtendedElements<import("@floating-ui/react").ReferenceType>;
91
+ context: {
92
+ x: number;
93
+ y: number;
94
+ placement: Placement;
95
+ strategy: import("@floating-ui/utils").Strategy;
96
+ middlewareData: import("@floating-ui/core").MiddlewareData;
97
+ isPositioned: boolean;
98
+ update: () => void;
99
+ floatingStyles: React.CSSProperties;
100
+ open: boolean;
101
+ onOpenChange: (open: boolean, event?: Event | undefined) => void;
102
+ events: import("@floating-ui/react").FloatingEvents;
103
+ dataRef: React.MutableRefObject<import("@floating-ui/react").ContextData>;
104
+ nodeId: string | undefined;
105
+ floatingId: string;
106
+ refs: import("@floating-ui/react").ExtendedRefs<import("@floating-ui/react").ReferenceType>;
107
+ elements: import("@floating-ui/react").ExtendedElements<import("@floating-ui/react").ReferenceType>;
108
+ };
109
+ getFloatingProps: (userProps?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;
110
+ getReferenceProps: (userProps?: React.HTMLProps<Element> | undefined) => Record<string, unknown>;
111
+ getItemProps: (userProps?: React.HTMLProps<HTMLElement> | undefined) => Record<string, unknown>;
112
+ open: boolean | undefined;
113
+ onOpenChange: React.Dispatch<React.SetStateAction<boolean | undefined>>;
38
114
  };
115
+ type PopoverPublicProps = {
116
+ content?: React.ReactNode;
117
+ children?: React.ReactNode;
118
+ applyBackground?: boolean;
119
+ } & PortalProps & PopoverOptions;
120
+ /**
121
+ * A utility component to help with positioning of floating content.
122
+ * Built on top of [`floating-ui`](https://floating-ui.com/)
123
+ */
124
+ export declare const Popover: PolymorphicForwardRefComponent<"div", PopoverPublicProps>;
39
125
  export default Popover;
@@ -3,126 +3,183 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as React from 'react';
6
- import cx from 'classnames';
7
- import Tippy from '@tippyjs/react';
8
- import { useMergedRefs, useIsClient } from '../hooks/index.js';
9
- import { ThemeContext } from '../../ThemeProvider/ThemeContext.js';
10
- /**
11
- * Wrapper around [tippy.js](https://atomiks.github.io/tippyjs)
12
- * with pre-configured props and plugins (e.g. lazy mounting, focus, etc).
13
- * @private
14
- */
15
- export const Popover = React.forwardRef((props, ref) => {
16
- const [mounted, setMounted] = React.useState(false);
17
- const themeInfo = React.useContext(ThemeContext);
18
- const isDomAvailable = useIsClient();
19
- const tippyRef = React.useRef(null);
20
- const refs = useMergedRefs(tippyRef, ref);
21
- // Plugin to allow lazy mounting. See https://github.com/atomiks/tippyjs-react#lazy-mounting
22
- const lazyLoad = {
23
- fn: () => ({
24
- onShow: () => setMounted(true),
25
- onHidden: () => setMounted(false),
26
- }),
27
- };
28
- // Plugin to remove tabindex from tippy, to prevent focus ring from unintentionally showing.
29
- const removeTabIndex = {
30
- fn: () => ({
31
- onCreate: (instance) => {
32
- instance.popper.firstElementChild?.removeAttribute('tabindex');
33
- },
6
+ import {
7
+ useFloating,
8
+ useClick,
9
+ useDismiss,
10
+ useInteractions,
11
+ size,
12
+ autoUpdate,
13
+ offset,
14
+ flip,
15
+ shift,
16
+ autoPlacement,
17
+ inline,
18
+ hide,
19
+ FloatingFocusManager,
20
+ useHover,
21
+ useFocus,
22
+ safePolygon,
23
+ useRole,
24
+ } from '@floating-ui/react';
25
+ import {
26
+ Box,
27
+ cloneElementWithRef,
28
+ useControlledState,
29
+ useMergedRefs,
30
+ } from '../index.js';
31
+ import { Portal } from './Portal.js';
32
+ import { Surface } from '../../Surface/index.js';
33
+ import { ThemeProvider } from '../../ThemeProvider/index.js';
34
+ // ----------------------------------------------------------------------------
35
+ export const usePopover = (options) => {
36
+ const {
37
+ placement = 'bottom-start',
38
+ visible,
39
+ onVisibleChange,
40
+ closeOnOutsideClick,
41
+ autoUpdateOptions,
42
+ middleware = { flip: true, shift: true },
43
+ matchWidth,
44
+ trigger = { click: true, hover: false, focus: false },
45
+ role,
46
+ } = options;
47
+ const [open, onOpenChange] = useControlledState(
48
+ false,
49
+ visible,
50
+ onVisibleChange,
51
+ );
52
+ const floating = useFloating({
53
+ placement,
54
+ open,
55
+ onOpenChange,
56
+ whileElementsMounted: (...args) => autoUpdate(...args, autoUpdateOptions),
57
+ middleware: [
58
+ middleware.offset !== undefined && offset(middleware.offset),
59
+ middleware.flip && flip(),
60
+ middleware.shift && shift(),
61
+ matchWidth &&
62
+ size({
63
+ apply: ({ rects }) => {
64
+ setReferenceWidth(rects.reference.width);
65
+ },
66
+ }),
67
+ middleware.autoPlacement && autoPlacement(),
68
+ middleware.inline && inline(),
69
+ middleware.hide && hide(),
70
+ ].filter(Boolean),
71
+ });
72
+ const interactions = useInteractions([
73
+ useClick(floating.context, { enabled: !!trigger.click }),
74
+ useDismiss(floating.context, { outsidePress: closeOnOutsideClick }),
75
+ useHover(floating.context, {
76
+ enabled: !!trigger.hover,
77
+ delay: 100,
78
+ handleClose: safePolygon({ buffer: 1 }),
34
79
  }),
35
- };
36
- const computedProps = {
37
- allowHTML: true,
38
- animation: false,
39
- appendTo: (el) => themeInfo?.portalContainer || el.ownerDocument.body,
40
- arrow: false,
41
- duration: 0,
42
- interactive: true,
43
- role: '',
44
- offset: [0, 0],
45
- maxWidth: '',
46
- zIndex: 99999,
47
- ...props,
48
- className: cx('iui-popover', props.className),
49
- // add additional check for isDomAvailable when using in controlled mode,
50
- // because rootRef is not available in first render
51
- visible:
52
- props.visible !== undefined ? props.visible && isDomAvailable : undefined,
53
- plugins: [
54
- lazyLoad,
55
- removeTabIndex,
56
- hideOnEscOrTab,
57
- ...(props.plugins || []),
58
- ],
59
- popperOptions: {
60
- strategy: 'fixed',
61
- ...props.popperOptions,
62
- modifiers: [
63
- { name: 'flip' },
64
- {
65
- name: 'preventOverflow',
66
- options: { padding: 0 },
80
+ useFocus(floating.context, { enabled: !!trigger.focus }),
81
+ useRole(floating.context, { role: 'dialog', enabled: !!role }),
82
+ ]);
83
+ const [referenceWidth, setReferenceWidth] = React.useState();
84
+ const getFloatingProps = React.useCallback(
85
+ (userProps) =>
86
+ interactions.getFloatingProps({
87
+ ...userProps,
88
+ style: {
89
+ ...floating.floatingStyles,
90
+ zIndex: 9999,
91
+ ...(matchWidth && referenceWidth
92
+ ? {
93
+ minInlineSize: `${referenceWidth}px`,
94
+ maxInlineSize: `min(${referenceWidth * 2}px, 90vw)`,
95
+ }
96
+ : {}),
97
+ ...userProps?.style,
67
98
  },
68
- ...(props.popperOptions?.modifiers || []),
69
- ],
70
- },
71
- };
72
- if (props.render) {
73
- const render = props.render;
74
- computedProps.render = (...args) => (mounted ? render(...args) : '');
75
- } else {
76
- // Fixing issue where elements below Popover gets click events.
77
- // Tippy uses react Portal, which propagates events by react tree, not dom tree.
78
- // Read more: https://reactjs.org/docs/portals.html#event-bubbling-through-portals
79
- const clonedContent = React.isValidElement(props.content)
80
- ? React.cloneElement(props.content, {
81
- onClick: (e) => {
82
- e.stopPropagation();
83
- props.content.props.onClick?.(e);
84
- },
85
- })
86
- : props.content;
87
- computedProps.content = mounted ? clonedContent : '';
88
- }
89
- return React.createElement(Tippy, { ...computedProps, ref: refs });
90
- });
99
+ }),
100
+ [floating.floatingStyles, interactions, matchWidth, referenceWidth],
101
+ );
102
+ return React.useMemo(
103
+ () => ({
104
+ open,
105
+ onOpenChange,
106
+ ...interactions,
107
+ getFloatingProps,
108
+ ...floating,
109
+ }),
110
+ [open, onOpenChange, interactions, getFloatingProps, floating],
111
+ );
112
+ };
91
113
  /**
92
- * Plugin to hide Popover when either Esc key is pressed,
93
- * or when the content inside is not tabbable and Tab key is pressed.
114
+ * A utility component to help with positioning of floating content.
115
+ * Built on top of [`floating-ui`](https://floating-ui.com/)
94
116
  */
95
- export const hideOnEscOrTab = {
96
- fn(instance) {
97
- /** @returns true if none of the children are tabbable */
98
- const shouldHideOnTab = () => {
99
- const descendents = Array.from(instance.popper.querySelectorAll('*'));
100
- return !descendents.some((el) => el?.tabIndex >= 0);
101
- };
102
- const onKeyDown = (event) => {
103
- if (event.altKey) {
104
- return;
105
- }
106
- switch (event.key) {
107
- case 'Escape':
108
- instance.hide();
109
- break;
110
- case 'Tab':
111
- if (shouldHideOnTab()) {
112
- event.shiftKey && event.preventDefault(); // focus popover target on Shift+Tab
113
- instance.hide();
114
- }
115
- break;
116
- }
117
- };
118
- return {
119
- onShow() {
120
- instance.popper.addEventListener('keydown', onKeyDown);
121
- },
122
- onHide() {
123
- instance.popper.removeEventListener('keydown', onKeyDown);
124
- },
125
- };
126
- },
127
- };
117
+ export const Popover = React.forwardRef((props, forwardedRef) => {
118
+ const {
119
+ portal = true,
120
+ //
121
+ // popover options
122
+ visible,
123
+ placement,
124
+ onVisibleChange,
125
+ closeOnOutsideClick,
126
+ matchWidth,
127
+ //
128
+ // dom props
129
+ children,
130
+ content,
131
+ applyBackground,
132
+ ...rest
133
+ } = props;
134
+ const popover = usePopover({
135
+ visible,
136
+ placement,
137
+ onVisibleChange,
138
+ closeOnOutsideClick,
139
+ matchWidth,
140
+ role: 'dialog',
141
+ });
142
+ const [popoverElement, setPopoverElement] = React.useState();
143
+ const popoverRef = useMergedRefs(
144
+ popover.refs.setFloating,
145
+ forwardedRef,
146
+ setPopoverElement,
147
+ );
148
+ return React.createElement(
149
+ React.Fragment,
150
+ null,
151
+ cloneElementWithRef(children, (children) => ({
152
+ ...popover.getReferenceProps(children.props),
153
+ ref: popover.refs.setReference,
154
+ })),
155
+ popover.open
156
+ ? React.createElement(
157
+ Portal,
158
+ { portal: portal },
159
+ React.createElement(
160
+ ThemeProvider,
161
+ { portalContainer: popoverElement },
162
+ React.createElement(
163
+ FloatingFocusManager,
164
+ {
165
+ context: popover.context,
166
+ modal: false,
167
+ initialFocus: -1,
168
+ returnFocus: true,
169
+ },
170
+ React.createElement(
171
+ Box,
172
+ {
173
+ as: applyBackground ? Surface : 'div',
174
+ ...popover.getFloatingProps(rest),
175
+ ref: popoverRef,
176
+ },
177
+ content,
178
+ ),
179
+ ),
180
+ ),
181
+ )
182
+ : null,
183
+ );
184
+ });
128
185
  export default Popover;
package/esm/styles.js CHANGED
@@ -218,10 +218,10 @@ const styles = {
218
218
  'iui-overlay-exiting': '_iui3-overlay-exiting',
219
219
  closeAnimation,
220
220
  'iui-progress-indicator-radial': '_iui3-progress-indicator-radial',
221
- 'iui-ubn95wp': '_iui3-ubn95wp',
221
+ 'iui-ugj3ux4': '_iui3-ugj3ux4',
222
222
  'iui-progress-indicator-linear-label':
223
223
  '_iui3-progress-indicator-linear-label',
224
- 'iui-ubn95xj': '_iui3-ubn95xj',
224
+ 'iui-ugj3uxq': '_iui3-ugj3uxq',
225
225
  'iui-radio': '_iui3-radio',
226
226
  'iui-radio-tile': '_iui3-radio-tile',
227
227
  'iui-radio-tile-icon': '_iui3-radio-tile-icon',
@@ -416,9 +416,6 @@ const styles = {
416
416
  'iui-svg-icon': '_iui3-svg-icon',
417
417
  'iui-notification-marker': '_iui3-notification-marker',
418
418
  pulse,
419
- 'iui-popover': '_iui3-popover',
420
- 'tippy-box': '_iui3-tippy-box',
421
- 'tippy-content': '_iui3-tippy-content',
422
419
  'iui-divider': '_iui3-divider',
423
420
  'iui-flex': '_iui3-flex',
424
421
  'iui-flex-spacer': '_iui3-flex-spacer',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/itwinui-react",
3
- "version": "3.0.0-dev.8",
3
+ "version": "3.0.0-dev.9",
4
4
  "author": "Bentley Systems",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -73,13 +73,11 @@
73
73
  "dev:styles": "yarn build:styles --watch"
74
74
  },
75
75
  "dependencies": {
76
- "@floating-ui/react": "^0.25.2",
77
- "@tippyjs/react": "^4.2.6",
76
+ "@floating-ui/react": "^0.25.3",
78
77
  "@types/react-table": "^7.0.18",
79
78
  "classnames": "^2.2.6",
80
79
  "react-table": "^7.1.0",
81
80
  "react-transition-group": "^4.4.2",
82
- "tippy.js": "^6.3.7",
83
81
  "tslib": "^2.6.0"
84
82
  },
85
83
  "devDependencies": {
package/styles.css CHANGED
@@ -689,14 +689,14 @@
689
689
  }
690
690
 
691
691
  @layer itwinui.v3{
692
- ._iui3-progress-indicator-radial :is(svg,img){inline-size:var(--iui-size-m);block-size:var(--iui-size-m);fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-progress-indicator-radial[data-iui-status=positive]{color:var(--iui-color-text-positive)}._iui3-progress-indicator-radial[data-iui-status=positive]:after{background-color:var(--iui-color-border-positive)}._iui3-progress-indicator-radial[data-iui-status=positive] :is(svg,img){fill:var(--iui-color-border-positive)}._iui3-progress-indicator-radial[data-iui-status=negative]{color:var(--iui-color-text-negative)}._iui3-progress-indicator-radial[data-iui-status=negative]:after{background-color:var(--iui-color-border-negative)}._iui3-progress-indicator-radial[data-iui-status=negative] :is(svg,img){fill:var(--iui-color-border-negative)}._iui3-progress-indicator-radial[data-iui-size=x-small]{--_iui-progress-indicator-radial-size:var(--iui-size-m)}._iui3-progress-indicator-radial[data-iui-size=x-small]:before,._iui3-progress-indicator-radial[data-iui-size=x-small]:after{border-width:var(--iui-size-3xs)}._iui3-progress-indicator-radial[data-iui-size=x-small]>*{display:none}._iui3-progress-indicator-radial[data-iui-size=small]{--_iui-progress-indicator-radial-size:calc(1.5*var(--iui-size-m))}._iui3-progress-indicator-radial[data-iui-size=small]:before,._iui3-progress-indicator-radial[data-iui-size=small]:after{border-width:calc(var(--iui-size-3xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large]{--_iui-progress-indicator-radial-size:calc(3*var(--iui-size-m));font-size:var(--iui-font-size-2)}._iui3-progress-indicator-radial[data-iui-size=large]:before,._iui3-progress-indicator-radial[data-iui-size=large]:after{border-width:calc(var(--iui-size-2xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large] :is(svg,img){inline-size:calc(1.5*var(--iui-size-m));block-size:calc(1.5*var(--iui-size-m));flex-shrink:0;display:flex}._iui3-progress-indicator-radial:where(:not([data-iui-indeterminate=true])):after{-webkit-mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0);mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0)}._iui3-progress-indicator-radial:where([data-iui-indeterminate=true]):after{animation:.8s cubic-bezier(.6,.4,.4,.6) infinite _iui3-ubn95wp;-webkit-mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0);mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0)}@keyframes _iui3-ubn95wp{to{transform:rotate(360deg)}}._iui3-progress-indicator-linear-label{font-size:var(--iui-font-size-0);color:var(--_iui-progress-indicator-linear-label-color);--iui-svg-fill:var(--_iui-progress-indicator-linear-label-fill);justify-content:space-between;align-items:center;display:flex}._iui3-progress-indicator-linear-label>:only-child{margin-inline:auto}._iui3-progress-indicator-linear{gap:var(--iui-size-2xs);display:grid}._iui3-progress-indicator-linear:before{content:"";block-size:var(--iui-size-2xs);background-color:var(--iui-color-border);background-image:linear-gradient(90deg,var(--_iui-progress-indicator-track-fill,var(--iui-color-border-accent))0% 100%);background-repeat:no-repeat;background-size:var(--iui-progress-percentage,100%)100%;forced-color-adjust:none}
692
+ ._iui3-progress-indicator-radial :is(svg,img){inline-size:var(--iui-size-m);block-size:var(--iui-size-m);fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-progress-indicator-radial[data-iui-status=positive]{color:var(--iui-color-text-positive)}._iui3-progress-indicator-radial[data-iui-status=positive]:after{background-color:var(--iui-color-border-positive)}._iui3-progress-indicator-radial[data-iui-status=positive] :is(svg,img){fill:var(--iui-color-border-positive)}._iui3-progress-indicator-radial[data-iui-status=negative]{color:var(--iui-color-text-negative)}._iui3-progress-indicator-radial[data-iui-status=negative]:after{background-color:var(--iui-color-border-negative)}._iui3-progress-indicator-radial[data-iui-status=negative] :is(svg,img){fill:var(--iui-color-border-negative)}._iui3-progress-indicator-radial[data-iui-size=x-small]{--_iui-progress-indicator-radial-size:var(--iui-size-m)}._iui3-progress-indicator-radial[data-iui-size=x-small]:before,._iui3-progress-indicator-radial[data-iui-size=x-small]:after{border-width:var(--iui-size-3xs)}._iui3-progress-indicator-radial[data-iui-size=x-small]>*{display:none}._iui3-progress-indicator-radial[data-iui-size=small]{--_iui-progress-indicator-radial-size:calc(1.5*var(--iui-size-m))}._iui3-progress-indicator-radial[data-iui-size=small]:before,._iui3-progress-indicator-radial[data-iui-size=small]:after{border-width:calc(var(--iui-size-3xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large]{--_iui-progress-indicator-radial-size:calc(3*var(--iui-size-m));font-size:var(--iui-font-size-2)}._iui3-progress-indicator-radial[data-iui-size=large]:before,._iui3-progress-indicator-radial[data-iui-size=large]:after{border-width:calc(var(--iui-size-2xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large] :is(svg,img){inline-size:calc(1.5*var(--iui-size-m));block-size:calc(1.5*var(--iui-size-m));flex-shrink:0;display:flex}._iui3-progress-indicator-radial:where(:not([data-iui-indeterminate=true])):after{-webkit-mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0);mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0)}._iui3-progress-indicator-radial:where([data-iui-indeterminate=true]):after{animation:.8s cubic-bezier(.6,.4,.4,.6) infinite _iui3-ugj3ux4;-webkit-mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0);mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0)}@keyframes _iui3-ugj3ux4{to{transform:rotate(360deg)}}._iui3-progress-indicator-linear-label{font-size:var(--iui-font-size-0);color:var(--_iui-progress-indicator-linear-label-color);--iui-svg-fill:var(--_iui-progress-indicator-linear-label-fill);justify-content:space-between;align-items:center;display:flex}._iui3-progress-indicator-linear-label>:only-child{margin-inline:auto}._iui3-progress-indicator-linear{gap:var(--iui-size-2xs);display:grid}._iui3-progress-indicator-linear:before{content:"";block-size:var(--iui-size-2xs);background-color:var(--iui-color-border);background-image:linear-gradient(90deg,var(--_iui-progress-indicator-track-fill,var(--iui-color-border-accent))0% 100%);background-repeat:no-repeat;background-size:var(--iui-progress-percentage,100%)100%;forced-color-adjust:none}
693
693
  }
694
694
 
695
695
  @layer itwinui.v3{@media (forced-colors:active){._iui3-progress-indicator-linear:before{background-color:#0000;background-image:linear-gradient(90deg,CanvasText 0% 100%);border:.5px solid}}
696
696
  }
697
697
 
698
698
  @layer itwinui.v3{
699
- ._iui3-progress-indicator-linear[data-iui-status=positive]{--_iui-progress-indicator-track-fill:var(--iui-color-border-positive);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-positive);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-positive)}._iui3-progress-indicator-linear[data-iui-status=positive]::selection,._iui3-progress-indicator-linear[data-iui-status=positive] ::selection{background-color:hsl(var(--iui-color-positive-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear[data-iui-status=negative]{--_iui-progress-indicator-track-fill:var(--iui-color-border-negative);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-negative);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-negative)}._iui3-progress-indicator-linear[data-iui-status=negative]::selection,._iui3-progress-indicator-linear[data-iui-status=negative] ::selection{background-color:hsl(var(--iui-color-negative-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear:where([data-iui-animated=true]:not([data-iui-indeterminate=true])):before{transition:background-size 1s ease-in-out}._iui3-progress-indicator-linear:where([data-iui-indeterminate=true]):before{animation:1.5s linear infinite _iui3-ubn95xj}@keyframes _iui3-ubn95xj{0%{background-position:-60% 0;background-size:30% 100%}40%{background-position:-40% 0;background-size:40% 100%}to{background-position:200% 0;background-size:50% 100%}}._iui3-radio-wrapper{vertical-align:baseline;font-size:var(--iui-font-size-1);-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--iui-color-text);align-items:center;gap:var(--iui-size-xs);border:none;inline-size:-moz-fit-content;inline-size:fit-content;margin:0;padding:0;display:flex;position:relative}._iui3-radio-wrapper._iui3-loading{cursor:progress;color:var(--iui-color-text-disabled);font-style:italic}._iui3-radio-wrapper>._iui3-checkbox-label,._iui3-radio-wrapper>._iui3-radio-label{line-height:var(--iui-size-l)}._iui3-radio-wrapper>._iui3-checkbox-label svg,._iui3-radio-wrapper>._iui3-radio-label svg{inline-size:var(--iui-size-m);block-size:var(--iui-size-m);vertical-align:middle;fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-radio-wrapper._iui3-disabled{cursor:not-allowed;color:var(--iui-color-text-disabled)}._iui3-radio-wrapper._iui3-disabled svg{fill:var(--iui-color-icon-disabled)}._iui3-radio-wrapper._iui3-positive{color:var(--iui-color-text-positive)}._iui3-radio-wrapper._iui3-warning{color:var(--iui-color-text-warning)}._iui3-radio-wrapper._iui3-negative{color:var(--iui-color-text-negative)}._iui3-radio{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m6.5 12.5-4.5-4.5 1.5-1.5 3 3 6-6 1.5 1.5z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m2.75 6.875h10.5v2.25h-10.5z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg viewBox=\"0 0 16 16\"></svg>");--_iui-checkbox-svg-color:var(--iui-color-icon-accent);--_iui-checkbox-border-color:var(--iui-color-border-foreground);--_iui-checkbox-background-color:var(--iui-color-background);--_iui-checkbox-mask-image:initial;inline-size:var(--iui-size-m);block-size:var(--iui-size-m);appearance:none;border-radius:var(--iui-border-radius-1);background-color:var(--_iui-checkbox-background-color);cursor:pointer;transition:outline-color var(--iui-duration-1)ease-out;outline:solid 1px var(--_iui-checkbox-border-color);outline-offset:-1px;border-radius:50%;flex-shrink:0;margin:0;display:flex;position:relative}._iui3-radio:before{content:"";inset:calc((var(--iui-checkbox-target-size,24px) - 16px)/-2);position:absolute}._iui3-radio:after{content:"";background-color:var(--_iui-checkbox-svg-color);-webkit-mask:var(--_iui-checkbox-mask-image)no-repeat center;mask:var(--_iui-checkbox-mask-image)no-repeat center;position:absolute;inset:0}._iui3-radio:not(:checked){--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-indeterminate-svg)}._iui3-radio:hover{--_iui-checkbox-border-color:var(--iui-color-border-foreground-hover)}._iui3-radio:focus-visible{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}@supports not selector(*:focus-visible){._iui3-radio:focus{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}}._iui3-radio:disabled{--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-border-color:var(--iui-color-border-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled);cursor:not-allowed}._iui3-radio._iui3-checkbox-visibility{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 2.99051a8.81883 8.81883 0 0 0 -8 4.95062 8.74664 8.74664 0 0 0 8 5.06836 8.63266 8.63266 0 0 0 8-5.06836 8.83631 8.83631 0 0 0 -8-4.95062zm-1.31445 1.86981a1.47663 1.47663 0 1 1 -1.47663 1.47668 1.47665 1.47665 0 0 1 1.47663-1.47668zm1.31445 6.64917a7.17486 7.17486 0 0 1 -6.30475-3.55237 7.4952 7.4952 0 0 1 2.81475-2.6336 3.83956 3.83956 0 1 0 6.98126.00244 7.522 7.522 0 0 1 2.81774 2.63916 7.09785 7.09785 0 0 1 -6.309 3.54437z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 3v7.9a4.01179 4.01179 0 0 0 4-4 6.7509 6.7509 0 0 0 -.2-1.4l.1.1a6.89429 6.89429 0 0 1 2.4 2.4 8.39088 8.39088 0 0 1 -2.3 2.3 6.89412 6.89412 0 0 1 -3.9 1.2c-.03345 0-.06653-.00677-.1-.0072v1.5072a8.90686 8.90686 0 0 0 8-5 8.90686 8.90686 0 0 0 -8-5z\" opacity=\".33\" /><path d=\"m8 0a1 1 0 0 0 -1 1v2.07135a8.91637 8.91637 0 0 0 -7 4.92865 8.91637 8.91637 0 0 0 7 4.92865v2.07135a1 1 0 0 0 2 0v-14a1 1 0 0 0 -1-1zm-1.5 4.9a1.55426 1.55426 0 0 1 .5.087v2.81451a1.40746 1.40746 0 0 1 -.5.09849 1.538 1.538 0 0 1 -1.5-1.5 1.53794 1.53794 0 0 1 1.5-1.5zm-2.3 5.4a6.97279 6.97279 0 0 1 -2.5-2.3 6.89429 6.89429 0 0 1 2.4-2.4c.1 0 .1-.1.2-.1a3.194 3.194 0 0 0 -.3 1.4 4.0047 4.0047 0 0 0 3 3.857v.65289a6.37491 6.37491 0 0 1 -2.8-1.10989z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m1.70671 12.879 11.17218-11.17219 1.4142 1.4142-11.17218 11.17218zm.99329-1.679 1.1-1.1a5.06317 5.06317 0 0 1 -2-2.1 7.48268 7.48268 0 0 1 6.2-3.5 4.86877 4.86877 0 0 1 1.2.1l1.3-1.3a10.07431 10.07431 0 0 0 -2.5-.3 8.84129 8.84129 0 0 0 -8 5 8.42455 8.42455 0 0 0 2.7 3.2zm10.7-6.4-1.1 1.1a7.08625 7.08625 0 0 1 2 2.1 7.50323 7.50323 0 0 1 -6.2 3.5 8.31665 8.31665 0 0 1 -1.3-.2l-1.3 1.3a8.909 8.909 0 0 0 6.4-.5 9.04344 9.04344 0 0 0 4.1-4.1 9.168 9.168 0 0 0 -2.6-3.2z\" /></svg>");--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;outline-width:1px}._iui3-radio._iui3-checkbox-visibility:where(:not(:checked):not(:indeterminate)){--_iui-checkbox-svg-color:var(--iui-color-icon)}._iui3-radio._iui3-checkbox-visibility:where(:hover){--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:var(--iui-color-background-transparent-hover)}._iui3-radio._iui3-checkbox-visibility:where(:disabled){--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled)}._iui3-radio._iui3-loading{--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;opacity:0;cursor:wait;position:absolute}._iui3-radio:checked{--_iui-checkbox-mask-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><circle cx=\"8\" cy=\"8\" r=\"4\" /></svg>")}._iui3-radio:not(:checked),._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio-tile{-webkit-tap-highlight-color:hsl(var(--iui-color-accent-hsl)/var(--iui-opacity-6));inline-size:calc(var(--iui-size-xl)*5);padding:var(--iui-size-xs);z-index:1;outline:1px solid var(--iui-color-border);background-color:var(--iui-color-background);transition:outline-color var(--iui-duration-1)ease-out;align-content:center;justify-items:center;display:grid;position:relative}._iui3-radio-tile:where(:hover){z-index:2;outline-color:var(--iui-color-border-hover)}._iui3-radio-tile:where(:hover) ._iui3-radio-tile-icon svg{fill:var(--iui-color-icon-hover)}._iui3-radio-tile:where(:has(input:disabled),[data-iui-disabled=true]){outline-color:var(--iui-color-border-disabled);background-color:var(--iui-color-background-disabled)}._iui3-radio-tile-container{-webkit-user-select:none;user-select:none;isolation:isolate;flex-wrap:wrap;gap:1px;display:inline-flex;position:relative}._iui3-radio-tile-input{z-index:1;appearance:none;cursor:pointer;margin:0;position:absolute;inset:0}._iui3-radio-tile-input:checked{z-index:3;outline:2px solid var(--iui-color-border-accent);outline-offset:-2px}
699
+ ._iui3-progress-indicator-linear[data-iui-status=positive]{--_iui-progress-indicator-track-fill:var(--iui-color-border-positive);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-positive);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-positive)}._iui3-progress-indicator-linear[data-iui-status=positive]::selection,._iui3-progress-indicator-linear[data-iui-status=positive] ::selection{background-color:hsl(var(--iui-color-positive-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear[data-iui-status=negative]{--_iui-progress-indicator-track-fill:var(--iui-color-border-negative);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-negative);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-negative)}._iui3-progress-indicator-linear[data-iui-status=negative]::selection,._iui3-progress-indicator-linear[data-iui-status=negative] ::selection{background-color:hsl(var(--iui-color-negative-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear:where([data-iui-animated=true]:not([data-iui-indeterminate=true])):before{transition:background-size 1s ease-in-out}._iui3-progress-indicator-linear:where([data-iui-indeterminate=true]):before{animation:1.5s linear infinite _iui3-ugj3uxq}@keyframes _iui3-ugj3uxq{0%{background-position:-60% 0;background-size:30% 100%}40%{background-position:-40% 0;background-size:40% 100%}to{background-position:200% 0;background-size:50% 100%}}._iui3-radio-wrapper{vertical-align:baseline;font-size:var(--iui-font-size-1);-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--iui-color-text);align-items:center;gap:var(--iui-size-xs);border:none;inline-size:-moz-fit-content;inline-size:fit-content;margin:0;padding:0;display:flex;position:relative}._iui3-radio-wrapper._iui3-loading{cursor:progress;color:var(--iui-color-text-disabled);font-style:italic}._iui3-radio-wrapper>._iui3-checkbox-label,._iui3-radio-wrapper>._iui3-radio-label{line-height:var(--iui-size-l)}._iui3-radio-wrapper>._iui3-checkbox-label svg,._iui3-radio-wrapper>._iui3-radio-label svg{inline-size:var(--iui-size-m);block-size:var(--iui-size-m);vertical-align:middle;fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-radio-wrapper._iui3-disabled{cursor:not-allowed;color:var(--iui-color-text-disabled)}._iui3-radio-wrapper._iui3-disabled svg{fill:var(--iui-color-icon-disabled)}._iui3-radio-wrapper._iui3-positive{color:var(--iui-color-text-positive)}._iui3-radio-wrapper._iui3-warning{color:var(--iui-color-text-warning)}._iui3-radio-wrapper._iui3-negative{color:var(--iui-color-text-negative)}._iui3-radio{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m6.5 12.5-4.5-4.5 1.5-1.5 3 3 6-6 1.5 1.5z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m2.75 6.875h10.5v2.25h-10.5z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg viewBox=\"0 0 16 16\"></svg>");--_iui-checkbox-svg-color:var(--iui-color-icon-accent);--_iui-checkbox-border-color:var(--iui-color-border-foreground);--_iui-checkbox-background-color:var(--iui-color-background);--_iui-checkbox-mask-image:initial;inline-size:var(--iui-size-m);block-size:var(--iui-size-m);appearance:none;border-radius:var(--iui-border-radius-1);background-color:var(--_iui-checkbox-background-color);cursor:pointer;transition:outline-color var(--iui-duration-1)ease-out;outline:solid 1px var(--_iui-checkbox-border-color);outline-offset:-1px;border-radius:50%;flex-shrink:0;margin:0;display:flex;position:relative}._iui3-radio:before{content:"";inset:calc((var(--iui-checkbox-target-size,24px) - 16px)/-2);position:absolute}._iui3-radio:after{content:"";background-color:var(--_iui-checkbox-svg-color);-webkit-mask:var(--_iui-checkbox-mask-image)no-repeat center;mask:var(--_iui-checkbox-mask-image)no-repeat center;position:absolute;inset:0}._iui3-radio:not(:checked){--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-indeterminate-svg)}._iui3-radio:hover{--_iui-checkbox-border-color:var(--iui-color-border-foreground-hover)}._iui3-radio:focus-visible{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}@supports not selector(*:focus-visible){._iui3-radio:focus{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}}._iui3-radio:disabled{--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-border-color:var(--iui-color-border-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled);cursor:not-allowed}._iui3-radio._iui3-checkbox-visibility{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 2.99051a8.81883 8.81883 0 0 0 -8 4.95062 8.74664 8.74664 0 0 0 8 5.06836 8.63266 8.63266 0 0 0 8-5.06836 8.83631 8.83631 0 0 0 -8-4.95062zm-1.31445 1.86981a1.47663 1.47663 0 1 1 -1.47663 1.47668 1.47665 1.47665 0 0 1 1.47663-1.47668zm1.31445 6.64917a7.17486 7.17486 0 0 1 -6.30475-3.55237 7.4952 7.4952 0 0 1 2.81475-2.6336 3.83956 3.83956 0 1 0 6.98126.00244 7.522 7.522 0 0 1 2.81774 2.63916 7.09785 7.09785 0 0 1 -6.309 3.54437z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 3v7.9a4.01179 4.01179 0 0 0 4-4 6.7509 6.7509 0 0 0 -.2-1.4l.1.1a6.89429 6.89429 0 0 1 2.4 2.4 8.39088 8.39088 0 0 1 -2.3 2.3 6.89412 6.89412 0 0 1 -3.9 1.2c-.03345 0-.06653-.00677-.1-.0072v1.5072a8.90686 8.90686 0 0 0 8-5 8.90686 8.90686 0 0 0 -8-5z\" opacity=\".33\" /><path d=\"m8 0a1 1 0 0 0 -1 1v2.07135a8.91637 8.91637 0 0 0 -7 4.92865 8.91637 8.91637 0 0 0 7 4.92865v2.07135a1 1 0 0 0 2 0v-14a1 1 0 0 0 -1-1zm-1.5 4.9a1.55426 1.55426 0 0 1 .5.087v2.81451a1.40746 1.40746 0 0 1 -.5.09849 1.538 1.538 0 0 1 -1.5-1.5 1.53794 1.53794 0 0 1 1.5-1.5zm-2.3 5.4a6.97279 6.97279 0 0 1 -2.5-2.3 6.89429 6.89429 0 0 1 2.4-2.4c.1 0 .1-.1.2-.1a3.194 3.194 0 0 0 -.3 1.4 4.0047 4.0047 0 0 0 3 3.857v.65289a6.37491 6.37491 0 0 1 -2.8-1.10989z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m1.70671 12.879 11.17218-11.17219 1.4142 1.4142-11.17218 11.17218zm.99329-1.679 1.1-1.1a5.06317 5.06317 0 0 1 -2-2.1 7.48268 7.48268 0 0 1 6.2-3.5 4.86877 4.86877 0 0 1 1.2.1l1.3-1.3a10.07431 10.07431 0 0 0 -2.5-.3 8.84129 8.84129 0 0 0 -8 5 8.42455 8.42455 0 0 0 2.7 3.2zm10.7-6.4-1.1 1.1a7.08625 7.08625 0 0 1 2 2.1 7.50323 7.50323 0 0 1 -6.2 3.5 8.31665 8.31665 0 0 1 -1.3-.2l-1.3 1.3a8.909 8.909 0 0 0 6.4-.5 9.04344 9.04344 0 0 0 4.1-4.1 9.168 9.168 0 0 0 -2.6-3.2z\" /></svg>");--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;outline-width:1px}._iui3-radio._iui3-checkbox-visibility:where(:not(:checked):not(:indeterminate)){--_iui-checkbox-svg-color:var(--iui-color-icon)}._iui3-radio._iui3-checkbox-visibility:where(:hover){--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:var(--iui-color-background-transparent-hover)}._iui3-radio._iui3-checkbox-visibility:where(:disabled){--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled)}._iui3-radio._iui3-loading{--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;opacity:0;cursor:wait;position:absolute}._iui3-radio:checked{--_iui-checkbox-mask-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><circle cx=\"8\" cy=\"8\" r=\"4\" /></svg>")}._iui3-radio:not(:checked),._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio-tile{-webkit-tap-highlight-color:hsl(var(--iui-color-accent-hsl)/var(--iui-opacity-6));inline-size:calc(var(--iui-size-xl)*5);padding:var(--iui-size-xs);z-index:1;outline:1px solid var(--iui-color-border);background-color:var(--iui-color-background);transition:outline-color var(--iui-duration-1)ease-out;align-content:center;justify-items:center;display:grid;position:relative}._iui3-radio-tile:where(:hover){z-index:2;outline-color:var(--iui-color-border-hover)}._iui3-radio-tile:where(:hover) ._iui3-radio-tile-icon svg{fill:var(--iui-color-icon-hover)}._iui3-radio-tile:where(:has(input:disabled),[data-iui-disabled=true]){outline-color:var(--iui-color-border-disabled);background-color:var(--iui-color-background-disabled)}._iui3-radio-tile-container{-webkit-user-select:none;user-select:none;isolation:isolate;flex-wrap:wrap;gap:1px;display:inline-flex;position:relative}._iui3-radio-tile-input{z-index:1;appearance:none;cursor:pointer;margin:0;position:absolute;inset:0}._iui3-radio-tile-input:checked{z-index:3;outline:2px solid var(--iui-color-border-accent);outline-offset:-2px}
700
700
  }
701
701
 
702
702
  @layer itwinui.v3{@media (forced-colors:active){._iui3-radio-tile-input:checked{outline-color:Highlight}}
@@ -1067,7 +1067,7 @@
1067
1067
  }
1068
1068
 
1069
1069
  @layer itwinui.v3{
1070
- ._iui3-notification-marker[data-iui-variant=positive]{--_iui-notification-marker-color:var(--iui-color-icon-positive)}._iui3-notification-marker[data-iui-variant=warning]{--_iui-notification-marker-color:var(--iui-color-icon-warning)}._iui3-notification-marker[data-iui-variant=negative]{--_iui-notification-marker-color:var(--iui-color-icon-negative)}._iui3-notification-marker[data-iui-variant=white]{--_iui-notification-marker-color:var(--iui-color-white)}._iui3-popover._iui3-tippy-box{all:revert}._iui3-popover._iui3-tippy-box[data-reference-hidden]{visibility:hidden;pointer-events:none}._iui3-popover ._iui3-tippy-content{all:revert}._iui3-divider{background-color:var(--iui-color-border-subtle);flex:none;align-self:stretch}
1070
+ ._iui3-notification-marker[data-iui-variant=positive]{--_iui-notification-marker-color:var(--iui-color-icon-positive)}._iui3-notification-marker[data-iui-variant=warning]{--_iui-notification-marker-color:var(--iui-color-icon-warning)}._iui3-notification-marker[data-iui-variant=negative]{--_iui-notification-marker-color:var(--iui-color-icon-negative)}._iui3-notification-marker[data-iui-variant=white]{--_iui-notification-marker-color:var(--iui-color-white)}._iui3-divider{background-color:var(--iui-color-border-subtle);flex:none;align-self:stretch}
1071
1071
  }
1072
1072
 
1073
1073
  @layer itwinui.v3{@media (forced-colors:active){._iui3-divider{background-color:CanvasText}}