@itwin/itwinui-react 1.28.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/cjs/core/Breadcrumbs/Breadcrumbs.js +1 -1
  3. package/cjs/core/Buttons/Button/Button.d.ts +6 -26
  4. package/cjs/core/Buttons/Button/Button.js +2 -2
  5. package/cjs/core/Buttons/DropdownButton/DropdownButton.d.ts +1 -1
  6. package/cjs/core/Buttons/IconButton/IconButton.d.ts +3 -8
  7. package/cjs/core/Buttons/IconButton/IconButton.js +2 -2
  8. package/cjs/core/Buttons/SplitButton/SplitButton.d.ts +9 -7
  9. package/cjs/core/Buttons/SplitButton/SplitButton.js +7 -4
  10. package/cjs/core/Checkbox/Checkbox.js +2 -2
  11. package/cjs/core/ColorPicker/ColorInputPanel.js +2 -2
  12. package/cjs/core/ColorPicker/ColorSwatch.d.ts +1 -1
  13. package/cjs/core/DatePicker/DatePicker.js +14 -15
  14. package/cjs/core/Header/HeaderButton.d.ts +6 -4
  15. package/cjs/core/Header/HeaderButton.js +3 -4
  16. package/cjs/core/LabeledInput/LabeledInput.d.ts +1 -1
  17. package/cjs/core/SideNavigation/SidenavButton.d.ts +3 -13
  18. package/cjs/core/Table/TablePaginator.js +11 -5
  19. package/cjs/core/Typography/Anchor/Anchor.d.ts +3 -0
  20. package/cjs/core/Typography/Anchor/Anchor.js +41 -0
  21. package/cjs/core/Typography/Anchor/index.d.ts +3 -0
  22. package/cjs/core/Typography/Anchor/index.js +10 -0
  23. package/cjs/core/Typography/Text/Text.d.ts +6 -10
  24. package/cjs/core/Typography/Text/Text.js +3 -4
  25. package/cjs/core/Typography/index.d.ts +1 -0
  26. package/cjs/core/Typography/index.js +3 -1
  27. package/cjs/core/index.d.ts +1 -1
  28. package/cjs/core/index.js +2 -1
  29. package/cjs/core/utils/hooks/useTheme.js +20 -3
  30. package/cjs/core/utils/props.d.ts +31 -1
  31. package/esm/core/Breadcrumbs/Breadcrumbs.js +1 -1
  32. package/esm/core/Buttons/Button/Button.d.ts +6 -26
  33. package/esm/core/Buttons/Button/Button.js +3 -3
  34. package/esm/core/Buttons/DropdownButton/DropdownButton.d.ts +1 -1
  35. package/esm/core/Buttons/IconButton/IconButton.d.ts +3 -8
  36. package/esm/core/Buttons/IconButton/IconButton.js +2 -2
  37. package/esm/core/Buttons/SplitButton/SplitButton.d.ts +9 -7
  38. package/esm/core/Buttons/SplitButton/SplitButton.js +7 -3
  39. package/esm/core/Checkbox/Checkbox.js +2 -2
  40. package/esm/core/ColorPicker/ColorInputPanel.js +2 -2
  41. package/esm/core/ColorPicker/ColorSwatch.d.ts +1 -1
  42. package/esm/core/DatePicker/DatePicker.js +14 -15
  43. package/esm/core/Header/HeaderButton.d.ts +6 -4
  44. package/esm/core/Header/HeaderButton.js +3 -3
  45. package/esm/core/LabeledInput/LabeledInput.d.ts +1 -1
  46. package/esm/core/SideNavigation/SidenavButton.d.ts +3 -13
  47. package/esm/core/Table/TablePaginator.js +11 -5
  48. package/esm/core/Typography/Anchor/Anchor.d.ts +3 -0
  49. package/esm/core/Typography/Anchor/Anchor.js +35 -0
  50. package/esm/core/Typography/Anchor/index.d.ts +3 -0
  51. package/esm/core/Typography/Anchor/index.js +6 -0
  52. package/esm/core/Typography/Text/Text.d.ts +6 -10
  53. package/esm/core/Typography/Text/Text.js +4 -4
  54. package/esm/core/Typography/index.d.ts +1 -0
  55. package/esm/core/Typography/index.js +1 -0
  56. package/esm/core/index.d.ts +1 -1
  57. package/esm/core/index.js +1 -1
  58. package/esm/core/utils/hooks/useTheme.js +20 -3
  59. package/esm/core/utils/props.d.ts +31 -1
  60. package/package.json +8 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.29.0](https://www.github.com/iTwin/iTwinUI-react/compare/v1.28.0...v1.29.0) (2022-01-11)
4
+
5
+ ### What's new
6
+
7
+ * **Button:** Allow rendering as anchor element using `as` prop ([#409](https://www.github.com/iTwin/iTwinUI-react/issues/409)) ([9dfcef7](https://www.github.com/iTwin/iTwinUI-react/commit/9dfcef7ba1c2dc2a43b49fc8e40ef2dcbd89bd0b))
8
+ * **Anchor:** Add new anchor component ([#501](https://www.github.com/iTwin/iTwinUI-react/issues/501)) ([684c18b](https://www.github.com/iTwin/iTwinUI-react/commit/684c18b313a3a7485a766b784d28a482e38e1a3d))
9
+ * **useTheme:** Add event listener to respond to theme changes ([#491](https://www.github.com/iTwin/iTwinUI-react/issues/491)) ([b940ef0](https://www.github.com/iTwin/iTwinUI-react/commit/b940ef0eccc762e07c76bb46beb4a7e8de793d11))
10
+
3
11
  ## [1.28.0](https://www.github.com/iTwin/iTwinUI-react/compare/v1.27.0...v1.28.0) (2021-12-21)
4
12
 
5
13
  ### What's new
@@ -84,7 +84,7 @@ exports.Breadcrumbs = react_1.default.forwardRef(function (props, ref) {
84
84
  react_1.default.createElement(Separator, null))),
85
85
  items.length - visibleCount > 0 && (react_1.default.createElement(react_1.default.Fragment, null,
86
86
  react_1.default.createElement("li", { className: 'iui-breadcrumbs-item' },
87
- react_1.default.createElement("span", { className: 'iui-ellipsis' }, "\u2026")),
87
+ react_1.default.createElement("span", null, "\u2026")),
88
88
  react_1.default.createElement(Separator, null))),
89
89
  items
90
90
  .slice(visibleCount > 1
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import { PolymorphicComponentProps, PolymorphicForwardRefComponent } from '../../utils';
2
3
  import '@itwin/itwinui-css/css/button.css';
3
- export declare type ButtonProps = {
4
+ declare type ButtonOwnProps = {
4
5
  /**
5
6
  * Modify size of the button.
6
7
  */
@@ -23,7 +24,9 @@ export declare type ButtonProps = {
23
24
  * Content of the button.
24
25
  */
25
26
  children?: React.ReactNode;
26
- } & React.ButtonHTMLAttributes<HTMLButtonElement>;
27
+ };
28
+ export declare type ButtonProps<T extends React.ElementType = 'button'> = PolymorphicComponentProps<T, ButtonOwnProps>;
29
+ declare type ButtonComponent = PolymorphicForwardRefComponent<'button', ButtonOwnProps>;
27
30
  /**
28
31
  * Generic button component
29
32
  * @example
@@ -33,28 +36,5 @@ export declare type ButtonProps = {
33
36
  * <Button size='small' styleType='cta'>This is a small call to action button</Button>
34
37
  * <Button startIcon={<SvgAdd />}>New</Button>
35
38
  */
36
- export declare const Button: React.ForwardRefExoticComponent<{
37
- /**
38
- * Modify size of the button.
39
- */
40
- size?: "small" | "large" | undefined;
41
- /**
42
- * Style of the button.
43
- * Use 'borderless' to hide outline.
44
- * @default 'default'
45
- */
46
- styleType?: "default" | "cta" | "high-visibility" | "borderless" | undefined;
47
- /**
48
- * Icon shown before the main button content.
49
- */
50
- startIcon?: JSX.Element | undefined;
51
- /**
52
- * Icon shown after the main button content.
53
- */
54
- endIcon?: JSX.Element | undefined;
55
- /**
56
- * Content of the button.
57
- */
58
- children?: React.ReactNode;
59
- } & React.ButtonHTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>;
39
+ export declare const Button: ButtonComponent;
60
40
  export default Button;
@@ -45,9 +45,9 @@ require("@itwin/itwinui-css/css/button.css");
45
45
  */
46
46
  exports.Button = react_1.default.forwardRef(function (props, ref) {
47
47
  var _a;
48
- var children = props.children, className = props.className, size = props.size, style = props.style, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, _c = props.type, type = _c === void 0 ? 'button' : _c, startIcon = props.startIcon, endIcon = props.endIcon, rest = __rest(props, ["children", "className", "size", "style", "styleType", "type", "startIcon", "endIcon"]);
48
+ var children = props.children, className = props.className, size = props.size, style = props.style, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, _c = props.type, type = _c === void 0 ? 'button' : _c, startIcon = props.startIcon, endIcon = props.endIcon, _d = props.as, Element = _d === void 0 ? 'button' : _d, rest = __rest(props, ["children", "className", "size", "style", "styleType", "type", "startIcon", "endIcon", "as"]);
49
49
  (0, utils_1.useTheme)();
50
- return (react_1.default.createElement("button", __assign({ ref: ref, className: (0, classnames_1.default)('iui-button', "iui-" + styleType, (_a = {},
50
+ return (react_1.default.createElement(Element, __assign({ ref: ref, className: (0, classnames_1.default)('iui-button', "iui-" + styleType, (_a = {},
51
51
  _a["iui-" + size] = !!size,
52
52
  _a), className), style: style, type: type }, rest),
53
53
  startIcon &&
@@ -37,5 +37,5 @@ export declare const DropdownButton: React.ForwardRefExoticComponent<{
37
37
  * @default 'default'
38
38
  */
39
39
  styleType?: "default" | "borderless" | undefined;
40
- } & Omit<ButtonProps, "styleType" | "endIcon" | "onClick"> & React.RefAttributes<HTMLButtonElement>>;
40
+ } & Omit<ButtonProps<"button">, "onClick" | "styleType" | "endIcon"> & React.RefAttributes<HTMLButtonElement>>;
41
41
  export default DropdownButton;
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import { ButtonProps } from '../Button';
2
+ import { PolymorphicForwardRefComponent } from '../../utils';
3
3
  import '@itwin/itwinui-css/css/button.css';
4
4
  export declare type IconButtonProps = {
5
5
  /**
@@ -8,17 +8,12 @@ export declare type IconButtonProps = {
8
8
  */
9
9
  isActive?: boolean;
10
10
  } & Omit<ButtonProps, 'startIcon' | 'endIcon'>;
11
+ declare type IconButtonComponent = PolymorphicForwardRefComponent<'button', IconButtonProps>;
11
12
  /**
12
13
  * Icon button
13
14
  * @example
14
15
  * <IconButton><SvgAdd /></IconButton>
15
16
  * <IconButton styleType='borderless'><SvgAdd /></IconButton>
16
17
  */
17
- export declare const IconButton: React.ForwardRefExoticComponent<{
18
- /**
19
- * Button gets active style.
20
- * @default false
21
- */
22
- isActive?: boolean | undefined;
23
- } & Omit<ButtonProps, "startIcon" | "endIcon"> & React.RefAttributes<HTMLButtonElement>>;
18
+ export declare const IconButton: IconButtonComponent;
24
19
  export default IconButton;
@@ -42,9 +42,9 @@ require("@itwin/itwinui-css/css/button.css");
42
42
  */
43
43
  exports.IconButton = react_1.default.forwardRef(function (props, ref) {
44
44
  var _a;
45
- var isActive = props.isActive, children = props.children, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, size = props.size, _c = props.type, type = _c === void 0 ? 'button' : _c, className = props.className, rest = __rest(props, ["isActive", "children", "styleType", "size", "type", "className"]);
45
+ var isActive = props.isActive, children = props.children, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, size = props.size, _c = props.type, type = _c === void 0 ? 'button' : _c, className = props.className, _d = props.as, Element = _d === void 0 ? 'button' : _d, rest = __rest(props, ["isActive", "children", "styleType", "size", "type", "className", "as"]);
46
46
  (0, utils_1.useTheme)();
47
- return (react_1.default.createElement("button", __assign({ ref: ref, className: (0, classnames_1.default)('iui-button', "iui-" + styleType, (_a = {},
47
+ return (react_1.default.createElement(Element, __assign({ ref: ref, className: (0, classnames_1.default)('iui-button', "iui-" + styleType, (_a = {},
48
48
  _a["iui-" + size] = !!size,
49
49
  _a['iui-active'] = isActive,
50
50
  _a), className), type: type }, rest), react_1.default.cloneElement(children, {
@@ -1,12 +1,9 @@
1
1
  import React from 'react';
2
2
  import { ButtonProps } from '../Button';
3
3
  import { Placement } from 'tippy.js';
4
+ import { PolymorphicForwardRefComponent } from '../../utils';
4
5
  import '@itwin/itwinui-css/css/button.css';
5
- export declare type SplitButtonProps = {
6
- /**
7
- * Callback fired on clicking the primary button.
8
- */
9
- onClick: React.MouseEventHandler<HTMLButtonElement>;
6
+ export declare type SplitButtonProps = ButtonProps & {
10
7
  /**
11
8
  * Items in the dropdown menu.
12
9
  * Pass a function that takes the `close` argument (to close the menu),
@@ -22,9 +19,14 @@ export declare type SplitButtonProps = {
22
19
  * Content of primary button.
23
20
  */
24
21
  children: React.ReactNode;
25
- } & Omit<ButtonProps, 'onClick'>;
22
+ };
23
+ declare type SplitButtonComponent = PolymorphicForwardRefComponent<'button', SplitButtonProps>;
26
24
  /**
27
25
  * Split button component with a DropdownMenu.
26
+ *
27
+ * The delegated props and forwarded ref are passed onto the primary button.
28
+ * It also supports using the `as` prop to change which element is rendered.
29
+ *
28
30
  * @example
29
31
  * const menuItems = (close: () => void) => [
30
32
  * <MenuItem key={1} onClick={onClick(1, close)}>Item #1</MenuItem>,
@@ -33,5 +35,5 @@ export declare type SplitButtonProps = {
33
35
  * <SplitButton onClick={onClick} menuItems={menuItems}>Default</SplitButton>
34
36
  * <SplitButton onClick={onClick} menuItems={menuItems} styleType='high-visibility'>High visibility</SplitButton>
35
37
  */
36
- export declare const SplitButton: (props: SplitButtonProps) => JSX.Element;
38
+ export declare const SplitButton: SplitButtonComponent;
37
39
  export default SplitButton;
@@ -41,6 +41,10 @@ var utils_1 = require("../../utils");
41
41
  require("@itwin/itwinui-css/css/button.css");
42
42
  /**
43
43
  * Split button component with a DropdownMenu.
44
+ *
45
+ * The delegated props and forwarded ref are passed onto the primary button.
46
+ * It also supports using the `as` prop to change which element is rendered.
47
+ *
44
48
  * @example
45
49
  * const menuItems = (close: () => void) => [
46
50
  * <MenuItem key={1} onClick={onClick(1, close)}>Item #1</MenuItem>,
@@ -49,7 +53,7 @@ require("@itwin/itwinui-css/css/button.css");
49
53
  * <SplitButton onClick={onClick} menuItems={menuItems}>Default</SplitButton>
50
54
  * <SplitButton onClick={onClick} menuItems={menuItems} styleType='high-visibility'>High visibility</SplitButton>
51
55
  */
52
- var SplitButton = function (props) {
56
+ exports.SplitButton = react_1.default.forwardRef(function (props, forwardedRef) {
53
57
  var onClick = props.onClick, menuItems = props.menuItems, className = props.className, _a = props.menuPlacement, menuPlacement = _a === void 0 ? 'bottom-end' : _a, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, size = props.size, children = props.children, style = props.style, title = props.title, rest = __rest(props, ["onClick", "menuItems", "className", "menuPlacement", "styleType", "size", "children", "style", "title"]);
54
58
  (0, utils_1.useTheme)();
55
59
  var _c = react_1.default.useState(false), isMenuOpen = _c[0], setIsMenuOpen = _c[1];
@@ -64,10 +68,9 @@ var SplitButton = function (props) {
64
68
  'iui-disabled': props.disabled,
65
69
  }), style: style, title: title, ref: ref },
66
70
  react_1.default.createElement("div", null,
67
- react_1.default.createElement(Button_1.Button, __assign({ styleType: styleType, size: size, onClick: onClick }, rest), children)),
71
+ react_1.default.createElement(Button_1.Button, __assign({ styleType: styleType, size: size, onClick: onClick, ref: forwardedRef }, rest), children)),
68
72
  react_1.default.createElement("div", null,
69
73
  react_1.default.createElement(DropdownMenu_1.DropdownMenu, { placement: menuPlacement, menuItems: menuItems, style: { minWidth: menuWidth }, onShow: react_1.default.useCallback(function () { return setIsMenuOpen(true); }, []), onHide: react_1.default.useCallback(function () { return setIsMenuOpen(false); }, []) },
70
74
  react_1.default.createElement(IconButton_1.IconButton, { styleType: styleType, size: size, disabled: props.disabled }, isMenuOpen ? react_1.default.createElement(CaretUpSmall_1.default, null) : react_1.default.createElement(CaretDownSmall_1.default, null))))));
71
- };
72
- exports.SplitButton = SplitButton;
75
+ });
73
76
  exports.default = exports.SplitButton;
@@ -66,8 +66,8 @@ exports.Checkbox = react_1.default.forwardRef(function (props, ref) {
66
66
  }
67
67
  });
68
68
  var defaultCheckbox = (react_1.default.createElement("svg", { viewBox: '0 0 16 16', "aria-hidden": 'true', focusable: 'false' },
69
- react_1.default.createElement("path", { className: 'iui-check', d: 'M6,14L0,8l2-2l4,4l8-8l2,2L6,14z' }),
70
- react_1.default.createElement("path", { className: 'iui-check-partial', d: 'm1 6.5h14v3h-14z' })));
69
+ react_1.default.createElement("path", { className: 'iui-check', d: 'm6.5 12.5-4.5-4.5 1.5-1.5 3 3 6-6 1.5 1.5z' }),
70
+ react_1.default.createElement("path", { className: 'iui-check-partial', d: 'm2.75 6.875h10.5v2.25h-10.5z' })));
71
71
  var visibilityCheckbox = (react_1.default.createElement("svg", { viewBox: '0 0 16 16', "aria-hidden": 'true', focusable: 'false' },
72
72
  react_1.default.createElement("path", { className: 'iui-check', 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' }),
73
73
  react_1.default.createElement("g", { className: 'iui-check-partial' },
@@ -36,6 +36,7 @@ var Buttons_1 = require("../Buttons");
36
36
  var Input_1 = require("../Input");
37
37
  var utils_1 = require("../utils");
38
38
  var ColorPickerContext_1 = require("./ColorPickerContext");
39
+ var Swap_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/Swap"));
39
40
  require("@itwin/itwinui-css/css/color-picker.css");
40
41
  /**
41
42
  * `ColorInputPanel` shows input fields to enter precise color values in the specified format.
@@ -302,8 +303,7 @@ exports.ColorInputPanel = react_1.default.forwardRef(function (props, ref) {
302
303
  : currentFormat.toUpperCase()),
303
304
  react_1.default.createElement("div", { className: 'iui-color-input' },
304
305
  allowedColorFormats.length > 1 && (react_1.default.createElement(Buttons_1.IconButton, { styleType: 'borderless', onClick: swapColorFormat, size: 'small' },
305
- react_1.default.createElement("svg", { viewBox: '0 0 16 16', className: 'iui-icon', "aria-hidden": true },
306
- react_1.default.createElement("path", { d: 'm5 15-3.78125-3.5 3.78125-3.5v2h8v3h-8zm6-7 3.78125-3.5-3.78125-3.5v2h-8v3h8z' })))),
306
+ react_1.default.createElement(Swap_1.default, null))),
307
307
  react_1.default.createElement("div", { ref: inputsContainerRef, className: 'iui-color-input-fields' },
308
308
  currentFormat === 'hex' && hexInputField,
309
309
  currentFormat === 'rgb' && rgbInputs,
@@ -17,5 +17,5 @@ export declare type ColorSwatchProps = {
17
17
  * <ColorSwatch color='#23450b' onClick={onClick}/>
18
18
  * <ColorSwatch color={{ r: 255, g: 255, b: 0 }} onClick={onClick}/>
19
19
  */
20
- export declare const ColorSwatch: React.ForwardRefExoticComponent<Pick<ColorSwatchProps, "dir" | "slot" | "style" | "title" | "id" | "role" | "children" | "className" | "accessKey" | "draggable" | "hidden" | "lang" | "translate" | "prefix" | "contentEditable" | "inputMode" | "tabIndex" | "onFocus" | "color" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "contextMenu" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "isActive" | "key"> & React.RefAttributes<HTMLDivElement>>;
20
+ export declare const ColorSwatch: React.ForwardRefExoticComponent<Pick<ColorSwatchProps, "dir" | "slot" | "style" | "title" | "id" | "role" | "children" | "className" | "accessKey" | "draggable" | "hidden" | "lang" | "translate" | "prefix" | "contentEditable" | "inputMode" | "tabIndex" | "onFocus" | "color" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "contextMenu" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "is" | "isActive"> & React.RefAttributes<HTMLDivElement>>;
21
21
  export default ColorSwatch;
@@ -254,22 +254,21 @@ var DatePicker = function (props) {
254
254
  }
255
255
  };
256
256
  return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)('iui-date-picker', className), style: style }, rest),
257
- react_1.default.createElement("div", { className: 'iui-calendar' },
258
- react_1.default.createElement("div", { className: 'iui-header' },
259
- react_1.default.createElement("div", { className: 'iui-month-year' },
260
- react_1.default.createElement(IconButton_1.IconButton, { styleType: 'borderless', onClick: handleMoveToPreviousMonth, "aria-label": 'Previous month' },
261
- react_1.default.createElement(ChevronLeft_1.default, null)),
262
- react_1.default.createElement("span", { "aria-live": 'polite' },
263
- react_1.default.createElement("span", { className: 'iui-month', title: monthNames[displayedMonthIndex] }, monthNames[displayedMonthIndex]),
264
- "\u00A0",
265
- displayedYear),
266
- react_1.default.createElement(IconButton_1.IconButton, { styleType: 'borderless', onClick: handleMoveToNextMonth, "aria-label": 'Next month' },
267
- react_1.default.createElement(ChevronRight_1.default, null))),
268
- react_1.default.createElement("div", { className: 'iui-weekdays' }, shortDays.map(function (day, index) { return (react_1.default.createElement("div", { key: day, title: longDays[index] }, day)); }))),
269
- react_1.default.createElement("div", { className: 'iui-dates', onKeyDown: handleCalendarKeyDown, role: 'listbox' }, weeks.map(function (weekDays, weekIndex) {
270
- return (react_1.default.createElement("div", { key: "week-" + displayedMonthIndex + "-" + weekIndex, className: 'iui-week' }, weekDays.map(function (weekDay, dayIndex) {
257
+ react_1.default.createElement("div", null,
258
+ react_1.default.createElement("div", { className: 'iui-calendar-month-year' },
259
+ react_1.default.createElement(IconButton_1.IconButton, { styleType: 'borderless', onClick: handleMoveToPreviousMonth, "aria-label": 'Previous month' },
260
+ react_1.default.createElement(ChevronLeft_1.default, null)),
261
+ react_1.default.createElement("span", { "aria-live": 'polite' },
262
+ react_1.default.createElement("span", { className: 'iui-calendar-month', title: monthNames[displayedMonthIndex] }, monthNames[displayedMonthIndex]),
263
+ "\u00A0",
264
+ displayedYear),
265
+ react_1.default.createElement(IconButton_1.IconButton, { styleType: 'borderless', onClick: handleMoveToNextMonth, "aria-label": 'Next month' },
266
+ react_1.default.createElement(ChevronRight_1.default, null))),
267
+ react_1.default.createElement("div", { className: 'iui-calendar-weekdays' }, shortDays.map(function (day, index) { return (react_1.default.createElement("div", { key: day, title: longDays[index] }, day)); })),
268
+ react_1.default.createElement("div", { onKeyDown: handleCalendarKeyDown, role: 'listbox' }, weeks.map(function (weekDays, weekIndex) {
269
+ return (react_1.default.createElement("div", { key: "week-" + displayedMonthIndex + "-" + weekIndex, className: 'iui-calendar-week' }, weekDays.map(function (weekDay, dayIndex) {
271
270
  var dateValue = weekDay.getDate();
272
- return (react_1.default.createElement("div", { key: "day-" + displayedMonthIndex + "-" + dayIndex, className: (0, classnames_1.default)('iui-date', {
271
+ return (react_1.default.createElement("div", { key: "day-" + displayedMonthIndex + "-" + dayIndex, className: (0, classnames_1.default)('iui-calendar-day', {
273
272
  'iui-outside-month': weekDay.getMonth() !== displayedMonthIndex,
274
273
  'iui-today': isSameDay(weekDay, new Date()),
275
274
  'iui-selected': isSameDay(weekDay, selectedDay),
@@ -1,13 +1,14 @@
1
1
  import React from 'react';
2
2
  import { ButtonProps, DropdownButtonProps } from '../Buttons';
3
+ import { PolymorphicForwardRefComponent } from '../utils';
3
4
  import '@itwin/itwinui-css/css/header.css';
4
5
  export declare type HeaderButtonProps = {
5
6
  /**
6
- * Name.
7
+ * Main label of the header button.
7
8
  */
8
9
  name: React.ReactNode;
9
10
  /**
10
- * Description shown below the name, will be hidden in `Header` slim mode.
11
+ * Description shown below the main label, will be hidden in `Header` slim mode.
11
12
  */
12
13
  description?: React.ReactNode;
13
14
  /**
@@ -15,7 +16,8 @@ export declare type HeaderButtonProps = {
15
16
  * @default false
16
17
  */
17
18
  isActive?: boolean;
18
- } & Omit<Partial<DropdownButtonProps> & Partial<ButtonProps>, 'children' | 'styleType' | 'name'>;
19
+ } & Partial<Pick<DropdownButtonProps, 'menuItems'>> & Pick<ButtonProps, 'startIcon' | 'endIcon'>;
20
+ declare type HeaderButtonComponent = PolymorphicForwardRefComponent<'button', HeaderButtonProps>;
19
21
  /**
20
22
  * Header button that handles slim state of the `Header` it's in.
21
23
  * When in slim mode, will only display the name and reduce icon size.
@@ -26,5 +28,5 @@ export declare type HeaderButtonProps = {
26
28
  * <HeaderButton name='Project C' startIcon={<img style={{ objectFit: 'cover' }} src='project.png' />} />
27
29
  * <HeaderButton name='Project D' isActive />
28
30
  */
29
- export declare const HeaderButton: (props: HeaderButtonProps) => JSX.Element;
31
+ export declare const HeaderButton: HeaderButtonComponent;
30
32
  export default HeaderButton;
@@ -51,7 +51,7 @@ var isDropdownButton = function (props) {
51
51
  * <HeaderButton name='Project C' startIcon={<img style={{ objectFit: 'cover' }} src='project.png' />} />
52
52
  * <HeaderButton name='Project D' isActive />
53
53
  */
54
- var HeaderButton = function (props) {
54
+ exports.HeaderButton = react_1.default.forwardRef(function (props, ref) {
55
55
  var name = props.name, description = props.description, _a = props.isActive, isActive = _a === void 0 ? false : _a, className = props.className, startIcon = props.startIcon, menuItems = props.menuItems, rest = __rest(props, ["name", "description", "isActive", "className", "startIcon", "menuItems"]);
56
56
  (0, utils_1.useTheme)();
57
57
  var buttonProps = __assign(__assign({ startIcon: react_1.default.isValidElement(startIcon)
@@ -64,7 +64,7 @@ var HeaderButton = function (props) {
64
64
  'iui-active': isActive,
65
65
  }, className), 'aria-current': isActive ? 'location' : undefined, children: (react_1.default.createElement(react_1.default.Fragment, null,
66
66
  react_1.default.createElement("div", null, name),
67
- description && react_1.default.createElement("div", { className: 'iui-description' }, description))) }, (!!menuItems && { menuItems: menuItems })), rest);
67
+ description && react_1.default.createElement("div", { className: 'iui-description' }, description))), ref: ref }, (!!menuItems && { menuItems: menuItems })), rest);
68
68
  if (isSplitButton(buttonProps)) {
69
69
  return react_1.default.createElement(Buttons_1.SplitButton, __assign({}, buttonProps));
70
70
  }
@@ -72,6 +72,5 @@ var HeaderButton = function (props) {
72
72
  return react_1.default.createElement(Buttons_1.DropdownButton, __assign({}, buttonProps));
73
73
  }
74
74
  return react_1.default.createElement(Buttons_1.Button, __assign({}, buttonProps));
75
- };
76
- exports.HeaderButton = HeaderButton;
75
+ });
77
76
  exports.default = exports.HeaderButton;
@@ -84,7 +84,7 @@ export declare const LabeledInput: React.ForwardRefExoticComponent<{
84
84
  * - 'inline' - appears in the same line as input.
85
85
  * @default 'default'
86
86
  */
87
- displayStyle?: "inline" | "default" | undefined;
87
+ displayStyle?: "default" | "inline" | undefined;
88
88
  /**
89
89
  * Set display style of icon.
90
90
  * Supported values:
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { PolymorphicForwardRefComponent } from '../utils';
2
2
  import { ButtonProps } from '../Buttons';
3
3
  import '@itwin/itwinui-css/css/side-navigation.css';
4
4
  export declare type SidenavButtonProps = {
@@ -13,20 +13,10 @@ export declare type SidenavButtonProps = {
13
13
  */
14
14
  isSubmenuOpen?: boolean;
15
15
  } & Omit<ButtonProps, 'styleType' | 'size'>;
16
+ declare type SideNavButtonComponent = PolymorphicForwardRefComponent<'button', SidenavButtonProps>;
16
17
  /**
17
18
  * Wrapper around Button to be used as SideNavigation items.
18
19
  * Label is hidden when sidenav is collapsed.
19
20
  */
20
- export declare const SidenavButton: React.ForwardRefExoticComponent<{
21
- /**
22
- * Whether the sidenav button is active,
23
- * i.e. the current page corresponds to this button.
24
- */
25
- isActive?: boolean | undefined;
26
- /**
27
- * Whether the sidenav button only has submenu open,
28
- * i.e. submenu is open but the current page does not correspond to this button.
29
- */
30
- isSubmenuOpen?: boolean | undefined;
31
- } & Omit<ButtonProps, "size" | "styleType"> & React.RefAttributes<HTMLButtonElement>>;
21
+ export declare const SidenavButton: SideNavButtonComponent;
32
22
  export default SidenavButton;
@@ -35,7 +35,6 @@ var classnames_1 = __importDefault(require("classnames"));
35
35
  require("@itwin/itwinui-css/css/table.css");
36
36
  var ChevronLeft_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/ChevronLeft"));
37
37
  var ChevronRight_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/ChevronRight"));
38
- var ButtonGroup_1 = require("../ButtonGroup");
39
38
  var Buttons_1 = require("../Buttons");
40
39
  var ProgressIndicators_1 = require("../ProgressIndicators");
41
40
  var Menu_1 = require("../Menu");
@@ -77,7 +76,7 @@ var TablePaginator = function (props) {
77
76
  // Checking `isMounted.current` prevents from focusing on initial load.
78
77
  // Checking `needFocus.current` prevents from focusing page when clicked on previous/next page.
79
78
  if (isMounted.current && needFocus.current) {
80
- var buttonToFocus = Array.from((_b = (_a = pageListRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.iui-button')) !== null && _b !== void 0 ? _b : []).find(function (el) { var _a; return ((_a = el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === (focusedIndex + 1).toString(); });
79
+ var buttonToFocus = Array.from((_b = (_a = pageListRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.iui-paginator-page-button')) !== null && _b !== void 0 ? _b : []).find(function (el) { var _a; return ((_a = el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === (focusedIndex + 1).toString(); });
81
80
  (_c = buttonToFocus) === null || _c === void 0 ? void 0 : _c.focus();
82
81
  needFocus.current = false;
83
82
  }
@@ -86,7 +85,11 @@ var TablePaginator = function (props) {
86
85
  var buttonSize = size != 'default' ? 'small' : undefined;
87
86
  var pageButton = react_1.default.useCallback(function (index, tabIndex) {
88
87
  if (tabIndex === void 0) { tabIndex = index === focusedIndex ? 0 : -1; }
89
- return (react_1.default.createElement(Buttons_1.Button, { key: index, styleType: 'borderless', className: (0, classnames_1.default)({ 'iui-active': index === currentPage }), onClick: function () { return onPageChange(index); }, "aria-current": index === currentPage, "aria-label": localization.goToPageLabel(index + 1), tabIndex: tabIndex, size: buttonSize }, index + 1));
88
+ return (react_1.default.createElement("div", { key: index },
89
+ react_1.default.createElement("button", { className: (0, classnames_1.default)('iui-paginator-page-button', {
90
+ 'iui-active': index === currentPage,
91
+ 'iui-paginator-page-button-small': buttonSize === 'small',
92
+ }), onClick: function () { return onPageChange(index); }, "aria-current": index === currentPage, "aria-label": localization.goToPageLabel(index + 1), tabIndex: tabIndex }, index + 1)));
90
93
  }, [focusedIndex, currentPage, localization, buttonSize, onPageChange]);
91
94
  var totalPagesCount = Math.ceil(totalRowsCount / pageSize);
92
95
  var pageList = react_1.default.useMemo(function () {
@@ -148,7 +151,10 @@ var TablePaginator = function (props) {
148
151
  var hasNoRows = totalPagesCount === 0;
149
152
  var showPagesList = totalPagesCount > 1 || isLoading;
150
153
  var showPageSizeList = pageSizeList && onPageSizeChange && !!totalRowsCount;
151
- var ellipsis = (react_1.default.createElement("span", { className: (0, classnames_1.default)('iui-ellipsis', { 'iui-small': size === 'small' }) }, "\u2026"));
154
+ var ellipsis = (react_1.default.createElement("div", null,
155
+ react_1.default.createElement("span", { className: (0, classnames_1.default)('iui-paginator-ellipsis', {
156
+ 'iui-paginator-ellipsis-small': size === 'small',
157
+ }) }, "\u2026")));
152
158
  var noRowsContent = (react_1.default.createElement(react_1.default.Fragment, null, isLoading ? (react_1.default.createElement(ProgressIndicators_1.ProgressRadial, { indeterminate: true, size: 'small' })) : (react_1.default.createElement(Buttons_1.Button, { styleType: 'borderless', disabled: true, size: buttonSize }, "1"))));
153
159
  if (!showPagesList && !showPageSizeList) {
154
160
  return null;
@@ -158,7 +164,7 @@ var TablePaginator = function (props) {
158
164
  showPagesList && (react_1.default.createElement("div", { className: 'iui-center', ref: overflowRef },
159
165
  react_1.default.createElement(Buttons_1.IconButton, { styleType: 'borderless', disabled: currentPage === 0, onClick: function () { return onPageChange(currentPage - 1); }, size: buttonSize, "aria-label": localization.previousPage },
160
166
  react_1.default.createElement(ChevronLeft_1.default, null)),
161
- react_1.default.createElement(ButtonGroup_1.ButtonGroup, { onKeyDown: onKeyDown, ref: pageListRef }, (function () {
167
+ react_1.default.createElement("span", { className: 'iui-paginator-pages-group', onKeyDown: onKeyDown, ref: pageListRef }, (function () {
162
168
  if (hasNoRows) {
163
169
  return noRowsContent;
164
170
  }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const Anchor: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "key" | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>> & React.RefAttributes<HTMLAnchorElement>>;
3
+ export default Anchor;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.Anchor = void 0;
29
+ /*---------------------------------------------------------------------------------------------
30
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
31
+ * See LICENSE.md in the project root for license terms and full copyright notice.
32
+ *--------------------------------------------------------------------------------------------*/
33
+ var react_1 = __importDefault(require("react"));
34
+ var classnames_1 = __importDefault(require("classnames"));
35
+ var utils_1 = require("../../utils");
36
+ exports.Anchor = react_1.default.forwardRef(function (_a, ref) {
37
+ var className = _a.className, rest = __rest(_a, ["className"]);
38
+ (0, utils_1.useTheme)();
39
+ return react_1.default.createElement("a", __assign({ className: (0, classnames_1.default)('iui-anchor', className), ref: ref }, rest));
40
+ });
41
+ exports.default = exports.Anchor;
@@ -0,0 +1,3 @@
1
+ export { Anchor } from './Anchor';
2
+ declare const _default: "./Anchor";
3
+ export default _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Anchor = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ var Anchor_1 = require("./Anchor");
9
+ Object.defineProperty(exports, "Anchor", { enumerable: true, get: function () { return Anchor_1.Anchor; } });
10
+ exports.default = './Anchor';
@@ -1,12 +1,7 @@
1
1
  import React from 'react';
2
- import { CommonProps } from '../../utils';
2
+ import { PolymorphicComponentProps, PolymorphicForwardRefComponent } from '../../utils';
3
3
  import '@itwin/itwinui-css/css/text.css';
4
- declare type TextOwnProps<T extends React.ElementType | React.ComponentType = 'div'> = {
5
- /**
6
- * What element should the text be rendered as?
7
- * @default 'div'
8
- */
9
- as?: T;
4
+ declare type TextOwnProps = {
10
5
  /**
11
6
  * Which typography variant/size should be used for the styling?
12
7
  *
@@ -30,8 +25,9 @@ declare type TextOwnProps<T extends React.ElementType | React.ComponentType = 'd
30
25
  * @default false
31
26
  */
32
27
  isSkeleton?: boolean;
33
- } & CommonProps;
34
- export declare type TextProps<T extends React.ElementType | React.ComponentType = 'div'> = TextOwnProps<T> & Omit<React.ComponentPropsWithoutRef<T>, keyof TextOwnProps<T>>;
28
+ };
29
+ export declare type TextProps<T extends React.ElementType = 'div'> = PolymorphicComponentProps<T, TextOwnProps>;
30
+ declare type TextComponent = PolymorphicForwardRefComponent<'div', TextOwnProps>;
35
31
  /**
36
32
  * Polymorphic typography component to render any kind of text as any kind of element.
37
33
  * @example
@@ -42,5 +38,5 @@ export declare type TextProps<T extends React.ElementType | React.ComponentType
42
38
  * <Text isMuted>Some muted text.</Text>
43
39
  * <Text isSkeleton>Skeleton text</Text>
44
40
  */
45
- export declare const Text: <T extends React.ElementType<any> | React.ComponentType<{}> = "div">(props: TextProps<T>) => JSX.Element;
41
+ export declare const Text: TextComponent;
46
42
  export default Text;
@@ -44,7 +44,7 @@ require("@itwin/itwinui-css/css/text.css");
44
44
  * <Text isMuted>Some muted text.</Text>
45
45
  * <Text isSkeleton>Skeleton text</Text>
46
46
  */
47
- var Text = function (props) {
47
+ exports.Text = react_1.default.forwardRef(function (props, ref) {
48
48
  var _a;
49
49
  var _b = props.variant, variant = _b === void 0 ? 'body' : _b, _c = props.as, Element = _c === void 0 ? 'div' : _c, className = props.className, _d = props.isMuted, isMuted = _d === void 0 ? false : _d, _e = props.isSkeleton, isSkeleton = _e === void 0 ? false : _e, rest = __rest(props, ["variant", "as", "className", "isMuted", "isSkeleton"]);
50
50
  (0, utils_1.useTheme)();
@@ -53,7 +53,6 @@ var Text = function (props) {
53
53
  _a['iui-text-block'] = variant === 'body',
54
54
  _a['iui-text-muted'] = isMuted,
55
55
  _a['iui-skeleton'] = isSkeleton,
56
- _a), className) }, rest)));
57
- };
58
- exports.Text = Text;
56
+ _a), className), ref: ref }, rest)));
57
+ });
59
58
  exports.default = exports.Text;
@@ -1,3 +1,4 @@
1
+ export { Anchor } from './Anchor';
1
2
  export { Headline } from './Headline';
2
3
  export type { HeadlineProps } from './Headline';
3
4
  export { Title } from './Title';