@purpurds/breadcrumbs 4.6.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LICENSE.txt +1 -1
- package/dist/breadcrumbs.cjs.js +3 -3
- package/dist/breadcrumbs.cjs.js.map +1 -1
- package/dist/breadcrumbs.d.ts +4 -10
- package/dist/breadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs.es.js +48 -46
- package/dist/breadcrumbs.es.js.map +1 -1
- package/package.json +3 -3
- package/src/breadcrumbs.stories.tsx +21 -29
- package/src/breadcrumbs.tsx +16 -17
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@purpurds/breadcrumbs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"main": "./dist/breadcrumbs.cjs.js",
|
|
6
6
|
"types": "./dist/breadcrumbs.d.ts",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"source": "src/breadcrumbs.tsx",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"classnames": "~2.5.0",
|
|
18
|
-
"@purpurds/
|
|
19
|
-
"@purpurds/
|
|
18
|
+
"@purpurds/icon": "5.1.0",
|
|
19
|
+
"@purpurds/tokens": "5.1.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@rushstack/eslint-patch": "~1.10.0",
|
|
@@ -2,16 +2,21 @@ import React, { ReactElement, ReactNode, useEffect, useState } from "react";
|
|
|
2
2
|
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
3
|
|
|
4
4
|
import "@purpurds/icon/styles";
|
|
5
|
-
import {
|
|
6
|
-
Breadcrumbs,
|
|
7
|
-
BreadcrumbsItemProps,
|
|
8
|
-
BreadcrumbVariant,
|
|
9
|
-
breadcrumbVariants,
|
|
10
|
-
} from "./breadcrumbs";
|
|
5
|
+
import { Breadcrumbs, BreadcrumbsItemProps } from "./breadcrumbs";
|
|
11
6
|
|
|
12
7
|
const meta: Meta<typeof Breadcrumbs> = {
|
|
13
8
|
title: "Components/Breadcrumbs",
|
|
14
9
|
component: Breadcrumbs,
|
|
10
|
+
parameters: {
|
|
11
|
+
design: [
|
|
12
|
+
{
|
|
13
|
+
name: "Breadcrumbs",
|
|
14
|
+
type: "figma",
|
|
15
|
+
url: "https://www.figma.com/file/XEaIIFskrrxIBHMZDkIuIg/Purpur-DS---Component-library-%26-guidelines?node-id=27132%3A14635&mode=dev",
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
args: { negative: false },
|
|
15
20
|
};
|
|
16
21
|
|
|
17
22
|
export default meta;
|
|
@@ -25,7 +30,7 @@ type LinkProps = {
|
|
|
25
30
|
|
|
26
31
|
type RendererProps = {
|
|
27
32
|
children: ReactElement<BreadcrumbsItemProps>;
|
|
28
|
-
|
|
33
|
+
negative: boolean;
|
|
29
34
|
};
|
|
30
35
|
|
|
31
36
|
const MetaData = () => {
|
|
@@ -74,31 +79,28 @@ const Link = ({ href, children }: LinkProps) => <a href={href}>{children}</a>;
|
|
|
74
79
|
|
|
75
80
|
const Renderer =
|
|
76
81
|
(showMeta = false) =>
|
|
77
|
-
({ children,
|
|
78
|
-
|
|
82
|
+
({ children, negative, ...args }: RendererProps) =>
|
|
83
|
+
(
|
|
79
84
|
<>
|
|
80
85
|
<div
|
|
81
86
|
style={{
|
|
82
|
-
backgroundColor:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
: undefined,
|
|
87
|
+
backgroundColor: negative
|
|
88
|
+
? "var(--purpur-color-background-tone-on-tone-primary)"
|
|
89
|
+
: undefined,
|
|
86
90
|
}}
|
|
87
91
|
>
|
|
88
|
-
<Breadcrumbs
|
|
92
|
+
<Breadcrumbs negative={negative} {...args}>
|
|
89
93
|
{children}
|
|
90
94
|
</Breadcrumbs>
|
|
91
95
|
</div>
|
|
92
|
-
{showMeta
|
|
96
|
+
{showMeta && <MetaData />}
|
|
93
97
|
</>
|
|
94
98
|
);
|
|
95
|
-
};
|
|
96
99
|
|
|
97
100
|
export const DefaultVariant: Story = {
|
|
98
101
|
name: "Default variant",
|
|
99
102
|
args: {
|
|
100
103
|
meta: true,
|
|
101
|
-
variant: breadcrumbVariants[0],
|
|
102
104
|
children: [
|
|
103
105
|
<Breadcrumbs.Item href="/products" key={1}>
|
|
104
106
|
Products
|
|
@@ -111,21 +113,13 @@ export const DefaultVariant: Story = {
|
|
|
111
113
|
</Breadcrumbs.Item>,
|
|
112
114
|
],
|
|
113
115
|
},
|
|
114
|
-
|
|
115
|
-
design: [
|
|
116
|
-
{
|
|
117
|
-
name: "Breadcrumbs",
|
|
118
|
-
type: "figma",
|
|
119
|
-
url: "https://www.figma.com/file/XEaIIFskrrxIBHMZDkIuIg/Purpur-DS---Component-library-%26-guidelines?node-id=27132%3A14635&mode=dev",
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
},
|
|
116
|
+
render: Renderer(false),
|
|
123
117
|
};
|
|
124
118
|
|
|
125
119
|
export const NegativeVariant: Story = {
|
|
126
120
|
name: "Negative variant",
|
|
127
121
|
args: {
|
|
128
|
-
|
|
122
|
+
negative: true,
|
|
129
123
|
children: [
|
|
130
124
|
<Breadcrumbs.Item href="/galaxies" key={0}>
|
|
131
125
|
Galaxies
|
|
@@ -144,7 +138,6 @@ export const NegativeVariant: Story = {
|
|
|
144
138
|
export const CustomItem: Story = {
|
|
145
139
|
name: "Custom Breadcrumb Items",
|
|
146
140
|
args: {
|
|
147
|
-
variant: breadcrumbVariants[0],
|
|
148
141
|
children: [
|
|
149
142
|
<Breadcrumbs.Item key={0} href="/products">
|
|
150
143
|
Products
|
|
@@ -163,7 +156,6 @@ export const CustomItem: Story = {
|
|
|
163
156
|
export const BreadcrumbMetaData: Story = {
|
|
164
157
|
name: "Meta data by default",
|
|
165
158
|
args: {
|
|
166
|
-
variant: breadcrumbVariants[0],
|
|
167
159
|
children: [
|
|
168
160
|
<Breadcrumbs.Item key={0} href="/ships">
|
|
169
161
|
Ships
|
package/src/breadcrumbs.tsx
CHANGED
|
@@ -5,26 +5,18 @@ import c from "classnames";
|
|
|
5
5
|
import styles from "./breadcrumbs.module.scss";
|
|
6
6
|
import { MetaListItem, metaListItem, metaSchema } from "./meta";
|
|
7
7
|
|
|
8
|
-
export const BREADCRUMB_VARIANT = {
|
|
9
|
-
DEFAULT: "default",
|
|
10
|
-
NEGATIVE: "negative",
|
|
11
|
-
} as const;
|
|
12
|
-
|
|
13
|
-
export const breadcrumbVariants = Object.values(BREADCRUMB_VARIANT);
|
|
14
|
-
export type BreadcrumbVariant = (typeof BREADCRUMB_VARIANT)[keyof typeof BREADCRUMB_VARIANT];
|
|
15
|
-
|
|
16
8
|
export type BreadcrumbsProps = {
|
|
17
9
|
["data-testid"]?: string;
|
|
18
10
|
ariaLabel?: string;
|
|
19
11
|
children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;
|
|
20
12
|
className?: string;
|
|
21
13
|
meta?: boolean;
|
|
22
|
-
|
|
14
|
+
negative?: boolean;
|
|
23
15
|
};
|
|
24
16
|
|
|
25
17
|
type CommonItemProps = {
|
|
26
18
|
current?: boolean;
|
|
27
|
-
|
|
19
|
+
negative?: boolean;
|
|
28
20
|
["data-testid"]?: string;
|
|
29
21
|
ariaLabel?: string;
|
|
30
22
|
meta?: boolean;
|
|
@@ -52,9 +44,13 @@ const Breadcrumbs = ({
|
|
|
52
44
|
children,
|
|
53
45
|
className,
|
|
54
46
|
meta = true,
|
|
55
|
-
|
|
47
|
+
negative = false,
|
|
56
48
|
}: BreadcrumbsProps) => {
|
|
57
|
-
const classes = c([
|
|
49
|
+
const classes = c([
|
|
50
|
+
className,
|
|
51
|
+
styles[rootClassName],
|
|
52
|
+
styles[`${rootClassName}--${negative ? "negative" : "default"}`],
|
|
53
|
+
]);
|
|
58
54
|
|
|
59
55
|
const maxIndex = Children.count(children);
|
|
60
56
|
|
|
@@ -84,7 +80,7 @@ const Breadcrumbs = ({
|
|
|
84
80
|
|
|
85
81
|
const child = cloneElement(item, {
|
|
86
82
|
current,
|
|
87
|
-
|
|
83
|
+
negative,
|
|
88
84
|
...(position === 1 && {
|
|
89
85
|
children: (
|
|
90
86
|
<>
|
|
@@ -122,13 +118,16 @@ const Item = ({
|
|
|
122
118
|
["data-testid"]: dataTestId,
|
|
123
119
|
children,
|
|
124
120
|
current = false,
|
|
125
|
-
|
|
121
|
+
negative = false,
|
|
126
122
|
onClick,
|
|
127
123
|
...rest
|
|
128
124
|
}: BreadcrumbsItemProps) => {
|
|
129
|
-
const classes = c(
|
|
130
|
-
[styles[`${itemClassName}
|
|
131
|
-
|
|
125
|
+
const classes = c(
|
|
126
|
+
[styles[itemClassName], styles[`${itemClassName}--${negative ? "negative" : "default"}`]],
|
|
127
|
+
{
|
|
128
|
+
[styles[`${itemClassName}--current`]]: current,
|
|
129
|
+
}
|
|
130
|
+
);
|
|
132
131
|
|
|
133
132
|
const link = () => {
|
|
134
133
|
const commonProps = {
|