react-image-accordion 1.2.2 → 1.3.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/rollup.config.js CHANGED
@@ -1,39 +1,39 @@
1
- import babel from 'rollup-plugin-babel';
2
- import resolve from '@rollup/plugin-node-resolve';
3
- import external from 'rollup-plugin-peer-deps-external';
4
- import postcss from 'rollup-plugin-postcss';
5
- import localResolve from 'rollup-plugin-local-resolve';
6
- // import { terser } from "rollup-plugin-terser";
7
-
8
- export default [
9
- {
10
- input: 'src/index.js',
11
- output: [
12
- {
13
- file: 'dist/index.js',
14
- format: 'cjs',
15
- },
16
- {
17
- file: 'dist/index.es.js',
18
- format: 'es',
19
- exports: 'named',
20
- },
21
- ],
22
- plugins: [
23
- postcss({
24
- plugins: []
25
- }),
26
- babel({
27
- exclude: 'node_modules/**',
28
- presets: ['@babel/preset-react'],
29
- }),
30
- external(),
31
- resolve(),
32
- localResolve(),
33
- // terser(),
34
- ],
35
- watch: {
36
- include: "src/**",
37
- },
38
- }
1
+ import babel from 'rollup-plugin-babel';
2
+ import resolve from '@rollup/plugin-node-resolve';
3
+ import external from 'rollup-plugin-peer-deps-external';
4
+ import postcss from 'rollup-plugin-postcss';
5
+ import localResolve from 'rollup-plugin-local-resolve';
6
+ // import { terser } from "rollup-plugin-terser";
7
+
8
+ export default [
9
+ {
10
+ input: 'src/index.js',
11
+ output: [
12
+ {
13
+ file: 'dist/index.js',
14
+ format: 'cjs',
15
+ },
16
+ {
17
+ file: 'dist/index.es.js',
18
+ format: 'es',
19
+ exports: 'named',
20
+ },
21
+ ],
22
+ plugins: [
23
+ postcss({
24
+ plugins: []
25
+ }),
26
+ babel({
27
+ exclude: 'node_modules/**',
28
+ presets: ['@babel/preset-react'],
29
+ }),
30
+ external(),
31
+ resolve(),
32
+ localResolve(),
33
+ // terser(),
34
+ ],
35
+ watch: {
36
+ include: "src/**",
37
+ },
38
+ }
39
39
  ];
@@ -1,209 +1,222 @@
1
- *,
2
- *::before,
3
- *::after {
4
- box-sizing: border-box;
5
- }
6
-
7
- html {
8
- color-scheme: dark;
9
- }
10
-
11
- body {
12
- display: grid;
13
- justify-content: center;
14
- align-content: center;
15
- min-height: 100vh;
16
-
17
- margin: 0;
18
- font-family: system-ui;
19
- font-size: 1.125rem;
20
- line-height: 1.6;
21
- }
22
-
23
- img {
24
- max-width: 100%;
25
- display: block;
26
- }
27
-
28
- .wrapper {
29
- /* max-width: 50rem; */
30
- margin-inline: auto;
31
- padding-inline: 1rem;
32
- }
33
-
34
- .accordionImage {
35
- --_button-size: 3rem;
36
- --_panel-padding: 0.75rem;
37
- --_panel-gap: 1rem;
38
-
39
- display: flex;
40
- flex-direction: column;
41
- gap: 1rem;
42
- }
43
-
44
- @media (min-width: 45em) {
45
- .accordionImage {
46
- flex-direction: row;
47
- height: 30rem;
48
- }
49
- }
50
-
51
- .accordionImage * {
52
- margin: 0;
53
- }
54
-
55
- .accordion-panel {
56
- position: relative;
57
- isolation: isolate;
58
- flex-basis: calc((var(--_panel-padding) * 2) + var(--_button-size));
59
- overflow: hidden;
60
- padding: var(--_panel-padding);
61
- padding-right: calc(var(--_panel-padding) * 4);
62
- border-radius: calc(((var(--_panel-padding) * 2) + var(--_button-size)) / 2);
63
- cursor: pointer;
64
- }
65
-
66
- @media (prefers-reduced-motion: no-preference) {
67
- .accordion-panel {
68
- transition: flex-basis 500ms, flex-grow 500ms;
69
- }
70
- }
71
-
72
- .accordion-panel:nth-child(1) {
73
- --_panel-color: red;
74
- }
75
- .accordion-panel:nth-child(2) {
76
- --_panel-color: blue;
77
- }
78
- .accordion-panel:nth-child(3) {
79
- --_panel-color: green;
80
- }
81
- .accordion-panel:nth-child(4) {
82
- --_panel-color: yellow;
83
- }
84
- .accordion-panel:nth-child(5) {
85
- --_panel-color: orange;
86
- }
87
- .accordion-panel:nth-child(6) {
88
- --_panel-color: purple;
89
- }
90
- .accordion-panel:nth-child(7) {
91
- --_panel-color: pink;
92
- }
93
- .accordion-panel:nth-child(8) {
94
- --_panel-color: brown;
95
- }
96
- .accordion-panel:nth-child(9) {
97
- --_panel-color: cyan;
98
- }
99
- .accordion-panel:nth-child(10) {
100
- --_panel-color: magenta;
101
- }
102
-
103
- .accordion-panel:has([aria-expanded="true"]) {
104
- flex-basis: clamp(15rem, 40vh, 20rem);
105
- flex-grow: 1;
106
- }
107
-
108
- .accordion-trigger {
109
- outline: 0 !important;
110
- }
111
-
112
- .accordion-panel:focus-within {
113
- outline: 3px solid var(--_panel-color);
114
- outline-offset: 4px;
115
- }
116
-
117
- .accordion-content > p {
118
- transform: translateY(2rem);
119
- opacity: 0;
120
- margin-left: calc(var(--_button-size) + var(--_panel-gap));
121
- color: rgb(255, 255, 255) !important;
122
- }
123
-
124
- @media (prefers-reduced-motion: no-preference) {
125
- .accordion-panel:has([aria-expanded="true"]) .accordion-content > p {
126
- transition: transform 500ms 500ms, opacity 500ms 500ms;
127
- }
128
- }
129
-
130
- .accordion-panel:has([aria-expanded="true"]) .accordion-content > p {
131
- transform: translateY(0);
132
- opacity: 1;
133
- }
134
-
135
- .accordion-title {
136
- font-size: 1.5rem;
137
- font-weight: 700;
138
- position: relative;
139
- isolation: isolate;
140
- display: grid;
141
- align-items: center;
142
- color: rgb(255, 255, 255) !important;
143
- }
144
-
145
- .accordion-panel:has([aria-expanded="false"]) .accordion-Link,
146
- .accordion-panel:has([aria-expanded="false"]) .accordion-title {
147
- display: none;
148
- }
149
-
150
- @media (max-width: 44.999em) {
151
- .accordion-title::after {
152
- content: "";
153
- position: absolute;
154
-
155
- left: calc((var(--_panel-gap) + var(--_button-size)) * -1);
156
- width: calc(100% + (var(--_button-size) * 2));
157
- height: var(--_button-size);
158
- background: hsl(0 0% 0% /0.55);
159
- z-index: -1;
160
- border-radius: 100vw;
161
- }
162
- }
163
-
164
- .accordion-Link {
165
- all: revert;
166
- display: block;
167
- position: absolute;
168
- left: -0.1rem;
169
- bottom: 0;
170
- margin: 0.75rem;
171
- width: 10rem;
172
- height: var(--_button-size);
173
- background: hsl(0 0% 0% /0.55);
174
- border-radius: 100vw;
175
- padding: 0.75rem;
176
- font-weight: bolder;
177
- }
178
-
179
- .accordion-image {
180
- position: absolute;
181
- inset: 0;
182
- width: 100%;
183
- height: 100%;
184
- object-fit: cover;
185
- z-index: -1;
186
- transition: filer 500ms;
187
- }
188
-
189
- .accordion-panel:has([aria-expanded="true"]) .accordion-image {
190
- filter: brightness(0.5);
191
- }
192
- .accordion-trigger {
193
- display: flex;
194
- align-items: center;
195
- flex-direction: row-reverse;
196
- gap: var(--_panel-gap);
197
- background: transparent;
198
- border: 0;
199
- padding: 0;
200
- }
201
- .accordion-icon {
202
- fill: var(--_panel-color);
203
- background: hsl(0 0% 0% /0.55);
204
- width: var(--_button-size);
205
- aspect-ratio: 1/1;
206
- padding: 0.75rem;
207
- border-radius: 50%;
208
- z-index: 10;
209
- }
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ html {
8
+ color-scheme: dark;
9
+ }
10
+
11
+ body {
12
+ display: grid;
13
+ justify-content: center;
14
+ align-content: center;
15
+ min-height: 100vh;
16
+
17
+ margin: 0;
18
+ font-family: system-ui;
19
+ font-size: 1.125rem;
20
+ line-height: 1.6;
21
+ }
22
+
23
+ img {
24
+ max-width: 100%;
25
+ display: block;
26
+ }
27
+
28
+ .wrapper {
29
+ /* max-width: 50rem; */
30
+ margin-inline: auto;
31
+ padding-inline: 1rem;
32
+ }
33
+
34
+ .accordionImage {
35
+ --_button-size: 3rem;
36
+ --_panel-padding: 0.75rem;
37
+ --_panel-gap: 1rem;
38
+
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 1rem;
42
+ }
43
+
44
+ @media (min-width: 45em) {
45
+ .accordionImage {
46
+ flex-direction: row;
47
+ height: 30rem;
48
+ }
49
+ }
50
+
51
+ .accordionImage * {
52
+ margin: 0;
53
+ }
54
+
55
+ .accordion-panel {
56
+ position: relative;
57
+ isolation: isolate;
58
+ flex-basis: calc((var(--_panel-padding) * 2) + var(--_button-size));
59
+ overflow: hidden;
60
+ padding: var(--_panel-padding);
61
+ padding-right: calc(var(--_panel-padding) * 4);
62
+ border-radius: calc(((var(--_panel-padding) * 2) + var(--_button-size)) / 2);
63
+ cursor: pointer;
64
+ }
65
+
66
+ @media (prefers-reduced-motion: no-preference) {
67
+ .accordion-panel {
68
+ transition: flex-basis 500ms, flex-grow 500ms;
69
+ }
70
+ }
71
+
72
+ .accordion-panel:nth-child(1) {
73
+ --_panel-color: red;
74
+ }
75
+ .accordion-panel:nth-child(2) {
76
+ --_panel-color: blue;
77
+ }
78
+ .accordion-panel:nth-child(3) {
79
+ --_panel-color: green;
80
+ }
81
+ .accordion-panel:nth-child(4) {
82
+ --_panel-color: yellow;
83
+ }
84
+ .accordion-panel:nth-child(5) {
85
+ --_panel-color: orange;
86
+ }
87
+ .accordion-panel:nth-child(6) {
88
+ --_panel-color: purple;
89
+ }
90
+ .accordion-panel:nth-child(7) {
91
+ --_panel-color: pink;
92
+ }
93
+ .accordion-panel:nth-child(8) {
94
+ --_panel-color: brown;
95
+ }
96
+ .accordion-panel:nth-child(9) {
97
+ --_panel-color: cyan;
98
+ }
99
+ .accordion-panel:nth-child(10) {
100
+ --_panel-color: magenta;
101
+ }
102
+
103
+ .accordion-panel:has([aria-expanded="true"]) {
104
+ flex-basis: clamp(15rem, 40vh, 20rem);
105
+ flex-grow: 1;
106
+ }
107
+
108
+ .accordion-trigger {
109
+ outline: 0 !important;
110
+ }
111
+
112
+ .accordion-panel:focus-within {
113
+ outline: 3px solid var(--_panel-color);
114
+ outline-offset: 4px;
115
+ }
116
+
117
+ .accordion-content > p {
118
+ transform: translateY(2rem);
119
+ opacity: 0;
120
+ margin-left: calc(var(--_button-size) + var(--_panel-gap));
121
+ color: rgb(255, 255, 255) !important;
122
+ }
123
+
124
+ @media (prefers-reduced-motion: no-preference) {
125
+ .accordion-panel:has([aria-expanded="true"]) .accordion-content > p {
126
+ transition: transform 500ms 500ms, opacity 500ms 500ms;
127
+ }
128
+ }
129
+
130
+ .accordion-panel:has([aria-expanded="true"]) .accordion-content > p {
131
+ transform: translateY(0);
132
+ opacity: 1;
133
+ }
134
+
135
+ .accordion-title {
136
+ font-size: 1.5rem;
137
+ font-weight: 700;
138
+ position: relative;
139
+ isolation: isolate;
140
+ display: grid;
141
+ align-items: center;
142
+ color: rgb(255, 255, 255) !important;
143
+ }
144
+
145
+ .accordion-panel:has([aria-expanded="false"]) .accordion-Link {
146
+ display: none;
147
+ }
148
+
149
+ @media (max-width: 44.999em) {
150
+ .accordion-panel {
151
+ width: 100%;
152
+ }
153
+
154
+ .accordion-trigger {
155
+ width: 100%;
156
+ height: var(--_button-size);
157
+ }
158
+
159
+ .accordion-title {
160
+ font-size: small;
161
+ width: 100%;
162
+ text-align: left;
163
+ }
164
+ .accordion-title::after {
165
+ content: "";
166
+ position: absolute;
167
+
168
+ left: calc((var(--_panel-gap) + var(--_button-size)) * -1);
169
+ width: calc(100% + (var(--_button-size) * 2));
170
+ height: var(--_button-size);
171
+ background: hsl(0 0% 0% /0.55);
172
+ z-index: -1;
173
+ border-radius: 100vw;
174
+ }
175
+ }
176
+
177
+ .accordion-Link {
178
+ all: revert;
179
+ display: block;
180
+ position: absolute;
181
+ left: -0.1rem;
182
+ bottom: 0;
183
+ margin: 0.75rem;
184
+ width: 10rem;
185
+ height: var(--_button-size);
186
+ background: hsl(0 0% 0% /0.55);
187
+ border-radius: 100vw;
188
+ padding: 0.75rem;
189
+ font-weight: bolder;
190
+ }
191
+
192
+ .accordion-image {
193
+ position: absolute;
194
+ inset: 0;
195
+ width: 100%;
196
+ height: 100%;
197
+ object-fit: cover;
198
+ z-index: -1;
199
+ transition: filer 500ms;
200
+ }
201
+
202
+ .accordion-panel:has([aria-expanded="true"]) .accordion-image {
203
+ filter: brightness(0.5);
204
+ }
205
+ .accordion-trigger {
206
+ display: flex;
207
+ align-items: center;
208
+ flex-direction: row-reverse;
209
+ gap: var(--_panel-gap);
210
+ background: transparent;
211
+ border: 0;
212
+ padding: 0;
213
+ }
214
+ .accordion-icon {
215
+ fill: var(--_panel-color);
216
+ background: hsl(0 0% 0% /0.55);
217
+ width: var(--_button-size);
218
+ aspect-ratio: 1/1;
219
+ padding: 0.75rem;
220
+ border-radius: 50%;
221
+ z-index: 10;
222
+ }
@@ -1,22 +1,22 @@
1
- import React from "react";
2
- import UseImageAccordion from "./UseImageAccordion";
3
-
4
- export const ReactImageAccordion = ({
5
- accordionData,
6
- AccordionWidth,
7
- AccordionHeight,
8
- ContentSize,
9
- onClick,
10
- ShowButton,
11
- }) => {
12
- return (
13
- <UseImageAccordion
14
- accordionData={accordionData}
15
- AccordionWidth={AccordionWidth}
16
- AccordionHeight={AccordionHeight}
17
- ContentSize={ContentSize}
18
- onClick={onClick}
19
- ShowButton={ShowButton}
20
- />
21
- );
22
- };
1
+ import React from "react";
2
+ import UseImageAccordion from "./UseImageAccordion";
3
+
4
+ export const ReactImageAccordion = ({
5
+ accordionData,
6
+ AccordionWidth,
7
+ AccordionHeight,
8
+ ContentSize,
9
+ onClick,
10
+ ShowButton,
11
+ }) => {
12
+ return (
13
+ <UseImageAccordion
14
+ accordionData={accordionData}
15
+ AccordionWidth={AccordionWidth}
16
+ AccordionHeight={AccordionHeight}
17
+ ContentSize={ContentSize}
18
+ onClick={onClick}
19
+ ShowButton={ShowButton}
20
+ />
21
+ );
22
+ };