@kaizen/components 1.80.2 → 1.80.3
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.
- package/codemods/README.md +12 -0
- package/codemods/renameV2ComponentImportsAndUsages/index.ts +19 -0
- package/codemods/renameV2ComponentImportsAndUsages/renameV2ComponentImportsAndUsages.spec.ts +390 -0
- package/codemods/renameV2ComponentImportsAndUsages/renameV2ComponentImportsAndUsages.ts +230 -0
- package/codemods/utils/index.ts +1 -0
- package/codemods/utils/updateJsxElementTagName.spec.ts +129 -0
- package/codemods/utils/updateJsxElementTagName.ts +56 -0
- package/codemods/utils/updateKaioImports.spec.ts +82 -0
- package/codemods/utils/updateKaioImports.ts +16 -7
- package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +69 -16
- package/dist/cjs/src/__alpha__/SingleSelect/context/SingleSelectContext.cjs +13 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +54 -0
- package/dist/cjs/src/__alpha__/SingleSelect/{SingleSelect.module.css.cjs → subcomponents/Popover/Popover.module.css.cjs} +1 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +94 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +69 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.cjs +12 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +41 -5
- package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +60 -10
- package/dist/esm/src/__alpha__/SingleSelect/context/SingleSelectContext.mjs +10 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +49 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +4 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +92 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +67 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.mjs +10 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +43 -7
- package/dist/styles.css +43 -21
- package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +7 -9
- package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +12 -0
- package/dist/types/__alpha__/SingleSelect/context/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -1
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -1
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -1
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +6 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +4 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +4 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +2 -1
- package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/types.d.ts +45 -0
- package/package.json +4 -4
- package/src/__alpha__/SingleSelect/SingleSelect.tsx +79 -14
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +5 -2
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +100 -0
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +4 -4
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +21 -2
- package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +21 -0
- package/src/__alpha__/SingleSelect/context/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +0 -1
- package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +2 -1
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +7 -0
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +2 -1
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +3 -1
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +24 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +54 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +2 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +108 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +75 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.ts +13 -0
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +29 -7
- package/src/__alpha__/SingleSelect/subcomponents/index.ts +1 -0
- package/src/__alpha__/SingleSelect/types.ts +58 -0
- package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.module.css.mjs +0 -4
- package/src/__alpha__/SingleSelect/SingleSelect.module.css +0 -9
- package/src/__alpha__/SingleSelect/SingleSelect.spec.tsx +0 -26
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var useSupportsAnchorPositioning = function () {
|
|
5
|
+
return React.useMemo(function () {
|
|
6
|
+
if (typeof window === 'undefined' || typeof CSS === 'undefined') {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return CSS.supports('position-anchor', 'auto') || CSS.supports('position-try-fallbacks: flip-block');
|
|
10
|
+
}, []);
|
|
11
|
+
};
|
|
12
|
+
exports.useSupportsAnchorPositioning = useSupportsAnchorPositioning;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var reactAriaComponents = require('react-aria-components');
|
|
5
5
|
var Icon = require('../../../../__next__/Icon/Icon.cjs');
|
|
6
|
+
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
6
7
|
var Trigger_module = require('./Trigger.module.css.cjs');
|
|
7
8
|
function _interopDefault(e) {
|
|
8
9
|
return e && e.__esModule ? e : {
|
|
@@ -10,12 +11,47 @@ function _interopDefault(e) {
|
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
13
|
-
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
}
|
|
14
|
+
function flattenItems(items) {
|
|
15
|
+
return items.flatMap(function (item) {
|
|
16
|
+
return 'options' in item ? item.options : item;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
var Trigger = function (_a) {
|
|
20
|
+
var buttonRef = _a.buttonRef;
|
|
21
|
+
var _b = SingleSelectContext.useSingleSelectContext(),
|
|
22
|
+
isOpen = _b.isOpen,
|
|
23
|
+
setOpen = _b.setOpen,
|
|
24
|
+
selectedKey = _b.selectedKey,
|
|
25
|
+
items = _b.items,
|
|
26
|
+
anchorName = _b.anchorName;
|
|
27
|
+
var flattenedItems = React.useMemo(function () {
|
|
28
|
+
return flattenItems(items);
|
|
29
|
+
}, [items]);
|
|
30
|
+
var selectedLabel = React.useMemo(function () {
|
|
31
|
+
var _a;
|
|
32
|
+
var key = selectedKey;
|
|
33
|
+
var item = flattenedItems.find(function (i) {
|
|
34
|
+
return i.value === key;
|
|
35
|
+
});
|
|
36
|
+
return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : React__default.default.createElement("div", null);
|
|
37
|
+
}, [flattenedItems, selectedKey]);
|
|
38
|
+
return React__default.default.createElement("div", {
|
|
39
|
+
style: {
|
|
40
|
+
position: 'relative'
|
|
41
|
+
}
|
|
42
|
+
}, React__default.default.createElement(reactAriaComponents.Button, {
|
|
43
|
+
className: Trigger_module.button,
|
|
44
|
+
ref: buttonRef,
|
|
45
|
+
onPress: function () {
|
|
46
|
+
return setOpen(!isOpen);
|
|
47
|
+
},
|
|
48
|
+
"aria-expanded": isOpen,
|
|
49
|
+
style: {
|
|
50
|
+
'--anchor-name': anchorName
|
|
51
|
+
}
|
|
52
|
+
}, selectedLabel, React__default.default.createElement(Icon.Icon, {
|
|
17
53
|
name: "keyboard_arrow_down",
|
|
18
54
|
isPresentational: true
|
|
19
|
-
}));
|
|
55
|
+
})));
|
|
20
56
|
};
|
|
21
57
|
exports.Trigger = Trigger;
|
|
@@ -1,22 +1,72 @@
|
|
|
1
1
|
import { __rest, __assign } from 'tslib';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import {
|
|
2
|
+
import React, { useId, useMemo, isValidElement, cloneElement } from 'react';
|
|
3
|
+
import { useSelectState } from '@react-stately/select';
|
|
4
|
+
import { Select } from 'react-aria-components';
|
|
5
|
+
import { SingleSelectContext } from './context/SingleSelectContext.mjs';
|
|
4
6
|
import { List } from './subcomponents/List/List.mjs';
|
|
5
7
|
import { ListSection } from './subcomponents/ListSection/ListSection.mjs';
|
|
6
8
|
import { ListItem } from './subcomponents/ListItem/ListItem.mjs';
|
|
7
9
|
import { Trigger } from './subcomponents/Trigger/Trigger.mjs';
|
|
8
|
-
import
|
|
10
|
+
import { Popover } from './subcomponents/Popover/Popover.mjs';
|
|
9
11
|
const SingleSelect = /*#__PURE__*/function () {
|
|
10
12
|
const SingleSelect = function (_a) {
|
|
11
|
-
var
|
|
13
|
+
var items = _a.items,
|
|
14
|
+
onSelectionChange = _a.onSelectionChange,
|
|
12
15
|
children = _a.children,
|
|
13
|
-
restProps = __rest(_a, ["
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
restProps = __rest(_a, ["items", "onSelectionChange", "children"]);
|
|
17
|
+
var buttonRef = React.useRef(null);
|
|
18
|
+
var popoverRef = React.useRef(null);
|
|
19
|
+
var racPopoverRef = React.useRef(null);
|
|
20
|
+
var uniqueId = useId();
|
|
21
|
+
var anchorName = "--trigger-".concat(uniqueId);
|
|
22
|
+
var state = useSelectState({
|
|
23
|
+
items: items
|
|
24
|
+
});
|
|
25
|
+
var handleOnSelectionChange = React.useCallback(function (keys) {
|
|
26
|
+
var key = null;
|
|
27
|
+
if (keys instanceof Set && keys.size > 0) {
|
|
28
|
+
key = Array.from(keys)[0];
|
|
29
|
+
}
|
|
30
|
+
state.setSelectedKey(key);
|
|
31
|
+
if (onSelectionChange) {
|
|
32
|
+
onSelectionChange(key);
|
|
33
|
+
}
|
|
34
|
+
}, [state, onSelectionChange]);
|
|
35
|
+
// Cloning children here to allow users to pass in a custom ListItem or ListSection
|
|
36
|
+
// and still have the SingleSelect handle selection state
|
|
37
|
+
var injectedChildren = useMemo(function () {
|
|
38
|
+
if (! /*#__PURE__*/isValidElement(children)) return null;
|
|
39
|
+
var selectedKeys = state.selectedKey ? new Set([state.selectedKey]) : new Set();
|
|
40
|
+
return /*#__PURE__*/cloneElement(children, {
|
|
41
|
+
selectionMode: 'single',
|
|
42
|
+
selectedKeys: selectedKeys,
|
|
43
|
+
onSelectionChange: handleOnSelectionChange,
|
|
44
|
+
autoFocus: 'first'
|
|
45
|
+
});
|
|
46
|
+
}, [children, handleOnSelectionChange, state.selectedKey]);
|
|
47
|
+
return /*#__PURE__*/React.createElement(SingleSelectContext.Provider, {
|
|
48
|
+
value: {
|
|
49
|
+
isOpen: state.isOpen,
|
|
50
|
+
setOpen: state.setOpen,
|
|
51
|
+
selectedKey: state.selectedKey,
|
|
52
|
+
items: items,
|
|
53
|
+
anchorName: anchorName
|
|
54
|
+
}
|
|
55
|
+
}, /*#__PURE__*/React.createElement(Select
|
|
56
|
+
// TODO: allow user to pass in label
|
|
57
|
+
, __assign({
|
|
58
|
+
"aria-label": 'single-select',
|
|
59
|
+
onSelectionChange: function (key) {
|
|
60
|
+
return handleOnSelectionChange(key != null ? new Set([key]) : new Set());
|
|
61
|
+
},
|
|
16
62
|
placeholder: ""
|
|
17
|
-
}, restProps), /*#__PURE__*/React.createElement(Trigger,
|
|
18
|
-
|
|
19
|
-
},
|
|
63
|
+
}, restProps), /*#__PURE__*/React.createElement(Trigger, {
|
|
64
|
+
buttonRef: buttonRef
|
|
65
|
+
}), state.isOpen && (/*#__PURE__*/React.createElement(Popover, {
|
|
66
|
+
buttonRef: buttonRef,
|
|
67
|
+
popoverRef: popoverRef,
|
|
68
|
+
racPopoverRef: racPopoverRef
|
|
69
|
+
}, injectedChildren))));
|
|
20
70
|
};
|
|
21
71
|
SingleSelect.displayName = 'SingleSelect';
|
|
22
72
|
SingleSelect.List = List;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
var SingleSelectContext = /*#__PURE__*/createContext(undefined);
|
|
3
|
+
var useSingleSelectContext = function () {
|
|
4
|
+
var context = useContext(SingleSelectContext);
|
|
5
|
+
if (!context) {
|
|
6
|
+
throw new Error('useSingleSelectContext must be used within a SingleSelectContext.Provider');
|
|
7
|
+
}
|
|
8
|
+
return context;
|
|
9
|
+
};
|
|
10
|
+
export { SingleSelectContext, useSingleSelectContext };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React, { useMemo, useLayoutEffect } from 'react';
|
|
2
|
+
import { Popover as Popover$1 } from 'react-aria-components';
|
|
3
|
+
import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
|
|
4
|
+
import { usePositioningStyles } from './utils/usePositioningStyles.mjs';
|
|
5
|
+
import styles from './Popover.module.css.mjs';
|
|
6
|
+
const Popover = /*#__PURE__*/function () {
|
|
7
|
+
const Popover = function (_a) {
|
|
8
|
+
var buttonRef = _a.buttonRef,
|
|
9
|
+
popoverRef = _a.popoverRef,
|
|
10
|
+
racPopoverRef = _a.racPopoverRef,
|
|
11
|
+
children = _a.children;
|
|
12
|
+
var _b = useSingleSelectContext(),
|
|
13
|
+
isOpen = _b.isOpen,
|
|
14
|
+
setOpen = _b.setOpen,
|
|
15
|
+
anchorName = _b.anchorName;
|
|
16
|
+
var _c = usePositioningStyles(buttonRef, popoverRef, anchorName),
|
|
17
|
+
popoverStyle = _c.popoverStyle,
|
|
18
|
+
isPositioned = _c.isPositioned;
|
|
19
|
+
var shouldShowPopover = useMemo(function () {
|
|
20
|
+
return isOpen && isPositioned;
|
|
21
|
+
}, [isOpen, isPositioned]);
|
|
22
|
+
useLayoutEffect(function () {
|
|
23
|
+
var popover = popoverRef.current;
|
|
24
|
+
if (!(popover === null || popover === void 0 ? void 0 : popover.showPopover) || !(popover === null || popover === void 0 ? void 0 : popover.hidePopover)) return;
|
|
25
|
+
if (shouldShowPopover) {
|
|
26
|
+
popover.showPopover();
|
|
27
|
+
} else {
|
|
28
|
+
popover.hidePopover();
|
|
29
|
+
}
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
|
+
}, [shouldShowPopover]);
|
|
32
|
+
return /*#__PURE__*/React.createElement(Popover$1, {
|
|
33
|
+
shouldUpdatePosition: false,
|
|
34
|
+
trigger: "manual",
|
|
35
|
+
isOpen: isOpen,
|
|
36
|
+
onOpenChange: setOpen,
|
|
37
|
+
ref: racPopoverRef
|
|
38
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
39
|
+
// @ts-expect-error - popover attribute is not included in current ts version, ignore type error
|
|
40
|
+
popover: "manual",
|
|
41
|
+
ref: popoverRef,
|
|
42
|
+
className: styles.popover,
|
|
43
|
+
style: popoverStyle
|
|
44
|
+
}, children));
|
|
45
|
+
};
|
|
46
|
+
Popover.displayName = 'SingleSelect.Popover';
|
|
47
|
+
return Popover;
|
|
48
|
+
}();
|
|
49
|
+
export { Popover };
|
package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { __assign } from 'tslib';
|
|
2
|
+
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
3
|
+
function usePopoverPositioning(_a) {
|
|
4
|
+
var triggerRef = _a.triggerRef,
|
|
5
|
+
popoverRef = _a.popoverRef,
|
|
6
|
+
_b = _a.direction,
|
|
7
|
+
direction = _b === void 0 ? 'ltr' : _b,
|
|
8
|
+
_c = _a.offset,
|
|
9
|
+
offset = _c === void 0 ? 4 : _c,
|
|
10
|
+
_d = _a.preferredPlacement,
|
|
11
|
+
preferredPlacement = _d === void 0 ? 'bottom' : _d;
|
|
12
|
+
var _e = useState({
|
|
13
|
+
top: preferredPlacement === 'bottom' ? offset : 'auto',
|
|
14
|
+
bottom: preferredPlacement === 'top' ? offset : 'auto',
|
|
15
|
+
insetInlineStart: 0,
|
|
16
|
+
maxHeight: 300 // TODO: update this based on designs
|
|
17
|
+
}),
|
|
18
|
+
position = _e[0],
|
|
19
|
+
setPosition = _e[1];
|
|
20
|
+
var _f = useState(true),
|
|
21
|
+
isPositioned = _f[0],
|
|
22
|
+
setIsPositioned = _f[1];
|
|
23
|
+
var mountedRef = useRef(false);
|
|
24
|
+
var isSSR = typeof window === 'undefined';
|
|
25
|
+
var updatePosition = useCallback(function () {
|
|
26
|
+
var _a;
|
|
27
|
+
if (isSSR) return;
|
|
28
|
+
var trigger = triggerRef.current;
|
|
29
|
+
var popover = popoverRef.current;
|
|
30
|
+
if (!mountedRef.current || !trigger || !(popover === null || popover === void 0 ? void 0 : popover.isConnected)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
var triggerRect = trigger.getBoundingClientRect();
|
|
34
|
+
if (!triggerRect) return;
|
|
35
|
+
var doc = trigger.ownerDocument;
|
|
36
|
+
var win = (_a = doc === null || doc === void 0 ? void 0 : doc.defaultView) !== null && _a !== void 0 ? _a : window;
|
|
37
|
+
var isRTL = direction === 'rtl';
|
|
38
|
+
var inlineStart = isRTL ? win.innerWidth - triggerRect.right : triggerRect.left;
|
|
39
|
+
var triggerTop = triggerRect.top;
|
|
40
|
+
var triggerBottom = triggerRect.bottom;
|
|
41
|
+
var viewportHeight = win.innerHeight;
|
|
42
|
+
var spaceAbove = triggerTop;
|
|
43
|
+
var spaceBelow = viewportHeight - triggerBottom;
|
|
44
|
+
var shouldFlip = preferredPlacement === 'bottom' && spaceBelow < 200 && spaceAbove > spaceBelow;
|
|
45
|
+
var top;
|
|
46
|
+
var bottom;
|
|
47
|
+
var maxHeight;
|
|
48
|
+
if (shouldFlip) {
|
|
49
|
+
top = 'auto';
|
|
50
|
+
bottom = viewportHeight - triggerTop + offset;
|
|
51
|
+
maxHeight = Math.max(0, spaceAbove - offset);
|
|
52
|
+
} else {
|
|
53
|
+
top = triggerBottom + offset;
|
|
54
|
+
bottom = 'auto';
|
|
55
|
+
maxHeight = Math.max(0, spaceBelow - offset);
|
|
56
|
+
}
|
|
57
|
+
var newPosition = {
|
|
58
|
+
top: top,
|
|
59
|
+
bottom: bottom,
|
|
60
|
+
insetInlineStart: inlineStart,
|
|
61
|
+
maxHeight: maxHeight
|
|
62
|
+
};
|
|
63
|
+
setPosition(newPosition);
|
|
64
|
+
setIsPositioned(true);
|
|
65
|
+
}, [triggerRef, popoverRef, direction, offset, preferredPlacement, isSSR]);
|
|
66
|
+
useEffect(function () {
|
|
67
|
+
if (typeof window === 'undefined') return;
|
|
68
|
+
mountedRef.current = true;
|
|
69
|
+
var triggerEl = triggerRef.current;
|
|
70
|
+
updatePosition();
|
|
71
|
+
var resizeObserver = new ResizeObserver(function () {
|
|
72
|
+
updatePosition();
|
|
73
|
+
});
|
|
74
|
+
if (triggerEl) resizeObserver.observe(triggerEl);
|
|
75
|
+
var onWindowResize = function () {
|
|
76
|
+
return updatePosition();
|
|
77
|
+
};
|
|
78
|
+
window.addEventListener('resize', onWindowResize, {
|
|
79
|
+
passive: true
|
|
80
|
+
});
|
|
81
|
+
return function () {
|
|
82
|
+
mountedRef.current = false;
|
|
83
|
+
resizeObserver.disconnect();
|
|
84
|
+
window.removeEventListener('resize', onWindowResize);
|
|
85
|
+
setIsPositioned(false);
|
|
86
|
+
};
|
|
87
|
+
}, [updatePosition, triggerRef]);
|
|
88
|
+
return __assign(__assign({}, position), {
|
|
89
|
+
isPositioned: isPositioned
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export { usePopoverPositioning };
|
package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useLocale } from '@react-aria/i18n';
|
|
3
|
+
import { usePopoverPositioning } from './usePopoverPositioning.mjs';
|
|
4
|
+
import { useSupportsAnchorPositioning } from './useSupportsAnchorPositioning.mjs';
|
|
5
|
+
var CSS_PROPS = {
|
|
6
|
+
POSITION_ANCHOR: '--position-anchor',
|
|
7
|
+
POSITION_AREA: '--position-area'
|
|
8
|
+
};
|
|
9
|
+
var DEFAULTS = {
|
|
10
|
+
MAX_HEIGHT: '300px'
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Generates manual positioning styles for browsers without anchor positioning support or SSR
|
|
14
|
+
*/
|
|
15
|
+
var getManualPositioningStyles = function (positionData) {
|
|
16
|
+
return {
|
|
17
|
+
top: positionData.top,
|
|
18
|
+
bottom: positionData.bottom,
|
|
19
|
+
insetInlineStart: positionData.insetInlineStart,
|
|
20
|
+
maxHeight: positionData.maxHeight,
|
|
21
|
+
left: 'auto',
|
|
22
|
+
right: 'auto',
|
|
23
|
+
position: 'fixed'
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
var getAnchorPositioningStyles = function (anchorName, positionData) {
|
|
27
|
+
var _a;
|
|
28
|
+
var _b;
|
|
29
|
+
var styles = (_a = {
|
|
30
|
+
maxHeight: (_b = positionData.maxHeight) !== null && _b !== void 0 ? _b : DEFAULTS.MAX_HEIGHT
|
|
31
|
+
}, _a[CSS_PROPS.POSITION_ANCHOR] = anchorName, _a[CSS_PROPS.POSITION_AREA] = positionData.top === 'auto' ? 'top' : 'bottom', _a);
|
|
32
|
+
return styles;
|
|
33
|
+
};
|
|
34
|
+
var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
|
|
35
|
+
var direction = useLocale().direction;
|
|
36
|
+
var hasAnchorSupport = useSupportsAnchorPositioning();
|
|
37
|
+
var _a = usePopoverPositioning({
|
|
38
|
+
triggerRef: buttonRef,
|
|
39
|
+
popoverRef: popoverRef,
|
|
40
|
+
direction: direction,
|
|
41
|
+
preferredPlacement: 'bottom'
|
|
42
|
+
}),
|
|
43
|
+
top = _a.top,
|
|
44
|
+
bottom = _a.bottom,
|
|
45
|
+
insetInlineStart = _a.insetInlineStart,
|
|
46
|
+
maxHeight = _a.maxHeight,
|
|
47
|
+
isPositioned = _a.isPositioned;
|
|
48
|
+
var positionData = useMemo(function () {
|
|
49
|
+
return {
|
|
50
|
+
top: top,
|
|
51
|
+
bottom: bottom,
|
|
52
|
+
insetInlineStart: insetInlineStart,
|
|
53
|
+
maxHeight: maxHeight
|
|
54
|
+
};
|
|
55
|
+
}, [top, bottom, insetInlineStart, maxHeight]);
|
|
56
|
+
var popoverStyle = useMemo(function () {
|
|
57
|
+
if (hasAnchorSupport === null || !hasAnchorSupport) {
|
|
58
|
+
return getManualPositioningStyles(positionData);
|
|
59
|
+
}
|
|
60
|
+
return getAnchorPositioningStyles(anchorName, positionData);
|
|
61
|
+
}, [hasAnchorSupport, anchorName, positionData]);
|
|
62
|
+
return {
|
|
63
|
+
popoverStyle: popoverStyle,
|
|
64
|
+
isPositioned: isPositioned
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export { usePositioningStyles };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
var useSupportsAnchorPositioning = function () {
|
|
3
|
+
return useMemo(function () {
|
|
4
|
+
if (typeof window === 'undefined' || typeof CSS === 'undefined') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
return CSS.supports('position-anchor', 'auto') || CSS.supports('position-try-fallbacks: flip-block');
|
|
8
|
+
}, []);
|
|
9
|
+
};
|
|
10
|
+
export { useSupportsAnchorPositioning };
|
|
@@ -1,13 +1,49 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Button
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { Button } from 'react-aria-components';
|
|
3
3
|
import { Icon } from '../../../../__next__/Icon/Icon.mjs';
|
|
4
|
+
import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
|
|
4
5
|
import styles from './Trigger.module.css.mjs';
|
|
5
|
-
|
|
6
|
-
return
|
|
7
|
-
|
|
8
|
-
}
|
|
6
|
+
function flattenItems(items) {
|
|
7
|
+
return items.flatMap(function (item) {
|
|
8
|
+
return 'options' in item ? item.options : item;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
var Trigger = function (_a) {
|
|
12
|
+
var buttonRef = _a.buttonRef;
|
|
13
|
+
var _b = useSingleSelectContext(),
|
|
14
|
+
isOpen = _b.isOpen,
|
|
15
|
+
setOpen = _b.setOpen,
|
|
16
|
+
selectedKey = _b.selectedKey,
|
|
17
|
+
items = _b.items,
|
|
18
|
+
anchorName = _b.anchorName;
|
|
19
|
+
var flattenedItems = useMemo(function () {
|
|
20
|
+
return flattenItems(items);
|
|
21
|
+
}, [items]);
|
|
22
|
+
var selectedLabel = useMemo(function () {
|
|
23
|
+
var _a;
|
|
24
|
+
var key = selectedKey;
|
|
25
|
+
var item = flattenedItems.find(function (i) {
|
|
26
|
+
return i.value === key;
|
|
27
|
+
});
|
|
28
|
+
return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : /*#__PURE__*/React.createElement("div", null);
|
|
29
|
+
}, [flattenedItems, selectedKey]);
|
|
30
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
31
|
+
style: {
|
|
32
|
+
position: 'relative'
|
|
33
|
+
}
|
|
34
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
35
|
+
className: styles.button,
|
|
36
|
+
ref: buttonRef,
|
|
37
|
+
onPress: function () {
|
|
38
|
+
return setOpen(!isOpen);
|
|
39
|
+
},
|
|
40
|
+
"aria-expanded": isOpen,
|
|
41
|
+
style: {
|
|
42
|
+
'--anchor-name': anchorName
|
|
43
|
+
}
|
|
44
|
+
}, selectedLabel, /*#__PURE__*/React.createElement(Icon, {
|
|
9
45
|
name: "keyboard_arrow_down",
|
|
10
46
|
isPresentational: true
|
|
11
|
-
}));
|
|
47
|
+
})));
|
|
12
48
|
};
|
|
13
49
|
export { Trigger };
|
package/dist/styles.css
CHANGED
|
@@ -1,11 +1,50 @@
|
|
|
1
1
|
@layer tokens, normalize, reset, kz-components;@layer tokens{:root{--theme-key:heart;--animation-easing-function-ease-in-out:cubic-bezier(0.455,0.03,0.515,0.955);--animation-easing-function-ease-in:cubic-bezier(0.55,0.085,0.68,0.53);--animation-easing-function-ease-out:cubic-bezier(0.25,0.46,0.45,0.94);--animation-easing-function-linear:linear;--animation-easing-function-bounce-in:cubic-bezier(0.485,0.155,0.24,1.245);--animation-easing-function-bounce-out:cubic-bezier(0.485,0.155,0.515,0.845);--animation-easing-function-bounce-in-out:cubic-bezier(0.76,-0.245,0.24,1.245);--animation-duration-instant:0ms;--animation-duration-immediate:100ms;--animation-duration-rapid:200ms;--animation-duration-fast:300ms;--animation-duration-slow:400ms;--animation-duration-deliberate:700ms;--border-solid-border-width:2px;--border-solid-border-radius:7px;--border-solid-border-style:solid;--border-solid-border-color:#e1e2ea;--border-solid-border-color-rgb:225,226,234;--border-dashed-border-width:2px;--border-dashed-border-radius:7px;--border-dashed-border-style:dashed;--border-borderless-border-width:2px;--border-borderless-border-radius:7px;--border-borderless-border-style:solid;--border-borderless-border-color:transparent;--border-borderless-border-color-rgb:0,0,0;--border-focus-ring-border-width:2px;--border-focus-ring-border-radius:10px;--border-focus-ring-border-style:solid;--border-width-1:1px;--color-purple-100:#f4edf8;--color-purple-100-rgb:244,237,248;--color-purple-200:#dfc9ea;--color-purple-200-rgb:223,201,234;--color-purple-300:#c9a5dd;--color-purple-300-rgb:201,165,221;--color-purple-400:#ae67b1;--color-purple-400-rgb:174,103,177;--color-purple-500:#844587;--color-purple-500-rgb:132,69,135;--color-purple-600:#5f3361;--color-purple-600-rgb:95,51,97;--color-purple-700:#4a234d;--color-purple-700-rgb:74,35,77;--color-purple-800:#2f2438;--color-purple-800-rgb:47,36,56;--color-blue-100:#e6f6ff;--color-blue-100-rgb:230,246,255;--color-blue-200:#bde2f5;--color-blue-200-rgb:189,226,245;--color-blue-300:#73c0e8;--color-blue-300-rgb:115,192,232;--color-blue-400:#008bd6;--color-blue-400-rgb:0,139,214;--color-blue-500:#0168b3;--color-blue-500-rgb:1,104,179;--color-blue-600:#004970;--color-blue-600-rgb:0,73,112;--color-blue-700:#003157;--color-blue-700-rgb:0,49,87;--color-green-100:#e8f8f4;--color-green-100-rgb:232,248,244;--color-green-200:#c4ede2;--color-green-200-rgb:196,237,226;--color-green-300:#8fdbc7;--color-green-300-rgb:143,219,199;--color-green-400:#5dcaad;--color-green-400-rgb:93,202,173;--color-green-500:#3f9a86;--color-green-500-rgb:63,154,134;--color-green-600:#2c7d67;--color-green-600-rgb:44,125,103;--color-green-700:#22594a;--color-green-700-rgb:34,89,74;--color-yellow-100:#fff9e4;--color-yellow-100-rgb:255,249,228;--color-yellow-200:#ffeeb3;--color-yellow-200-rgb:255,238,179;--color-yellow-300:#ffe36e;--color-yellow-300-rgb:255,227,110;--color-yellow-400:#ffca4d;--color-yellow-400-rgb:255,202,77;--color-yellow-500:#ffb600;--color-yellow-500-rgb:255,182,0;--color-yellow-600:#c68600;--color-yellow-600-rgb:198,134,0;--color-yellow-700:#876400;--color-yellow-700-rgb:135,100,0;--color-red-100:#fdeaee;--color-red-100-rgb:253,234,238;--color-red-200:#f9c2cb;--color-red-200-rgb:249,194,203;--color-red-300:#f597a8;--color-red-300-rgb:245,151,168;--color-red-400:#e0707d;--color-red-400-rgb:224,112,125;--color-red-500:#c93b55;--color-red-500-rgb:201,59,85;--color-red-600:#a82433;--color-red-600-rgb:168,36,51;--color-red-700:#6c1e20;--color-red-700-rgb:108,30,32;--color-orange-100:#fff0e8;--color-orange-100-rgb:255,240,232;--color-orange-200:#ffd1b9;--color-orange-200-rgb:255,209,185;--color-orange-300:#ffb08a;--color-orange-300-rgb:255,176,138;--color-orange-400:#ff9461;--color-orange-400-rgb:255,148,97;--color-orange-500:#e96c2f;--color-orange-500-rgb:233,108,47;--color-orange-600:#b74302;--color-orange-600-rgb:183,67,2;--color-orange-700:#903c00;--color-orange-700-rgb:144,60,0;--color-gray-100:#f9f9f9;--color-gray-100-rgb:249,249,249;--color-gray-200:#f4f4f5;--color-gray-200-rgb:244,244,245;--color-gray-300:#eaeaec;--color-gray-300-rgb:234,234,236;--color-gray-400:#cdcdd0;--color-gray-400-rgb:205,205,208;--color-gray-500:#878792;--color-gray-500-rgb:135,135,146;--color-gray-600:#524e56;--color-gray-600-rgb:82,78,86;--color-white:#fff;--color-white-rgb:255,255,255;--color-black:#000;--color-black-rgb:0,0,0;--data-viz-favorable:#7dd5bd;--data-viz-favorable-rgb:125,213,189;--data-viz-unfavorable:#e68d97;--data-viz-unfavorable-rgb:230,141,151;--layout-content-max-width:1392px;--layout-content-max-width-with-sidebar:1080px;--layout-content-side-margin:72px;--layout-mobile-actions-drawer-height:60px;--layout-navigation-bar-height:72px;--layout-breakpoints-medium:768px;--layout-breakpoints-large:1080px;--shadow-small-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 3px 16px 0 rgba(0,0,0,.06);--shadow-large-box-shadow:0 3px 9px 0 rgba(0,0,0,.1),0 8px 40px 0 rgba(0,0,0,.08);--spacing-0:0;--spacing-1:.0625rem;--spacing-2:.125rem;--spacing-4:.25rem;--spacing-6:.375rem;--spacing-8:.5rem;--spacing-12:.75rem;--spacing-16:1rem;--spacing-20:1.25rem;--spacing-24:1.5rem;--spacing-32:2rem;--spacing-40:2.5rem;--spacing-48:3rem;--spacing-56:3.5rem;--spacing-64:4rem;--spacing-72:4.5rem;--spacing-80:5rem;--spacing-96:6rem;--spacing-112:7rem;--spacing-128:8rem;--spacing-160:10rem;--spacing-200:12.5rem;--spacing-240:15rem;--spacing-280:17.5rem;--spacing-320:20rem;--spacing-xs:0.375rem;--spacing-sm:0.75rem;--spacing-md:1.5rem;--spacing-lg:2.25rem;--spacing-xl:3rem;--spacing-xxl:3.75rem;--spacing-xxxl:4.5rem;--spacing-xxxxl:5.25rem;--spacing-xxxxxl:6rem;--typography-data-large-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-data-large-font-weight:700;--typography-data-large-font-size:5.25rem;--typography-data-large-line-height:5.25rem;--typography-data-large-letter-spacing:normal;--typography-data-large-units-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-data-large-units-font-weight:700;--typography-data-large-units-font-size:2.625rem;--typography-data-large-units-line-height:5.25rem;--typography-data-large-units-letter-spacing:normal;--typography-data-medium-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-data-medium-font-weight:700;--typography-data-medium-font-size:3rem;--typography-data-medium-line-height:5rem;--typography-data-medium-letter-spacing:normal;--typography-data-medium-units-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-data-medium-units-font-weight:700;--typography-data-medium-units-font-size:1.5rem;--typography-data-medium-units-line-height:5rem;--typography-data-medium-units-letter-spacing:normal;--typography-data-small-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-data-small-font-weight:700;--typography-data-small-font-size:1.5rem;--typography-data-small-line-height:1.5rem;--typography-data-small-letter-spacing:normal;--typography-data-small-units-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-data-small-units-font-weight:700;--typography-data-small-units-font-size:1.125rem;--typography-data-small-units-line-height:1.5rem;--typography-data-small-units-letter-spacing:normal;--typography-display-0-font-family:"Tiempos Headline",Georgia,serif;--typography-display-0-font-weight:800;--typography-display-0-font-size:4.5rem;--typography-display-0-line-height:5.25rem;--typography-display-0-letter-spacing:0em;--typography-heading-1-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-heading-1-font-weight:500;--typography-heading-1-font-size:2.125rem;--typography-heading-1-line-height:2.625rem;--typography-heading-1-letter-spacing:normal;--typography-heading-2-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-heading-2-font-weight:600;--typography-heading-2-font-size:1.75rem;--typography-heading-2-line-height:2.25rem;--typography-heading-2-letter-spacing:normal;--typography-heading-3-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-heading-3-font-weight:600;--typography-heading-3-font-size:1.375rem;--typography-heading-3-line-height:1.875rem;--typography-heading-3-letter-spacing:normal;--typography-heading-4-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-heading-4-font-weight:600;--typography-heading-4-font-size:1.125rem;--typography-heading-4-line-height:1.5rem;--typography-heading-4-letter-spacing:normal;--typography-heading-5-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-heading-5-font-weight:600;--typography-heading-5-font-size:1rem;--typography-heading-5-line-height:1.5rem;--typography-heading-5-letter-spacing:normal;--typography-heading-6-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-heading-6-font-weight:600;--typography-heading-6-font-size:0.875rem;--typography-heading-6-line-height:1.5rem;--typography-heading-6-letter-spacing:normal;--typography-paragraph-intro-lede-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-paragraph-intro-lede-font-weight:400;--typography-paragraph-intro-lede-font-size:1.25rem;--typography-paragraph-intro-lede-line-height:1.875rem;--typography-paragraph-intro-lede-letter-spacing:0;--typography-paragraph-intro-lede-max-width:975px;--typography-paragraph-body-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-paragraph-body-font-weight:400;--typography-paragraph-body-font-size:1rem;--typography-paragraph-body-line-height:1.5rem;--typography-paragraph-body-letter-spacing:normal;--typography-paragraph-body-max-width:780px;--typography-paragraph-small-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-paragraph-small-font-weight:400;--typography-paragraph-small-font-size:0.875rem;--typography-paragraph-small-line-height:1.125rem;--typography-paragraph-small-letter-spacing:normal;--typography-paragraph-small-max-width:680px;--typography-paragraph-extra-small-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-paragraph-extra-small-font-weight:400;--typography-paragraph-extra-small-font-size:0.75rem;--typography-paragraph-extra-small-line-height:1.125rem;--typography-paragraph-extra-small-letter-spacing:normal;--typography-paragraph-extra-small-max-width:600px;--typography-paragraph-bold-font-weight:600;--typography-button-primary-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-button-primary-font-weight:500;--typography-button-primary-font-size:1.125rem;--typography-button-primary-line-height:1.5rem;--typography-button-primary-letter-spacing:normal;--typography-button-secondary-font-family:"Inter","Noto Sans",Helvetica,Arial,sans-serif;--typography-button-secondary-font-weight:500;--typography-button-secondary-font-size:1rem;--typography-button-secondary-line-height:1.5rem;--typography-button-secondary-letter-spacing:normal}}@layer normalize{html{text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{appearance:auto}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:auto;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}}@layer reset{@font-face{font-family:Tiempos Headline;font-weight:800;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-bold.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-bold.woff)}@font-face{font-family:Tiempos Headline;font-weight:500;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-medium.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/tiempos/tiempos-headline-medium.woff)}@font-face{font-family:Greycliff CF;font-weight:300;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/greycliff/greycliff-cf-light.woff) format("woff")}@font-face{font-family:Greycliff CF;font-weight:400;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/greycliff/greycliff-cf-regular.woff) format("woff")}@font-face{font-family:Greycliff CF;font-weight:500;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/greycliff/greycliff-cf-medium.woff) format("woff")}@font-face{font-family:Greycliff CF;font-weight:600;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/greycliff/greycliff-cf-demi-bold.woff) format("woff")}@font-face{font-family:Greycliff CF;font-weight:700;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/greycliff/greycliff-cf-bold.woff) format("woff")}@font-face{font-family:Greycliff CF;font-weight:800;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/greycliff/greycliff-cf-extra-bold.woff) format("woff")}@font-face{font-family:Inter;font-weight:300;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-light.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-light.woff)}@font-face{font-family:Inter;font-weight:400;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-regular.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-regular.woff)}@font-face{font-family:Inter;font-weight:500;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-medium.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-medium.woff)}@font-face{font-family:Inter;font-weight:600;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-demi-bold.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-demi-bold.woff)}@font-face{font-family:Inter;font-weight:700;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-bold.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-bold.woff)}@font-face{font-family:Inter;font-weight:800;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-extra-bold.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/inter/inter-extra-bold.woff)}@font-face{font-family:IBM Plex Mono;src:url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/ibm-plex-mono/ibm-plex-mono-regular.woff2),url(https://d1e7r7b0lb8p4d.cloudfront.net/fonts/ibm-plex-mono/ibm-plex-mono-regular.woff)}}@layer reset{*,:after,:before{border-color:var(--border-solid-border-color,"currentColor");border-style:solid;border-width:0}}
|
|
2
2
|
@layer kz-components {
|
|
3
|
-
.
|
|
3
|
+
.ListItem-module_listItem__xGr6A {
|
|
4
|
+
font-family: var(--typography-paragraph-body-font-family);
|
|
5
|
+
font-weight: var(--typography-paragraph-body-font-weight);
|
|
6
|
+
font-size: var(--typography-paragraph-body-font-size);
|
|
7
|
+
line-height: var(--typography-paragraph-body-line-height);
|
|
8
|
+
letter-spacing: var(--typography-paragraph-body-letter-spacing);
|
|
9
|
+
padding: var(--spacing-8) var(--spacing-16);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.ListItem-module_listItem__xGr6A:focus-visible {
|
|
13
|
+
background-color: var(--color-blue-200);
|
|
14
|
+
outline: none;
|
|
15
|
+
border-color: white;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@layer kz-components {
|
|
20
|
+
.List-module_list__bbFPn {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@layer kz-components {
|
|
27
|
+
.Popover-module_popover__BjY2S {
|
|
28
|
+
position: absolute;
|
|
29
|
+
height: auto;
|
|
4
30
|
background-color: var(--color-white);
|
|
5
31
|
border-radius: var(--spacing-8);
|
|
6
|
-
padding:
|
|
7
|
-
width: 200px;
|
|
32
|
+
padding: 0;
|
|
8
33
|
box-shadow: var(--shadow-small-box-shadow);
|
|
34
|
+
overflow: hidden auto;
|
|
35
|
+
margin: 0;
|
|
36
|
+
box-sizing: border-box;
|
|
37
|
+
|
|
38
|
+
/* TODO: update width based on design */
|
|
39
|
+
width: 200px;
|
|
40
|
+
|
|
41
|
+
@supports (anchor-name: --anchor) {
|
|
42
|
+
position-anchor: var(--position-anchor);
|
|
43
|
+
margin-block: var(--spacing-4);
|
|
44
|
+
position-area: var(--position-area) center;
|
|
45
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
46
|
+
width: anchor-size(width);
|
|
47
|
+
}
|
|
9
48
|
}
|
|
10
49
|
}
|
|
11
50
|
|
|
@@ -19,16 +58,9 @@
|
|
|
19
58
|
}
|
|
20
59
|
}
|
|
21
60
|
|
|
22
|
-
@layer kz-components {
|
|
23
|
-
.List-module_list__bbFPn {
|
|
24
|
-
display: flex;
|
|
25
|
-
flex-direction: column;
|
|
26
|
-
gap: var(--spacing-16);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
61
|
@layer kz-components {
|
|
31
62
|
.Trigger-module_button__giSqA {
|
|
63
|
+
anchor-name: var(--anchor-name);
|
|
32
64
|
display: flex;
|
|
33
65
|
align-items: center;
|
|
34
66
|
justify-content: space-between;
|
|
@@ -46,16 +78,6 @@
|
|
|
46
78
|
}
|
|
47
79
|
}
|
|
48
80
|
|
|
49
|
-
@layer kz-components {
|
|
50
|
-
.ListItem-module_listItem__xGr6A {
|
|
51
|
-
font-family: var(--typography-paragraph-body-font-family);
|
|
52
|
-
font-weight: var(--typography-paragraph-body-font-weight);
|
|
53
|
-
font-size: var(--typography-paragraph-body-font-size);
|
|
54
|
-
line-height: var(--typography-paragraph-body-line-height);
|
|
55
|
-
letter-spacing: var(--typography-paragraph-body-letter-spacing);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
81
|
@layer kz-components {
|
|
60
82
|
/*
|
|
61
83
|
* This is taken from the Material Symbols CDN
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import React, { type
|
|
2
|
-
import { type
|
|
3
|
-
|
|
4
|
-
children?: React.ReactNode;
|
|
5
|
-
} & OverrideClassName<HTMLAttributes<Element>>;
|
|
1
|
+
import React, { type PropsWithChildren } from 'react';
|
|
2
|
+
import { type ListBoxProps } from 'react-aria-components';
|
|
3
|
+
import { type SelectItem, type SelectSection, type SingleSelectProps } from './types';
|
|
6
4
|
export declare const SingleSelect: {
|
|
7
|
-
({
|
|
5
|
+
({ items, onSelectionChange, children, ...restProps }: PropsWithChildren<SingleSelectProps>): JSX.Element;
|
|
8
6
|
displayName: string;
|
|
9
7
|
List: {
|
|
10
|
-
({ children, className, ...props }:
|
|
8
|
+
({ children, className, ...props }: ListBoxProps<SelectItem | SelectSection> & PropsWithChildren): React.ReactElement;
|
|
11
9
|
displayName: string;
|
|
12
10
|
};
|
|
13
11
|
ListItem: {
|
|
14
|
-
({ children, className, ...props }: import("react-aria-components").ListBoxItemProps<
|
|
12
|
+
({ children, className, ...props }: import("react-aria-components").ListBoxItemProps<SelectItem> & PropsWithChildren): React.ReactElement;
|
|
15
13
|
displayName: string;
|
|
16
14
|
};
|
|
17
15
|
ListSection: {
|
|
18
|
-
({ name, className, children, ...props }: import("react-aria-components").ListBoxSectionProps<
|
|
16
|
+
({ name, className, children, ...props }: import("react-aria-components").ListBoxSectionProps<SelectSection> & PropsWithChildren & {
|
|
19
17
|
name: string;
|
|
20
18
|
}): React.ReactElement;
|
|
21
19
|
displayName: string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Key } from '@react-types/shared';
|
|
2
|
+
import { type SelectItem, type SelectSection } from '../types';
|
|
3
|
+
type SingleSelectContextType = {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
setOpen: (open: boolean) => void;
|
|
6
|
+
selectedKey: Key | null;
|
|
7
|
+
items: (SelectItem | SelectSection)[];
|
|
8
|
+
anchorName: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const SingleSelectContext: import("react").Context<SingleSelectContextType | undefined>;
|
|
11
|
+
export declare const useSingleSelectContext: () => SingleSelectContextType;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SingleSelectContext';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { type PropsWithChildren } from 'react';
|
|
2
2
|
import { type ListBoxProps } from 'react-aria-components';
|
|
3
|
+
import { type SelectItem, type SelectSection } from '../../types';
|
|
3
4
|
export declare const List: {
|
|
4
|
-
({ children, className, ...props }: ListBoxProps<
|
|
5
|
+
({ children, className, ...props }: ListBoxProps<SelectItem | SelectSection> & PropsWithChildren): React.ReactElement;
|
|
5
6
|
displayName: string;
|
|
6
7
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { type PropsWithChildren } from 'react';
|
|
2
2
|
import { type ListBoxItemProps } from 'react-aria-components';
|
|
3
|
+
import { type SelectItem } from '../../types';
|
|
3
4
|
export declare const ListItem: {
|
|
4
|
-
({ children, className, ...props }: ListBoxItemProps<
|
|
5
|
+
({ children, className, ...props }: ListBoxItemProps<SelectItem> & PropsWithChildren): React.ReactElement;
|
|
5
6
|
displayName: string;
|
|
6
7
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React, { type PropsWithChildren } from 'react';
|
|
2
2
|
import { type ListBoxSectionProps } from 'react-aria-components';
|
|
3
|
+
import { type SelectSection } from '../../types';
|
|
3
4
|
export declare const ListSection: {
|
|
4
|
-
({ name, className, children, ...props }: ListBoxSectionProps<
|
|
5
|
+
({ name, className, children, ...props }: ListBoxSectionProps<SelectSection> & PropsWithChildren & {
|
|
5
6
|
name: string;
|
|
6
7
|
}): React.ReactElement;
|
|
7
8
|
displayName: string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React, { type PropsWithChildren } from 'react';
|
|
2
|
+
import { type PopoverProps } from '../../types';
|
|
3
|
+
export declare const Popover: {
|
|
4
|
+
({ buttonRef, popoverRef, racPopoverRef, children, }: PopoverProps & PropsWithChildren): React.ReactElement;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|