@purpurds/accordion 5.8.1 → 5.9.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/styles.css CHANGED
@@ -1 +1 @@
1
- ._purpur-accordion_1dpt9_1 ._purpur-accordion__title_1dpt9_1{margin-bottom:var(--purpur-spacing-300);color:var(--purpur-color-text-default)}@media screen and (min-width: 600px){._purpur-accordion_1dpt9_1 ._purpur-accordion__title_1dpt9_1{margin-bottom:var(--purpur-spacing-400)}}._purpur-accordion--negative_1dpt9_10{background-color:var(--purpur-color-purple-900)}._purpur-accordion--negative_1dpt9_10 ._purpur-accordion__title_1dpt9_1{color:var(--purpur-color-text-default-negative)}._purpur-accordion-item_1oq6q_1{overflow:hidden;border-bottom:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak)}._purpur-accordion-item_1oq6q_1:nth-of-type(1){border-top:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak)}._purpur-accordion-item__header_1oq6q_8{display:flex}._purpur-accordion-item__trigger_1oq6q_11{border:none;padding:0;width:100%;font-family:inherit;font-size:inherit;font-weight:inherit;color:inherit;line-height:inherit;background-color:transparent;transition:background-color var(--purpur-motion-duration-150) ease;display:flex;align-items:center;justify-content:space-between;padding:var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-200) 0;cursor:pointer;outline:none}@media screen and (min-width: 600px){._purpur-accordion-item__trigger_1oq6q_11{padding:var(--purpur-spacing-300) var(--purpur-spacing-300) var(--purpur-spacing-300) 0}}@media screen and (min-width: 1024px){._purpur-accordion-item__trigger_1oq6q_11{padding:var(--purpur-spacing-400) var(--purpur-spacing-300) var(--purpur-spacing-400) 0}}._purpur-accordion-item__content_1oq6q_39{overflow:hidden}._purpur-accordion-item__content_1oq6q_39[data-state=open]{animation:_slideDown_1oq6q_1 var(--purpur-motion-duration-150) ease-in-out}._purpur-accordion-item__content_1oq6q_39[data-state=closed]{animation:_slideUp_1oq6q_1 var(--purpur-motion-duration-150) ease-in-out}._purpur-accordion-item__contentText_1oq6q_48{padding:var(--purpur-spacing-200) 0;max-width:calc(var(--purpur-spacing-1200) / .16)}._purpur-accordion-item__icon_1oq6q_52{flex-shrink:0;height:var(--purpur-spacing-300);width:var(--purpur-spacing-300);transition:transform var(--purpur-motion-duration-150) ease-in-out}._purpur-accordion-item__trigger_1oq6q_11[data-state=open]>._purpur-accordion-item__icon_1oq6q_52{transform:rotate(180deg)}._purpur-accordion-item_1oq6q_1:has(:focus-visible){outline:none;box-shadow:0 0 0 var(--purpur-border-width-sm) var(--purpur-color-border-interactive-focus)}._purpur-accordion-item_1oq6q_1 ._purpur-accordion-item__title_1oq6q_65{max-width:100%;text-align:left}._purpur-accordion-item_1oq6q_1 ._purpur-accordion-item__title_1oq6q_65,._purpur-accordion-item__icon_1oq6q_52{color:var(--purpur-color-text-interactive-primary)}._purpur-accordion-item__trigger_1oq6q_11:hover{background-color:var(--purpur-color-background-interactive-transparent-hover)}._purpur-accordion-item__trigger_1oq6q_11:hover ._purpur-accordion-item__title_1oq6q_65,._purpur-accordion-item__trigger_1oq6q_11:hover__icon{color:var(--purpur-color-text-interactive-primary-hover)}._purpur-accordion-item__trigger_1oq6q_11:active{background-color:var(--purpur-color-background-interactive-transparent-active)}._purpur-accordion-item__trigger_1oq6q_11:active ._purpur-accordion-item__title_1oq6q_65,._purpur-accordion-item__trigger_1oq6q_11:active__icon{color:var(--purpur-color-text-interactive-primary-active)}._purpur-accordion-item__contentText_1oq6q_48 p{color:var(--purpur-color-text-default)}._purpur-accordion-item--negative_1oq6q_87{border-bottom:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak-negative)}._purpur-accordion-item--negative_1oq6q_87:nth-of-type(1){border-top:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak-negative)}._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__title_1oq6q_65,._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__icon_1oq6q_52{color:var(--purpur-color-text-interactive-primary-negative)}._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__trigger_1oq6q_11:hover{background-color:var(--purpur-color-background-interactive-transparent-negative-hover)}._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__trigger_1oq6q_11:hover ._purpur-accordion-item__title_1oq6q_65,._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__trigger_1oq6q_11:hover ._purpur-accordion-item__icon_1oq6q_52{color:var(--purpur-color-border-interactive-primary-negative-hover)}._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__trigger_1oq6q_11:active{background-color:var(--purpur-color-background-interactive-transparent-negative-active)}._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__trigger_1oq6q_11:active ._purpur-accordion-item__title_1oq6q_65,._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__trigger_1oq6q_11:active ._purpur-accordion-item__icon_1oq6q_52{color:var(--purpur-color-border-interactive-primary-negative-active)}._purpur-accordion-item--negative_1oq6q_87 ._purpur-accordion-item__contentText_1oq6q_48 p{color:var(--purpur-color-text-default-negative)}@keyframes _slideDown_1oq6q_1{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes _slideUp_1oq6q_1{0%{height:var(--radix-accordion-content-height)}to{height:0}}
1
+ ._purpur-accordion_u887g_1{container:accordion/inline-size}._purpur-accordion_u887g_1 ._purpur-accordion__title_u887g_4{margin-bottom:var(--purpur-spacing-300);color:var(--purpur-color-text-default)}@container accordion (min-width: 600px){._purpur-accordion_u887g_1 ._purpur-accordion__title_u887g_4{margin-bottom:var(--purpur-spacing-400)}}._purpur-accordion--negative_u887g_13{background-color:var(--purpur-color-purple-900)}._purpur-accordion--negative_u887g_13 ._purpur-accordion__title_u887g_4{color:var(--purpur-color-text-default-negative)}._purpur-accordion-item_aukzj_1{overflow:hidden;border-bottom:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak)}._purpur-accordion-item_aukzj_1:nth-of-type(1){border-top:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak)}._purpur-accordion-item__header_aukzj_8{display:flex}._purpur-accordion-item__trigger_aukzj_11{border:none;padding:0;width:100%;text-align:left;font-family:inherit;font-size:inherit;font-weight:inherit;color:inherit;line-height:inherit;background-color:transparent;transition:background-color var(--purpur-motion-duration-150) ease;display:flex;align-items:center;justify-content:space-between;column-gap:var(--purpur-spacing-100);padding:var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-200) 0;cursor:pointer;outline:none}@container accordion (min-width: 600px){._purpur-accordion-item__trigger_aukzj_11{padding:var(--purpur-spacing-300) var(--purpur-spacing-300) var(--purpur-spacing-300) 0}}@container accordion (min-width: 1024px){._purpur-accordion-item__trigger_aukzj_11{padding:var(--purpur-spacing-400) var(--purpur-spacing-300) var(--purpur-spacing-400) 0}}._purpur-accordion-item__content_aukzj_41{overflow:hidden}._purpur-accordion-item__content_aukzj_41[data-state=open]{animation:_slideDown_aukzj_1 var(--purpur-motion-duration-150) ease-in-out}._purpur-accordion-item__content_aukzj_41[data-state=closed]{animation:_slideUp_aukzj_1 var(--purpur-motion-duration-150) ease-in-out}._purpur-accordion-item__contentText_aukzj_50{padding:var(--purpur-spacing-200) 0;max-width:calc(var(--purpur-spacing-1200) / .16)}._purpur-accordion-item__icon_aukzj_54{flex-shrink:0;height:var(--purpur-spacing-300);width:var(--purpur-spacing-300);transition:transform var(--purpur-motion-duration-150) ease-in-out}._purpur-accordion-item__trigger_aukzj_11[data-state=open]>._purpur-accordion-item__icon_aukzj_54{transform:rotate(180deg)}._purpur-accordion-item_aukzj_1:has(:focus-visible){outline:none;box-shadow:0 0 0 var(--purpur-border-width-sm) var(--purpur-color-border-interactive-focus)}._purpur-accordion-item_aukzj_1 ._purpur-accordion-item__title_aukzj_67{max-width:100%}._purpur-accordion-item_aukzj_1 ._purpur-accordion-item__title_aukzj_67,._purpur-accordion-item__icon_aukzj_54{color:var(--purpur-color-text-interactive-primary)}._purpur-accordion-item__trigger_aukzj_11:hover{background-color:var(--purpur-color-background-interactive-transparent-hover)}._purpur-accordion-item__trigger_aukzj_11:hover ._purpur-accordion-item__title_aukzj_67,._purpur-accordion-item__trigger_aukzj_11:hover__icon{color:var(--purpur-color-text-interactive-primary-hover)}._purpur-accordion-item__trigger_aukzj_11:active{background-color:var(--purpur-color-background-interactive-transparent-active)}._purpur-accordion-item__trigger_aukzj_11:active ._purpur-accordion-item__title_aukzj_67,._purpur-accordion-item__trigger_aukzj_11:active__icon{color:var(--purpur-color-text-interactive-primary-active)}._purpur-accordion-item__contentText_aukzj_50 p{color:var(--purpur-color-text-default)}._purpur-accordion-item--negative_aukzj_88{border-bottom:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak-negative)}._purpur-accordion-item--negative_aukzj_88:nth-of-type(1){border-top:var(--purpur-border-width-xs) solid var(--purpur-color-border-weak-negative)}._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__title_aukzj_67,._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__icon_aukzj_54{color:var(--purpur-color-text-interactive-primary-negative)}._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__trigger_aukzj_11:hover{background-color:var(--purpur-color-background-interactive-transparent-negative-hover)}._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__trigger_aukzj_11:hover ._purpur-accordion-item__title_aukzj_67,._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__trigger_aukzj_11:hover ._purpur-accordion-item__icon_aukzj_54{color:var(--purpur-color-border-interactive-primary-negative-hover)}._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__trigger_aukzj_11:active{background-color:var(--purpur-color-background-interactive-transparent-negative-active)}._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__trigger_aukzj_11:active ._purpur-accordion-item__title_aukzj_67,._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__trigger_aukzj_11:active ._purpur-accordion-item__icon_aukzj_54{color:var(--purpur-color-border-interactive-primary-negative-active)}._purpur-accordion-item--negative_aukzj_88 ._purpur-accordion-item__contentText_aukzj_50 p{color:var(--purpur-color-text-default-negative)}@keyframes _slideDown_aukzj_1{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes _slideUp_aukzj_1{0%{height:var(--radix-accordion-content-height)}to{height:0}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpurds/accordion",
3
- "version": "5.8.1",
3
+ "version": "5.9.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "main": "./dist/accordion.cjs.js",
6
6
  "types": "./dist/accordion.d.ts",
@@ -16,10 +16,10 @@
16
16
  "dependencies": {
17
17
  "classnames": "~2.5.0",
18
18
  "@radix-ui/react-accordion": "~1.1.2",
19
- "@purpurds/tokens": "5.8.1",
20
- "@purpurds/heading": "5.8.1",
21
- "@purpurds/paragraph": "5.8.1",
22
- "@purpurds/icon": "5.8.1"
19
+ "@purpurds/heading": "5.9.0",
20
+ "@purpurds/icon": "5.9.0",
21
+ "@purpurds/tokens": "5.9.0",
22
+ "@purpurds/paragraph": "5.9.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@rushstack/eslint-patch": "~1.10.0",
@@ -17,6 +17,7 @@
17
17
  border: none;
18
18
  padding: 0;
19
19
  width: 100%;
20
+ text-align: left;
20
21
  font-family: inherit;
21
22
  font-size: inherit;
22
23
  font-weight: inherit;
@@ -27,15 +28,16 @@
27
28
  display: flex;
28
29
  align-items: center;
29
30
  justify-content: space-between;
31
+ column-gap: var(--purpur-spacing-100);
30
32
  padding: var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-200) 0;
31
33
  cursor: pointer;
32
34
  outline: none;
33
35
 
34
- @media screen and (min-width: #{$purpur-breakpoint-md}) {
36
+ @container accordion (min-width: #{$purpur-breakpoint-md}) {
35
37
  padding: var(--purpur-spacing-300) var(--purpur-spacing-300) var(--purpur-spacing-300) 0;
36
38
  }
37
39
 
38
- @media screen and (min-width: #{$purpur-breakpoint-lg}) {
40
+ @container accordion (min-width: #{$purpur-breakpoint-lg}) {
39
41
  padding: var(--purpur-spacing-400) var(--purpur-spacing-300) var(--purpur-spacing-400) 0;
40
42
  }
41
43
  }
@@ -75,7 +77,6 @@
75
77
 
76
78
  #{$root}__title {
77
79
  max-width: 100%;
78
- text-align: left;
79
80
  }
80
81
 
81
82
  #{$root}__title,
@@ -1,4 +1,5 @@
1
- import React, { ReactNode } from "react";
1
+ import type { ForwardedRef, ReactNode } from "react";
2
+ import React, { forwardRef } from "react";
2
3
  import type { HeadingTagType } from "@purpurds/heading";
3
4
  import { Heading } from "@purpurds/heading";
4
5
  import { IconChevronDown } from "@purpurds/icon";
@@ -43,45 +44,51 @@ export type AccordionItemProps = {
43
44
  onClick?: (event: AccordionItemOnClickEvent) => void;
44
45
  };
45
46
 
46
- export const AccordionItem = ({
47
- children,
48
- className,
49
- title,
50
- titleTag = "h3",
51
- negative,
52
- onClick,
53
- ...props
54
- }: AccordionItemProps) => {
55
- const classes = cx([
56
- className,
57
- rootClassName,
47
+ export const AccordionItem = forwardRef(
48
+ (
58
49
  {
59
- [`${rootClassName}--negative`]: negative,
60
- },
61
- ]);
50
+ children,
51
+ className,
52
+ title,
53
+ titleTag = "h3",
54
+ negative,
55
+ onClick,
56
+ ...props
57
+ }: AccordionItemProps,
58
+ ref: ForwardedRef<HTMLButtonElement>
59
+ ) => {
60
+ const classes = cx([
61
+ className,
62
+ rootClassName,
63
+ {
64
+ [`${rootClassName}--negative`]: negative,
65
+ },
66
+ ]);
62
67
 
63
- return (
64
- <RadixAccordion.Item className={classes} value={title} {...props}>
65
- <RadixAccordion.Header className={cx(`${rootClassName}__header`)} asChild>
66
- <Heading tag={titleTag} variant="title-100" className={cx(`${rootClassName}__title`)}>
67
- <RadixAccordion.Trigger
68
- onClick={onClick}
69
- className={cx(`${rootClassName}__trigger`, className)}
70
- >
71
- {title}
72
- <IconChevronDown size="md" className={cx(`${rootClassName}__icon`)} aria-hidden />
73
- </RadixAccordion.Trigger>
74
- </Heading>
75
- </RadixAccordion.Header>
76
- <RadixAccordion.Content className={cx(`${rootClassName}__content`, className)}>
77
- <div className={cx(`${rootClassName}__contentText`)}>
78
- {typeof children === "string" ? (
79
- <Paragraph variant="paragraph-200">{children}</Paragraph>
80
- ) : (
81
- children
82
- )}
83
- </div>
84
- </RadixAccordion.Content>
85
- </RadixAccordion.Item>
86
- );
87
- };
68
+ return (
69
+ <RadixAccordion.Item className={classes} value={title} {...props}>
70
+ <RadixAccordion.Header className={cx(`${rootClassName}__header`)} asChild>
71
+ <Heading tag={titleTag} variant="title-100" className={cx(`${rootClassName}__title`)}>
72
+ <RadixAccordion.Trigger
73
+ ref={ref}
74
+ onClick={onClick}
75
+ className={cx(`${rootClassName}__trigger`, className)}
76
+ >
77
+ {title}
78
+ <IconChevronDown size="md" className={cx(`${rootClassName}__icon`)} aria-hidden />
79
+ </RadixAccordion.Trigger>
80
+ </Heading>
81
+ </RadixAccordion.Header>
82
+ <RadixAccordion.Content className={cx(`${rootClassName}__content`, className)}>
83
+ <div className={cx(`${rootClassName}__contentText`)}>
84
+ {typeof children === "string" ? (
85
+ <Paragraph variant="paragraph-200">{children}</Paragraph>
86
+ ) : (
87
+ children
88
+ )}
89
+ </div>
90
+ </RadixAccordion.Content>
91
+ </RadixAccordion.Item>
92
+ );
93
+ }
94
+ );
@@ -3,11 +3,13 @@
3
3
  .purpur-accordion {
4
4
  $root: &;
5
5
 
6
+ container: accordion / inline-size;
7
+
6
8
  #{$root}__title {
7
9
  margin-bottom: var(--purpur-spacing-300);
8
10
  color: var(--purpur-color-text-default);
9
11
 
10
- @media screen and (min-width: #{$purpur-breakpoint-md}) {
12
+ @container accordion (min-width: #{$purpur-breakpoint-md}) {
11
13
  margin-bottom: var(--purpur-spacing-400);
12
14
  }
13
15
  }