@automattic/vip-design-system 2.4.5 → 2.6.1
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/build/system/Breadcrumbs/Breadcrumbs.d.ts +1 -0
- package/build/system/Breadcrumbs/Breadcrumbs.js +75 -20
- package/build/system/Breadcrumbs/Breadcrumbs.stories.d.ts +2 -0
- package/build/system/Breadcrumbs/Breadcrumbs.stories.js +47 -7
- package/build/system/Breadcrumbs/Breadcrumbs.test.js +72 -0
- package/build/system/Breadcrumbs/styles.d.ts +2 -0
- package/build/system/Breadcrumbs/styles.js +8 -2
- package/build/system/Dropdown/Dropdown.d.ts +25 -36
- package/build/system/Dropdown/Dropdown.js +60 -99
- package/build/system/Dropdown/Dropdown.stories.d.ts +1 -26
- package/build/system/Dropdown/Dropdown.test.js +51 -28
- package/build/system/Dropdown/DropdownContent.d.ts +14 -10
- package/build/system/Dropdown/DropdownContent.js +43 -47
- package/build/system/Dropdown/DropdownItem.d.ts +20 -32
- package/build/system/Dropdown/DropdownItem.js +86 -103
- package/build/system/Dropdown/DropdownLabel.d.ts +11 -7
- package/build/system/Dropdown/DropdownLabel.js +29 -29
- package/build/system/Dropdown/DropdownSeparator.d.ts +10 -6
- package/build/system/Dropdown/DropdownSeparator.js +28 -28
- package/build/system/Dropdown/index.d.ts +17 -39
- package/build/system/Dropdown/index.js +23 -50
- package/build/system/FilterDropdown/FilterDropdown.d.ts +27 -0
- package/build/system/FilterDropdown/FilterDropdown.js +75 -0
- package/build/system/FilterDropdown/FilterDropdown.stories.d.ts +18 -0
- package/build/system/FilterDropdown/FilterDropdown.stories.js +46 -0
- package/build/system/FilterDropdown/FilterDropdown.test.d.ts +1 -0
- package/build/system/FilterDropdown/FilterDropdown.test.js +53 -0
- package/build/system/Hr/Hr.d.ts +7 -0
- package/build/system/Hr/Hr.js +22 -0
- package/build/system/Hr/Hr.stories.d.ts +23 -0
- package/build/system/Hr/Hr.stories.js +30 -0
- package/build/system/Hr/Hr.test.d.ts +1 -0
- package/build/system/Hr/Hr.test.js +41 -0
- package/build/system/Link/Link.d.ts +11 -1
- package/build/system/Link/Link.js +16 -1
- package/build/system/Link/Link.stories.d.ts +14 -1
- package/build/system/Link/Link.stories.js +16 -3
- package/build/system/Nav/styles.js +2 -1
- package/build/system/Page/Page.d.ts +2 -0
- package/build/system/Page/Page.js +10 -0
- package/build/system/Page/Page.test.d.ts +1 -0
- package/build/system/Page/Page.test.js +41 -0
- package/build/system/index.d.ts +3 -1
- package/build/system/index.js +4 -0
- package/build/system/theme/index.d.ts +889 -23
- package/build/system/theme/index.js +7 -8
- package/build/system/utils/stories/CustomLink.d.ts +1 -0
- package/build/system/utils/stories/CustomLink.js +7 -1
- package/package.json +1 -1
- package/src/system/Breadcrumbs/Breadcrumbs.stories.tsx +32 -3
- package/src/system/Breadcrumbs/Breadcrumbs.test.tsx +60 -0
- package/src/system/Breadcrumbs/Breadcrumbs.tsx +100 -29
- package/src/system/Breadcrumbs/styles.ts +11 -0
- package/src/system/Dropdown/{Dropdown.test.js → Dropdown.test.tsx} +2 -1
- package/src/system/Dropdown/Dropdown.tsx +72 -0
- package/src/system/Dropdown/DropdownContent.tsx +46 -0
- package/src/system/Dropdown/DropdownItem.tsx +112 -0
- package/src/system/Dropdown/DropdownLabel.tsx +29 -0
- package/src/system/Dropdown/DropdownSeparator.tsx +28 -0
- package/src/system/Dropdown/{index.js → index.ts} +1 -3
- package/src/system/FilterDropdown/FilterDropdown.stories.tsx +57 -0
- package/src/system/FilterDropdown/FilterDropdown.test.tsx +52 -0
- package/src/system/FilterDropdown/FilterDropdown.tsx +92 -0
- package/src/system/Hr/Hr.stories.tsx +48 -0
- package/src/system/Hr/Hr.test.tsx +22 -0
- package/src/system/Hr/Hr.tsx +11 -0
- package/src/system/Link/Link.stories.tsx +42 -1
- package/src/system/Link/Link.tsx +17 -8
- package/src/system/Nav/styles.ts +1 -0
- package/src/system/Page/Page.test.tsx +22 -0
- package/src/system/Page/Page.tsx +3 -0
- package/src/system/index.js +4 -0
- package/src/system/theme/index.js +7 -8
- package/src/system/utils/stories/CustomLink.tsx +6 -0
- package/tokens/valet-core/$metadata.json +1 -17
- package/tokens/valet-core/$themes.json +0 -2586
- package/src/system/Dropdown/Dropdown.js +0 -101
- package/src/system/Dropdown/DropdownContent.js +0 -50
- package/src/system/Dropdown/DropdownItem.js +0 -108
- package/src/system/Dropdown/DropdownLabel.js +0 -31
- package/src/system/Dropdown/DropdownSeparator.js +0 -30
- package/tokens/valet-core/figma-parsely-web-type.json +0 -1217
- package/tokens/valet-core/figma-valet-web-type.json +0 -1217
- package/tokens/valet-core/figma-wpvip-services-web-type.json +0 -1267
- package/tokens/valet-core/figma-wpvip-web-type.json +0 -1213
- package/tokens/valet-core/parsely-web-color.json +0 -729
- package/tokens/valet-core/parsely-web-core.json +0 -172
- package/tokens/valet-core/parsely-web-type.json +0 -362
- package/tokens/valet-core/valet-web-color.json +0 -677
- package/tokens/valet-core/valet-web-core.json +0 -172
- package/tokens/valet-core/wpvip-services-web-color.json +0 -730
- package/tokens/valet-core/wpvip-services-web-core.json +0 -172
- package/tokens/valet-core/wpvip-services-web-type.json +0 -412
- package/tokens/valet-core/wpvip-web-color-dark.json +0 -735
- package/tokens/valet-core/wpvip-web-color.json +0 -730
- package/tokens/valet-core/wpvip-web-type.json +0 -412
- package/tokens/valet-core/wpvip-web.json +0 -1310
|
@@ -1,40 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
({ trigger, children, open, defaultOpen, onOpenChange, modal, dir, contentProps, portalProps, className, }: {
|
|
4
|
-
trigger: any;
|
|
5
|
-
children: any;
|
|
6
|
-
open?: undefined;
|
|
7
|
-
defaultOpen?: boolean | undefined;
|
|
8
|
-
onOpenChange?: undefined;
|
|
9
|
-
modal?: boolean | undefined;
|
|
10
|
-
dir?: string | undefined;
|
|
11
|
-
contentProps?: {} | undefined;
|
|
12
|
-
portalProps?: {} | undefined;
|
|
13
|
-
className: any;
|
|
14
|
-
}): import("react").JSX.Element;
|
|
15
|
-
propTypes: {
|
|
16
|
-
trigger: import("prop-types").Validator<NonNullable<import("prop-types").ReactNodeLike>>;
|
|
17
|
-
children: import("prop-types").Validator<NonNullable<import("prop-types").ReactNodeLike>>;
|
|
18
|
-
open: import("prop-types").Requireable<boolean>;
|
|
19
|
-
defaultOpen: import("prop-types").Requireable<boolean>;
|
|
20
|
-
onOpenChange: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
21
|
-
modal: import("prop-types").Requireable<boolean>;
|
|
22
|
-
dir: import("prop-types").Requireable<string>;
|
|
23
|
-
contentProps: import("prop-types").Requireable<any>;
|
|
24
|
-
portalProps: import("prop-types").Requireable<any>;
|
|
25
|
-
className: import("prop-types").Requireable<string>;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
export const Trigger: import("react").ForwardRefExoticComponent<import("@radix-ui/react-dropdown-menu").DropdownMenuTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
29
|
-
export const Content: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
30
|
-
export const Item: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
31
|
-
export const CheckboxItem: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
32
|
-
export const RadioGroup: import("react").ForwardRefExoticComponent<import("@radix-ui/react-dropdown-menu").DropdownMenuRadioGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
33
|
-
export const RadioItem: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
34
|
-
export const ItemIndicator: import("react").ForwardRefExoticComponent<import("@radix-ui/react-dropdown-menu").DropdownMenuItemIndicatorProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
35
|
-
export const Label: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
36
|
-
export const Separator: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
37
|
-
export const Sub: import("react").FC<import("@radix-ui/react-dropdown-menu").DropdownMenuSubProps>;
|
|
38
|
-
export const SubTrigger: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
39
|
-
export const SubContent: import("react").ForwardRefExoticComponent<import("react").RefAttributes<any>>;
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
/// <reference types="react" />
|
|
40
3
|
import { Dropdown } from './Dropdown';
|
|
4
|
+
declare const Root: import("react").FC<import("./Dropdown").DropdownProps>;
|
|
5
|
+
declare const Content: import("react").ForwardRefExoticComponent<import("./DropdownContent").DropdownContentProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const Trigger: import("react").ForwardRefExoticComponent<import("@radix-ui/react-dropdown-menu").DropdownMenuTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const Item: import("react").ForwardRefExoticComponent<import("./DropdownItem").DropdownItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const CheckboxItem: import("react").ForwardRefExoticComponent<import("./DropdownItem").DropdownCheckboxItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const RadioGroup: import("react").ForwardRefExoticComponent<import("@radix-ui/react-dropdown-menu").DropdownMenuRadioGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const RadioItem: import("react").ForwardRefExoticComponent<import("./DropdownItem").DropdownRadioItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare const ItemIndicator: import("react").ForwardRefExoticComponent<import("@radix-ui/react-dropdown-menu").DropdownMenuItemIndicatorProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
12
|
+
declare const Label: import("react").ForwardRefExoticComponent<import("./DropdownLabel").DropdownLabelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
13
|
+
declare const Separator: import("react").ForwardRefExoticComponent<import("./DropdownSeparator").DropdownSeparatorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
14
|
+
declare const Sub: import("react").FC<import("@radix-ui/react-dropdown-menu").DropdownMenuSubProps>;
|
|
15
|
+
declare const SubTrigger: import("react").ForwardRefExoticComponent<import("./DropdownItem").DropdownSubTriggerItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
16
|
+
declare const SubContent: import("react").ForwardRefExoticComponent<import("./DropdownContent").DropdownContentProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
17
|
+
export { Root, Trigger, Content, Item, CheckboxItem, RadioGroup, RadioItem, ItemIndicator, Label, Separator, Sub, SubTrigger, SubContent, };
|
|
18
|
+
export default Dropdown;
|
|
@@ -1,52 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* Internal dependencies
|
|
4
|
-
*/
|
|
5
|
-
import {
|
|
6
|
-
Dropdown,
|
|
7
|
-
DropdownTrigger,
|
|
8
|
-
DropdownRadioGroup,
|
|
9
|
-
DropdownItemIndicator,
|
|
10
|
-
DropdownSub,
|
|
11
|
-
} from './Dropdown';
|
|
12
|
-
import { DropdownSubContent, DropdownContent } from './DropdownContent';
|
|
13
|
-
import {
|
|
14
|
-
DropdownItem,
|
|
15
|
-
DropdownCheckboxItem,
|
|
16
|
-
DropdownRadioItem,
|
|
17
|
-
DropdownSubTrigger,
|
|
18
|
-
} from './DropdownItem';
|
|
19
|
-
import { DropdownLabel } from './DropdownLabel';
|
|
20
|
-
import { DropdownSeparator } from './DropdownSeparator';
|
|
21
|
-
|
|
22
|
-
const Root = Dropdown;
|
|
23
|
-
const Content = DropdownContent;
|
|
24
|
-
const Trigger = DropdownTrigger;
|
|
25
|
-
const Item = DropdownItem;
|
|
26
|
-
const CheckboxItem = DropdownCheckboxItem;
|
|
27
|
-
const RadioGroup = DropdownRadioGroup;
|
|
28
|
-
const RadioItem = DropdownRadioItem;
|
|
29
|
-
const ItemIndicator = DropdownItemIndicator;
|
|
30
|
-
const Label = DropdownLabel;
|
|
31
|
-
const Separator = DropdownSeparator;
|
|
32
|
-
const Sub = DropdownSub;
|
|
33
|
-
const SubTrigger = DropdownSubTrigger;
|
|
34
|
-
const SubContent = DropdownSubContent;
|
|
1
|
+
"use strict";
|
|
35
2
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
ItemIndicator,
|
|
45
|
-
Label,
|
|
46
|
-
Separator,
|
|
47
|
-
Sub,
|
|
48
|
-
SubTrigger,
|
|
49
|
-
SubContent,
|
|
50
|
-
};
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Trigger = exports.SubTrigger = exports.SubContent = exports.Sub = exports.Separator = exports.Root = exports.RadioItem = exports.RadioGroup = exports.Label = exports.ItemIndicator = exports.Item = exports.Content = exports.CheckboxItem = void 0;
|
|
5
|
+
var _Dropdown = require("./Dropdown");
|
|
6
|
+
var _DropdownContent = require("./DropdownContent");
|
|
7
|
+
var _DropdownItem = require("./DropdownItem");
|
|
8
|
+
var _DropdownLabel = require("./DropdownLabel");
|
|
9
|
+
var _DropdownSeparator = require("./DropdownSeparator");
|
|
10
|
+
/** @jsxImportSource theme-ui */
|
|
51
11
|
|
|
52
|
-
|
|
12
|
+
var Root = exports.Root = _Dropdown.Dropdown;
|
|
13
|
+
var Content = exports.Content = _DropdownContent.DropdownContent;
|
|
14
|
+
var Trigger = exports.Trigger = _Dropdown.DropdownTrigger;
|
|
15
|
+
var Item = exports.Item = _DropdownItem.DropdownItem;
|
|
16
|
+
var CheckboxItem = exports.CheckboxItem = _DropdownItem.DropdownCheckboxItem;
|
|
17
|
+
var RadioGroup = exports.RadioGroup = _Dropdown.DropdownRadioGroup;
|
|
18
|
+
var RadioItem = exports.RadioItem = _DropdownItem.DropdownRadioItem;
|
|
19
|
+
var ItemIndicator = exports.ItemIndicator = _Dropdown.DropdownItemIndicator;
|
|
20
|
+
var Label = exports.Label = _DropdownLabel.DropdownLabel;
|
|
21
|
+
var Separator = exports.Separator = _DropdownSeparator.DropdownSeparator;
|
|
22
|
+
var Sub = exports.Sub = _Dropdown.DropdownSub;
|
|
23
|
+
var SubTrigger = exports.SubTrigger = _DropdownItem.DropdownSubTrigger;
|
|
24
|
+
var SubContent = exports.SubContent = _DropdownContent.DropdownSubContent;
|
|
25
|
+
var _default = exports["default"] = _Dropdown.Dropdown;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { DropdownCheckboxItemProps } from '../Dropdown/DropdownItem';
|
|
4
|
+
export type FilterDropdownCheckItemProps = DropdownCheckboxItemProps & {
|
|
5
|
+
checked: boolean;
|
|
6
|
+
item: {
|
|
7
|
+
label: string;
|
|
8
|
+
size?: number | string;
|
|
9
|
+
};
|
|
10
|
+
onClick: () => void;
|
|
11
|
+
};
|
|
12
|
+
export type FilterDropDownFilterProp = {
|
|
13
|
+
label: string;
|
|
14
|
+
size?: number | string;
|
|
15
|
+
value?: number | string;
|
|
16
|
+
};
|
|
17
|
+
export interface FilterDropdownFiltersProp {
|
|
18
|
+
[key: string]: FilterDropDownFilterProp;
|
|
19
|
+
}
|
|
20
|
+
export type FilterDropdownProps = {
|
|
21
|
+
className?: string;
|
|
22
|
+
filters: FilterDropdownFiltersProp;
|
|
23
|
+
label?: React.ReactNode | string;
|
|
24
|
+
onSelect: (filter: FilterDropDownFilterProp, key: string) => void;
|
|
25
|
+
defaultValue?: string | null;
|
|
26
|
+
};
|
|
27
|
+
export declare const FilterDropdown: ({ className, filters, label, onSelect, defaultValue, }: FilterDropdownProps) => React.JSX.Element;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.FilterDropdown = void 0;
|
|
5
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
6
|
+
var _i18nCalypso = require("i18n-calypso");
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _md = require("react-icons/md");
|
|
9
|
+
var _Button = require("../Button");
|
|
10
|
+
var Dropdown = _interopRequireWildcard(require("../Dropdown"));
|
|
11
|
+
var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText"));
|
|
12
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
16
|
+
/** @jsxImportSource theme-ui */
|
|
17
|
+
|
|
18
|
+
var FilterDropdownCheckItem = function FilterDropdownCheckItem(_ref) {
|
|
19
|
+
var checked = _ref.checked,
|
|
20
|
+
item = _ref.item,
|
|
21
|
+
onClick = _ref.onClick;
|
|
22
|
+
return (0, _jsxRuntime.jsxs)(Dropdown.CheckboxItem, {
|
|
23
|
+
checked: checked,
|
|
24
|
+
onClick: onClick,
|
|
25
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.ItemIndicator, {
|
|
26
|
+
children: (0, _jsxRuntime.jsx)(_md.MdCheck, {
|
|
27
|
+
size: 14,
|
|
28
|
+
sx: {
|
|
29
|
+
mr: 2
|
|
30
|
+
},
|
|
31
|
+
fill: "brand"
|
|
32
|
+
})
|
|
33
|
+
}), item.label, " ", item != null && item.size ? "(" + (item == null ? void 0 : item.size) + ")" : null]
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
var FilterDropdown = exports.FilterDropdown = function FilterDropdown(_ref2) {
|
|
37
|
+
var className = _ref2.className,
|
|
38
|
+
filters = _ref2.filters,
|
|
39
|
+
label = _ref2.label,
|
|
40
|
+
onSelect = _ref2.onSelect,
|
|
41
|
+
_ref2$defaultValue = _ref2.defaultValue,
|
|
42
|
+
defaultValue = _ref2$defaultValue === void 0 ? null : _ref2$defaultValue;
|
|
43
|
+
var translate = (0, _i18nCalypso.useTranslate)();
|
|
44
|
+
var filterKeys = Object.keys(filters);
|
|
45
|
+
var firstFilter = filterKeys[0];
|
|
46
|
+
var _useState = (0, _react.useState)(defaultValue || firstFilter),
|
|
47
|
+
filter = _useState[0],
|
|
48
|
+
setFilter = _useState[1];
|
|
49
|
+
return (0, _jsxRuntime.jsx)(Dropdown.Root, {
|
|
50
|
+
trigger: (0, _jsxRuntime.jsxs)(_Button.Button, {
|
|
51
|
+
className: (0, _classnames["default"])('vip-filter-dropdown-trigger', className),
|
|
52
|
+
variant: "secondary",
|
|
53
|
+
children: [(0, _jsxRuntime.jsxs)(_ScreenReaderText["default"], {
|
|
54
|
+
children: [translate('Filter:'), " "]
|
|
55
|
+
}), label, (0, _jsxRuntime.jsxs)("strong", {
|
|
56
|
+
sx: {
|
|
57
|
+
mx: 2
|
|
58
|
+
},
|
|
59
|
+
children: [" ", filters[filter].label, " "]
|
|
60
|
+
}), (0, _jsxRuntime.jsx)(_ScreenReaderText["default"], {
|
|
61
|
+
children: translate('checked')
|
|
62
|
+
}), (0, _jsxRuntime.jsx)(_md.MdKeyboardArrowDown, {})]
|
|
63
|
+
}),
|
|
64
|
+
children: filterKeys.map(function (key) {
|
|
65
|
+
return (0, _jsxRuntime.jsx)(FilterDropdownCheckItem, {
|
|
66
|
+
checked: filter === key,
|
|
67
|
+
onClick: function onClick() {
|
|
68
|
+
setFilter(key);
|
|
69
|
+
onSelect(filters[key], key);
|
|
70
|
+
},
|
|
71
|
+
item: filters[key]
|
|
72
|
+
}, key);
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
/// <reference types="react" />
|
|
3
|
+
import { FilterDropdown } from './FilterDropdown';
|
|
4
|
+
import type { StoryObj } from '@storybook/react';
|
|
5
|
+
declare const _default: {
|
|
6
|
+
title: string;
|
|
7
|
+
component: ({ className, filters, label, onSelect, defaultValue, }: import("./FilterDropdown").FilterDropdownProps) => import("react").JSX.Element;
|
|
8
|
+
parameters: {
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export default _default;
|
|
17
|
+
type Story = StoryObj<typeof FilterDropdown>;
|
|
18
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Default = void 0;
|
|
5
|
+
var _FilterDropdown = require("./FilterDropdown");
|
|
6
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
7
|
+
/** @jsxImportSource theme-ui */
|
|
8
|
+
var _default = exports["default"] = {
|
|
9
|
+
title: 'FilterDropdown',
|
|
10
|
+
component: _FilterDropdown.FilterDropdown,
|
|
11
|
+
parameters: {
|
|
12
|
+
docs: {
|
|
13
|
+
description: {
|
|
14
|
+
component: "\n\nA Dropdown component that acts as a filter for a list of items.\n\n## Guidance\n\n### When to use the FilterDropdown component\n\n- When you want a Dropdown option that sticks with the selected value on the trigger button;\n\n### When to consider something else\n\n- When you want to display a list of options that does not require to stick with the selected value on the trigger button;\n\n## Component Properties\n"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var filterTypes = ['all', 'hasUpdate', 'isVulnerable'];
|
|
20
|
+
var FILTER_OPTIONS = {
|
|
21
|
+
all: {
|
|
22
|
+
value: 'all',
|
|
23
|
+
label: 'All'
|
|
24
|
+
},
|
|
25
|
+
hasUpdate: {
|
|
26
|
+
value: 'hasUpdate',
|
|
27
|
+
label: 'Update Available'
|
|
28
|
+
},
|
|
29
|
+
isVulnerable: {
|
|
30
|
+
value: 'isVulnerable',
|
|
31
|
+
label: 'Known Vulnerabilities'
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var Default = exports.Default = {
|
|
35
|
+
render: function render() {
|
|
36
|
+
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
37
|
+
children: (0, _jsxRuntime.jsx)(_FilterDropdown.FilterDropdown, {
|
|
38
|
+
className: "vip-plugins-filter-dropdown",
|
|
39
|
+
label: "Filter:",
|
|
40
|
+
filters: FILTER_OPTIONS,
|
|
41
|
+
onSelect: function onSelect() {},
|
|
42
|
+
defaultValue: FILTER_OPTIONS.all.value
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
5
|
+
require("@testing-library/jest-dom");
|
|
6
|
+
var _FilterDropdown = require("./FilterDropdown");
|
|
7
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
9
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
10
|
+
function getMenu() {
|
|
11
|
+
return _react.screen.getByRole('button', {
|
|
12
|
+
name: 'Filter: Auth Method All checked'
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
var props = {
|
|
16
|
+
filters: {
|
|
17
|
+
ALL_USERS: {
|
|
18
|
+
label: 'All',
|
|
19
|
+
authMethod: ''
|
|
20
|
+
},
|
|
21
|
+
WP_USERS: {
|
|
22
|
+
label: 'WP.com',
|
|
23
|
+
authMethod: 'wpcom'
|
|
24
|
+
},
|
|
25
|
+
GH_USERS: {
|
|
26
|
+
label: 'GitHub',
|
|
27
|
+
authMethod: 'github'
|
|
28
|
+
},
|
|
29
|
+
SSO_USERS: {
|
|
30
|
+
label: 'SSO',
|
|
31
|
+
authMethod: 'organization_sso'
|
|
32
|
+
},
|
|
33
|
+
SSO_OTHER_USERS: {
|
|
34
|
+
label: 'SSO (third-party)',
|
|
35
|
+
authMethod: 'other_sso'
|
|
36
|
+
},
|
|
37
|
+
BLOCKED_USERS: {
|
|
38
|
+
label: 'Blocked Auth Methods',
|
|
39
|
+
authMethod: 'restricted'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
label: 'Auth Method',
|
|
43
|
+
onSelect: jest.fn()
|
|
44
|
+
};
|
|
45
|
+
describe('<FilterDropdown />', function () {
|
|
46
|
+
it('render with all props passed', function () {
|
|
47
|
+
(0, _react.render)((0, _jsxRuntime.jsx)(_FilterDropdown.FilterDropdown, _extends({}, props)));
|
|
48
|
+
var menu = getMenu();
|
|
49
|
+
expect(menu).toBeInTheDocument();
|
|
50
|
+
expect(menu).toHaveTextContent(/Filter:/);
|
|
51
|
+
expect(menu).toHaveTextContent(/Auth Method/);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.Hr = void 0;
|
|
5
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
6
|
+
var _excluded = ["sx"];
|
|
7
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
8
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
9
|
+
/** @jsxImportSource theme-ui */
|
|
10
|
+
|
|
11
|
+
var Hr = exports.Hr = function Hr(_ref) {
|
|
12
|
+
var sx = _ref.sx,
|
|
13
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
14
|
+
return (0, _jsxRuntime.jsx)("hr", _extends({
|
|
15
|
+
sx: _extends({
|
|
16
|
+
my: 4,
|
|
17
|
+
border: 0,
|
|
18
|
+
height: '1px',
|
|
19
|
+
backgroundColor: 'borders.2'
|
|
20
|
+
}, sx)
|
|
21
|
+
}, rest));
|
|
22
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* External dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { Hr } from './Hr';
|
|
6
|
+
import type { StoryObj } from '@storybook/react';
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: {
|
|
11
|
+
title: string;
|
|
12
|
+
component: ({ sx, ...rest }: import("./Hr").HrProps) => import("react").JSX.Element;
|
|
13
|
+
parameters: {
|
|
14
|
+
docs: {
|
|
15
|
+
description: {
|
|
16
|
+
component: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
22
|
+
type Story = StoryObj<typeof Hr>;
|
|
23
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Default = void 0;
|
|
5
|
+
var _Hr = require("./Hr");
|
|
6
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* External dependencies
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
var _default = exports["default"] = {
|
|
14
|
+
title: 'Hr',
|
|
15
|
+
component: _Hr.Hr,
|
|
16
|
+
parameters: {
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component: "\n\nHorizontal Line.\n\n## Guidance\n\n### When to use the link component\n\n- When you want to separate sections with a horizontal line.\n\n### When to consider something else\n\n- When you want to display a vertical line;\n\n## Component Properties\n"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var Default = exports.Default = {
|
|
25
|
+
render: function render() {
|
|
26
|
+
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
27
|
+
children: ["Horizontal Line:", (0, _jsxRuntime.jsx)(_Hr.Hr, {})]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _jestAxe = require("jest-axe");
|
|
5
|
+
var _themeUi = require("theme-ui");
|
|
6
|
+
var _Hr = require("./Hr");
|
|
7
|
+
var _theme = _interopRequireDefault(require("../theme"));
|
|
8
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
11
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
12
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } /** @jsxImportSource theme-ui */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // @ts-nocheck
|
|
13
|
+
var renderWithTheme = function renderWithTheme(children) {
|
|
14
|
+
return (0, _react.render)((0, _jsxRuntime.jsx)(_themeUi.ThemeUIProvider, {
|
|
15
|
+
theme: _theme["default"],
|
|
16
|
+
children: children
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
var renderComponent = function renderComponent() {
|
|
20
|
+
return renderWithTheme((0, _jsxRuntime.jsx)(_Hr.Hr, {}));
|
|
21
|
+
};
|
|
22
|
+
describe('<Hr />', function () {
|
|
23
|
+
it('renders the Hr component', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
24
|
+
var _renderComponent, container;
|
|
25
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
26
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27
|
+
case 0:
|
|
28
|
+
_renderComponent = renderComponent(), container = _renderComponent.container;
|
|
29
|
+
_context.t0 = expect;
|
|
30
|
+
_context.next = 4;
|
|
31
|
+
return (0, _jestAxe.axe)(container);
|
|
32
|
+
case 4:
|
|
33
|
+
_context.t1 = _context.sent;
|
|
34
|
+
(0, _context.t0)(_context.t1).toHaveNoViolations();
|
|
35
|
+
case 6:
|
|
36
|
+
case "end":
|
|
37
|
+
return _context.stop();
|
|
38
|
+
}
|
|
39
|
+
}, _callee);
|
|
40
|
+
})));
|
|
41
|
+
});
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { LinkProps as ThemeLinkProps, ThemeUIStyleObject } from 'theme-ui';
|
|
3
|
+
export declare enum LinkVariant {
|
|
4
|
+
'primary' = 0,
|
|
5
|
+
'button-primary' = 1,
|
|
6
|
+
'button-secondary' = 2,
|
|
7
|
+
'button-tertiary' = 3,
|
|
8
|
+
'button-ghost' = 4,
|
|
9
|
+
'button-display' = 5,
|
|
10
|
+
'button-danger' = 6
|
|
11
|
+
}
|
|
3
12
|
export interface LinkProps extends ThemeLinkProps {
|
|
4
|
-
variant?:
|
|
13
|
+
variant?: keyof typeof LinkVariant;
|
|
5
14
|
}
|
|
15
|
+
export declare const linkUnderlineProperties: ThemeUIStyleObject;
|
|
6
16
|
export declare const defaultLinkComponentStyle: ThemeUIStyleObject;
|
|
7
17
|
export declare const Link: import("react").ForwardRefExoticComponent<Omit<LinkProps, "ref"> & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.defaultLinkComponentStyle = exports.Link = void 0;
|
|
4
|
+
exports.linkUnderlineProperties = exports.defaultLinkComponentStyle = exports.LinkVariant = exports.Link = void 0;
|
|
5
5
|
var _react = require("react");
|
|
6
6
|
var _themeUi = require("theme-ui");
|
|
7
7
|
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
@@ -12,6 +12,21 @@ var _excluded = ["variant", "sx"];
|
|
|
12
12
|
// Temporary interface until we add types to the theme definition.
|
|
13
13
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
14
14
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
15
|
+
var LinkVariant = exports.LinkVariant = /*#__PURE__*/function (LinkVariant) {
|
|
16
|
+
LinkVariant[LinkVariant["primary"] = 0] = "primary";
|
|
17
|
+
LinkVariant[LinkVariant["button-primary"] = 1] = "button-primary";
|
|
18
|
+
LinkVariant[LinkVariant["button-secondary"] = 2] = "button-secondary";
|
|
19
|
+
LinkVariant[LinkVariant["button-tertiary"] = 3] = "button-tertiary";
|
|
20
|
+
LinkVariant[LinkVariant["button-ghost"] = 4] = "button-ghost";
|
|
21
|
+
LinkVariant[LinkVariant["button-display"] = 5] = "button-display";
|
|
22
|
+
LinkVariant[LinkVariant["button-danger"] = 6] = "button-danger";
|
|
23
|
+
return LinkVariant;
|
|
24
|
+
}({});
|
|
25
|
+
var linkUnderlineProperties = exports.linkUnderlineProperties = {
|
|
26
|
+
textDecorationLine: 'underline',
|
|
27
|
+
textDecorationThickness: '0.07rem',
|
|
28
|
+
textUnderlineOffset: '0.250rem'
|
|
29
|
+
};
|
|
15
30
|
var defaultLinkComponentStyle = exports.defaultLinkComponentStyle = {
|
|
16
31
|
'&:focus-visible': function focusVisible(theme) {
|
|
17
32
|
return theme.outline;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* External dependencies
|
|
4
4
|
*/
|
|
5
|
-
import { Link } from '
|
|
5
|
+
import { Link, LinkVariant } from './Link';
|
|
6
6
|
import type { LinkProps } from './Link';
|
|
7
7
|
import type { StoryObj } from '@storybook/react';
|
|
8
8
|
/**
|
|
@@ -11,6 +11,19 @@ import type { StoryObj } from '@storybook/react';
|
|
|
11
11
|
declare const _default: {
|
|
12
12
|
title: string;
|
|
13
13
|
component: import("react").ForwardRefExoticComponent<Omit<LinkProps, "ref"> & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
14
|
+
argTypes: {
|
|
15
|
+
variant: {
|
|
16
|
+
type: string;
|
|
17
|
+
options: (string | LinkVariant)[];
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
parameters: {
|
|
21
|
+
docs: {
|
|
22
|
+
description: {
|
|
23
|
+
component: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
14
27
|
};
|
|
15
28
|
export default _default;
|
|
16
29
|
type Story = StoryObj<typeof Link>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports["default"] = exports.Default = exports.ButtonVariants = void 0;
|
|
5
|
-
var
|
|
5
|
+
var _Link = require("./Link");
|
|
6
6
|
var _Flex = require("../Flex/Flex");
|
|
7
7
|
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
8
8
|
/**
|
|
@@ -13,7 +13,20 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
|
13
13
|
*/
|
|
14
14
|
var _default = exports["default"] = {
|
|
15
15
|
title: 'Navigation/Link',
|
|
16
|
-
component:
|
|
16
|
+
component: _Link.Link,
|
|
17
|
+
argTypes: {
|
|
18
|
+
variant: {
|
|
19
|
+
type: 'select',
|
|
20
|
+
options: Object.values(_Link.LinkVariant)
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
parameters: {
|
|
24
|
+
docs: {
|
|
25
|
+
description: {
|
|
26
|
+
component: "\n\nLinks are navigational elements that direct visitors to other locations, either on the same page or to a different page or site. They can be inline or separate from the text flow. Since every link is a potential user interaction, too many links can be overwhelming.\n\n## Guidance\n\n### When to use the link component\n\n- When you want to direct users to another page or site.\n- When you want to direct users to another section of the same page (anchors).\n\n### When to consider something else\n\n- When you want to trigger an action (use a button instead).\n- When you want to display a message (use a notification instead).\n\n### Accessibility\n\n- Don\u2019t rely on only color to distinguish links\n- Don\u2019t block external links with disruptive notifications\n- Icons can be helpful. Consider adding an icon to signal specific actions (Download, Open in a new window, etc).\n- Don\u2019t use the same link text for different URLs on the same page. This can confuse users and make it difficult for them to understand where the link will take them.\n\n-------\n\nThis documentation is heavily inspired by the [U.S Web Design System (USWDS)](https://designsystem.digital.gov/components/link/). We use USWDS as trusted source of truth for accessibility and usability best practices.\n\n## Component Properties\n"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
17
30
|
};
|
|
18
31
|
var Default = exports.Default = {
|
|
19
32
|
args: {
|
|
@@ -28,7 +41,7 @@ var ButtonVariants = exports.ButtonVariants = function ButtonVariants() {
|
|
|
28
41
|
gap: 2
|
|
29
42
|
},
|
|
30
43
|
children: buttonTypes.map(function (variant, index) {
|
|
31
|
-
return (0, _jsxRuntime.jsx)(
|
|
44
|
+
return (0, _jsxRuntime.jsx)(_Link.Link, {
|
|
32
45
|
href: "#!",
|
|
33
46
|
variant: variant,
|
|
34
47
|
children: "Hello"
|
|
@@ -121,6 +121,7 @@ var navMenuListStyles = exports.navMenuListStyles = function navMenuListStyles(o
|
|
|
121
121
|
height: '100%',
|
|
122
122
|
gap: 1,
|
|
123
123
|
px: 0,
|
|
124
|
-
flexDirection: orientation === 'horizontal' ? 'row' : 'column'
|
|
124
|
+
flexDirection: orientation === 'horizontal' ? 'row' : 'column',
|
|
125
|
+
flexWrap: orientation === 'horizontal' ? 'wrap' : undefined
|
|
125
126
|
};
|
|
126
127
|
};
|