@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpurds/breadcrumbs",
3
- "version": "4.6.0",
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/tokens": "4.6.0",
19
- "@purpurds/icon": "4.6.0"
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
- variant: BreadcrumbVariant;
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, variant, ...args }: RendererProps) => {
78
- return (
82
+ ({ children, negative, ...args }: RendererProps) =>
83
+ (
79
84
  <>
80
85
  <div
81
86
  style={{
82
- backgroundColor:
83
- variant && variant.endsWith("negative")
84
- ? "var(--purpur-color-background-tone-on-tone-primary)"
85
- : undefined,
87
+ backgroundColor: negative
88
+ ? "var(--purpur-color-background-tone-on-tone-primary)"
89
+ : undefined,
86
90
  }}
87
91
  >
88
- <Breadcrumbs variant={variant} {...args}>
92
+ <Breadcrumbs negative={negative} {...args}>
89
93
  {children}
90
94
  </Breadcrumbs>
91
95
  </div>
92
- {showMeta ? <MetaData /> : null}
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
- parameters: {
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
- variant: breadcrumbVariants[1],
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
@@ -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
- variant?: BreadcrumbVariant;
14
+ negative?: boolean;
23
15
  };
24
16
 
25
17
  type CommonItemProps = {
26
18
  current?: boolean;
27
- variant?: BreadcrumbVariant;
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
- variant = "default",
47
+ negative = false,
56
48
  }: BreadcrumbsProps) => {
57
- const classes = c([className, styles[rootClassName], styles[`${rootClassName}--${variant}`]]);
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
- variant,
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
- variant = "default",
121
+ negative = false,
126
122
  onClick,
127
123
  ...rest
128
124
  }: BreadcrumbsItemProps) => {
129
- const classes = c([styles[itemClassName], styles[`${itemClassName}--${variant}`]], {
130
- [styles[`${itemClassName}--current`]]: current,
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 = {