@seed-design/css 1.2.15 → 2.0.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.
Files changed (183) hide show
  1. package/all.css +4956 -1925
  2. package/all.layered.css +5922 -2883
  3. package/all.layered.min.css +1 -1
  4. package/all.min.css +1 -1
  5. package/base.css +348 -35
  6. package/base.layered.css +348 -35
  7. package/base.layered.min.css +1 -1
  8. package/base.min.css +1 -1
  9. package/breakpoints/index.d.ts +7 -0
  10. package/breakpoints/index.mjs +17 -0
  11. package/package.json +6 -1
  12. package/recipes/accordion.css +268 -0
  13. package/recipes/accordion.d.ts +33 -0
  14. package/recipes/accordion.layered.css +308 -0
  15. package/recipes/accordion.layered.mjs +94 -0
  16. package/recipes/accordion.mjs +94 -0
  17. package/recipes/action-button.css +56 -4
  18. package/recipes/action-button.d.ts +16 -0
  19. package/recipes/action-button.layered.css +60 -4
  20. package/recipes/app-bar.css +0 -3
  21. package/recipes/app-bar.d.ts +0 -4
  22. package/recipes/app-bar.layered.css +0 -4
  23. package/recipes/app-bar.layered.mjs +1 -5
  24. package/recipes/app-bar.mjs +1 -5
  25. package/recipes/app-screen.css +3 -0
  26. package/recipes/app-screen.layered.css +4 -0
  27. package/recipes/attachment-input-item.css +275 -0
  28. package/recipes/attachment-input-item.d.ts +24 -0
  29. package/recipes/attachment-input-item.layered.css +288 -0
  30. package/recipes/attachment-input-item.layered.mjs +79 -0
  31. package/recipes/attachment-input-item.mjs +79 -0
  32. package/recipes/attachment-input-trigger.css +71 -0
  33. package/recipes/attachment-input-trigger.d.ts +21 -0
  34. package/recipes/attachment-input-trigger.layered.css +85 -0
  35. package/recipes/attachment-input-trigger.layered.mjs +48 -0
  36. package/recipes/attachment-input-trigger.mjs +48 -0
  37. package/recipes/attachment-input.css +55 -0
  38. package/recipes/attachment-input.d.ts +21 -0
  39. package/recipes/attachment-input.layered.css +64 -0
  40. package/recipes/attachment-input.layered.mjs +48 -0
  41. package/recipes/attachment-input.mjs +48 -0
  42. package/recipes/avatar.d.ts +9 -0
  43. package/recipes/badge.d.ts +10 -0
  44. package/recipes/bottom-sheet.css +62 -5
  45. package/recipes/bottom-sheet.layered.css +67 -5
  46. package/recipes/callout.d.ts +7 -0
  47. package/recipes/checkmark.d.ts +3 -0
  48. package/recipes/chip-tabs.css +8 -52
  49. package/recipes/chip-tabs.d.ts +1 -1
  50. package/recipes/chip-tabs.layered.css +8 -62
  51. package/recipes/chip-tabs.layered.mjs +1 -2
  52. package/recipes/chip-tabs.mjs +1 -2
  53. package/recipes/chip.d.ts +4 -0
  54. package/recipes/contextual-floating-button.d.ts +6 -0
  55. package/recipes/dialog.css +14 -11
  56. package/recipes/dialog.layered.css +4 -0
  57. package/recipes/footer.css +44 -0
  58. package/recipes/footer.d.ts +24 -0
  59. package/recipes/footer.layered.css +52 -0
  60. package/recipes/footer.layered.mjs +39 -0
  61. package/recipes/footer.mjs +39 -0
  62. package/recipes/help-bubble.css +29 -1
  63. package/recipes/help-bubble.layered.css +34 -1
  64. package/recipes/image-frame.css +0 -3
  65. package/recipes/image-frame.d.ts +0 -4
  66. package/recipes/image-frame.layered.css +0 -4
  67. package/recipes/image-frame.layered.mjs +1 -6
  68. package/recipes/image-frame.mjs +1 -6
  69. package/recipes/input-button.css +176 -20
  70. package/recipes/input-button.d.ts +8 -1
  71. package/recipes/input-button.layered.css +197 -21
  72. package/recipes/input-button.layered.mjs +10 -2
  73. package/recipes/input-button.mjs +10 -2
  74. package/recipes/layout.css +25 -0
  75. package/recipes/layout.d.ts +24 -0
  76. package/recipes/layout.layered.css +25 -0
  77. package/recipes/layout.layered.mjs +44 -0
  78. package/recipes/layout.mjs +44 -0
  79. package/recipes/list-item.css +72 -4
  80. package/recipes/list-item.layered.css +84 -4
  81. package/recipes/menu-item.css +174 -0
  82. package/recipes/menu-item.d.ts +35 -0
  83. package/recipes/menu-item.layered.css +200 -0
  84. package/recipes/menu-item.layered.mjs +57 -0
  85. package/recipes/menu-item.mjs +57 -0
  86. package/recipes/menu-sheet-item.d.ts +6 -0
  87. package/recipes/menu-sheet.css +19 -1
  88. package/recipes/menu-sheet.layered.css +22 -1
  89. package/recipes/menu.css +119 -0
  90. package/recipes/menu.d.ts +28 -0
  91. package/recipes/menu.layered.css +139 -0
  92. package/recipes/menu.layered.mjs +56 -0
  93. package/recipes/menu.mjs +56 -0
  94. package/recipes/notification-badge.d.ts +3 -0
  95. package/recipes/page-banner.d.ts +5 -0
  96. package/recipes/progress-circle.d.ts +7 -0
  97. package/recipes/{selectBoxCheckmark.css → select-box-checkmark.css} +6 -6
  98. package/recipes/{selectBoxCheckmark.layered.css → select-box-checkmark.layered.css} +6 -6
  99. package/recipes/{selectBoxCheckmark.layered.mjs → select-box-checkmark.layered.mjs} +4 -4
  100. package/recipes/{selectBoxCheckmark.mjs → select-box-checkmark.mjs} +4 -4
  101. package/recipes/side-navigation-inset.css +4 -0
  102. package/recipes/side-navigation-inset.d.ts +19 -0
  103. package/recipes/side-navigation-inset.layered.css +6 -0
  104. package/recipes/side-navigation-inset.layered.mjs +22 -0
  105. package/recipes/side-navigation-inset.mjs +22 -0
  106. package/recipes/side-navigation-menu-item.css +135 -0
  107. package/recipes/side-navigation-menu-item.d.ts +21 -0
  108. package/recipes/side-navigation-menu-item.layered.css +156 -0
  109. package/recipes/side-navigation-menu-item.layered.mjs +48 -0
  110. package/recipes/side-navigation-menu-item.mjs +48 -0
  111. package/recipes/side-navigation.css +115 -0
  112. package/recipes/side-navigation.d.ts +24 -0
  113. package/recipes/side-navigation.layered.css +132 -0
  114. package/recipes/side-navigation.layered.mjs +63 -0
  115. package/recipes/side-navigation.mjs +63 -0
  116. package/recipes/side-panel.css +327 -0
  117. package/recipes/side-panel.d.ts +24 -0
  118. package/recipes/side-panel.layered.css +361 -0
  119. package/recipes/side-panel.layered.mjs +72 -0
  120. package/recipes/side-panel.mjs +72 -0
  121. package/recipes/skeleton.css +36 -2
  122. package/recipes/skeleton.d.ts +8 -0
  123. package/recipes/skeleton.layered.css +40 -2
  124. package/recipes/text-input.css +323 -52
  125. package/recipes/text-input.d.ts +8 -1
  126. package/recipes/text-input.layered.css +385 -51
  127. package/recipes/text-input.layered.mjs +18 -1
  128. package/recipes/text-input.mjs +18 -1
  129. package/recipes/text.css +180 -0
  130. package/recipes/text.d.ts +59 -1
  131. package/recipes/text.layered.css +216 -0
  132. package/recipes/text.layered.mjs +37 -1
  133. package/recipes/text.mjs +37 -1
  134. package/recipes/toggle-button.d.ts +3 -0
  135. package/vars/color/bg.d.ts +2 -2
  136. package/vars/color/bg.mjs +2 -1
  137. package/vars/color/stroke.d.ts +2 -2
  138. package/vars/color/stroke.mjs +2 -2
  139. package/vars/component/accordion-item.d.ts +132 -0
  140. package/vars/component/accordion-item.mjs +126 -0
  141. package/vars/component/accordion.d.ts +22 -0
  142. package/vars/component/accordion.mjs +16 -0
  143. package/vars/component/attachment-input-dropzone.d.ts +32 -0
  144. package/vars/component/attachment-input-dropzone.mjs +30 -0
  145. package/vars/component/attachment-input-item-action-button.d.ts +37 -0
  146. package/vars/component/attachment-input-item-action-button.mjs +37 -0
  147. package/vars/component/attachment-input-item-remove-button.d.ts +28 -0
  148. package/vars/component/attachment-input-item-remove-button.mjs +28 -0
  149. package/vars/component/attachment-input-item.d.ts +103 -0
  150. package/vars/component/attachment-input-item.mjs +102 -0
  151. package/vars/component/attachment-input-trigger.d.ts +46 -0
  152. package/vars/component/attachment-input-trigger.mjs +46 -0
  153. package/vars/component/attachment-input.d.ts +14 -0
  154. package/vars/component/attachment-input.mjs +12 -0
  155. package/vars/component/chip-tablist.d.ts +0 -7
  156. package/vars/component/chip-tablist.mjs +0 -7
  157. package/vars/component/image-frame.d.ts +1 -22
  158. package/vars/component/image-frame.mjs +1 -9
  159. package/vars/component/index.d.ts +12 -1
  160. package/vars/component/index.mjs +12 -1
  161. package/vars/component/input-button.d.ts +90 -17
  162. package/vars/component/input-button.mjs +84 -17
  163. package/vars/component/menu-item.d.ts +129 -0
  164. package/vars/component/menu-item.mjs +117 -0
  165. package/vars/component/menu.d.ts +68 -0
  166. package/vars/component/menu.mjs +60 -0
  167. package/vars/component/side-panel-close-button.d.ts +23 -0
  168. package/vars/component/side-panel-close-button.mjs +23 -0
  169. package/vars/component/side-panel.d.ts +94 -0
  170. package/vars/component/side-panel.mjs +83 -0
  171. package/vars/component/text-input.d.ts +92 -24
  172. package/vars/component/text-input.mjs +76 -24
  173. package/vars/component/typography.d.ts +414 -0
  174. package/vars/component/typography.mjs +324 -0
  175. package/vars/font-size.d.ts +17 -1
  176. package/vars/font-size.mjs +9 -1
  177. package/vars/gradient.d.ts +0 -8
  178. package/vars/gradient.mjs +0 -2
  179. package/vars/line-height.d.ts +17 -1
  180. package/vars/line-height.mjs +9 -1
  181. package/vars/component/chip-tab.d.ts +0 -162
  182. package/vars/component/chip-tab.mjs +0 -162
  183. /package/recipes/{selectBoxCheckmark.d.ts → select-box-checkmark.d.ts} +0 -0
@@ -0,0 +1,268 @@
1
+ .seed-accordion__root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ }
6
+ .seed-accordion__item {
7
+ display: flex;
8
+ flex-direction: column;
9
+ width: 100%;
10
+ }
11
+ .seed-accordion__header {
12
+ display: flex;
13
+ margin: 0;
14
+ padding: 0;
15
+ font: inherit;
16
+ }
17
+ .seed-accordion__trigger {
18
+ position: relative;
19
+ isolation: isolate;
20
+ display: flex;
21
+ align-items: center;
22
+ width: 100%;
23
+ cursor: pointer;
24
+ background: transparent;
25
+ border: none;
26
+ padding: 0;
27
+ font-family: inherit;
28
+ text-align: start;
29
+ padding-left: var(--seed-dimension-spacing-x-global-gutter);
30
+ padding-right: var(--seed-dimension-spacing-x-global-gutter);
31
+ transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
32
+ outline: var(--seed-dimension-x0_5) solid transparent;
33
+ outline-offset: var(--seed-dimension-x0_5);
34
+ }
35
+ .seed-accordion__trigger:is(:focus-visible, [data-focus-visible]) {
36
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
37
+ outline-offset: var(--seed-dimension-x0_5);
38
+ }
39
+ .seed-accordion__trigger:is(:disabled, [disabled], [data-disabled]) {
40
+ cursor: not-allowed;
41
+ }
42
+ .seed-accordion__prefix {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ flex-shrink: 0;
46
+ --seed-icon-color: var(--seed-color-fg-neutral);
47
+ }
48
+ .seed-accordion__prefix:is(:disabled, [disabled], [data-disabled]) {
49
+ --seed-icon-color: var(--seed-color-fg-disabled);
50
+ }
51
+ .seed-accordion__body {
52
+ display: flex;
53
+ flex: 1;
54
+ flex-direction: column;
55
+ gap: var(--seed-dimension-x0_5);
56
+ min-width: 0;
57
+ }
58
+ .seed-accordion__title {
59
+ color: var(--seed-color-fg-neutral);
60
+ font-weight: var(--seed-font-weight-medium);
61
+ }
62
+ .seed-accordion__title:is(:disabled, [disabled], [data-disabled]) {
63
+ color: var(--seed-color-fg-disabled);
64
+ }
65
+ .seed-accordion__description {
66
+ color: var(--seed-color-fg-neutral-subtle);
67
+ font-weight: var(--seed-font-weight-medium);
68
+ }
69
+ .seed-accordion__description:is(:disabled, [disabled], [data-disabled]) {
70
+ color: var(--seed-color-fg-disabled);
71
+ }
72
+ .seed-accordion__suffixIcon {
73
+ display: inline-flex;
74
+ align-items: center;
75
+ flex-shrink: 0;
76
+ margin-left: auto;
77
+ color: var(--seed-color-fg-neutral-subtle);
78
+ transform: rotate(0deg);
79
+ transition: transform var(--seed-duration-d6) var(--seed-timing-function-easing);
80
+ }
81
+ .seed-accordion__suffixIcon:is([data-state="open"], [data-open]) {
82
+ transform: rotate(180deg);
83
+ }
84
+ .seed-accordion__suffixIcon:is(:disabled, [disabled], [data-disabled]) {
85
+ color: var(--seed-color-fg-disabled);
86
+ }
87
+ .seed-accordion__content {
88
+ overflow: hidden;
89
+ height: 0;
90
+ opacity: 0;
91
+ transition: height var(--seed-duration-d6) var(--seed-timing-function-easing), opacity var(--seed-duration-d6) var(--seed-timing-function-easing);
92
+ }
93
+ .seed-accordion__content:is([data-state="open"], [data-open]) {
94
+ height: var(--collapsible-content-height);
95
+ opacity: 1;
96
+ transition: height var(--seed-duration-d6) var(--seed-timing-function-easing), opacity var(--seed-duration-d6) var(--seed-timing-function-easing);
97
+ }
98
+ .seed-accordion__item--variant_inline {
99
+ position: relative;
100
+ }
101
+ .seed-accordion__item--variant_inline:not(:last-child)::after {
102
+ content: '';
103
+ position: absolute;
104
+ bottom: 0;
105
+ left: var(--seed-dimension-x3);
106
+ right: var(--seed-dimension-x3);
107
+ height: 1px;
108
+ background-color: var(--seed-color-stroke-neutral-subtle);
109
+ }
110
+ .seed-accordion__trigger--variant_inline::before {
111
+ content: '';
112
+ position: absolute;
113
+ top: 0;
114
+ right: 0;
115
+ bottom: 0;
116
+ left: 0;
117
+ z-index: -1;
118
+ transition-property: background-color, left, right, border-radius;
119
+ transition-duration: var(--seed-duration-color-transition);
120
+ transition-timing-function: var(--seed-timing-function-easing);
121
+ }
122
+ @media (hover: hover) and (pointer: fine) {
123
+ .seed-accordion__trigger--variant_inline:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover])::before {
124
+ background-color: var(--seed-color-bg-transparent-pressed);
125
+ left: var(--seed-dimension-x1_5);
126
+ right: var(--seed-dimension-x1_5);
127
+ border-radius: var(--seed-dimension-x2_5);
128
+ }
129
+ }
130
+ @media not all and (hover: hover) and (pointer: fine) {
131
+ .seed-accordion__trigger--variant_inline:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active])::before {
132
+ background-color: var(--seed-color-bg-transparent-pressed);
133
+ left: var(--seed-dimension-x1_5);
134
+ right: var(--seed-dimension-x1_5);
135
+ border-radius: var(--seed-dimension-x2_5);
136
+ }
137
+ }
138
+ .seed-accordion__item--variant_separated {
139
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-muted);
140
+ border-radius: var(--seed-radius-r3);
141
+ overflow: hidden;
142
+ }
143
+ .seed-accordion__trigger--variant_separated::before {
144
+ content: '';
145
+ position: absolute;
146
+ top: 0;
147
+ right: 0;
148
+ bottom: 0;
149
+ left: 0;
150
+ z-index: -1;
151
+ transition-property: background-color;
152
+ transition-duration: var(--seed-duration-color-transition);
153
+ transition-timing-function: var(--seed-timing-function-easing);
154
+ }
155
+ @media (hover: hover) and (pointer: fine) {
156
+ .seed-accordion__trigger--variant_separated:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover])::before {
157
+ background-color: var(--seed-color-bg-transparent-pressed);
158
+ }
159
+ }
160
+ @media not all and (hover: hover) and (pointer: fine) {
161
+ .seed-accordion__trigger--variant_separated:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active])::before {
162
+ background-color: var(--seed-color-bg-transparent-pressed);
163
+ }
164
+ }
165
+ .seed-accordion__trigger--size_medium {
166
+ padding-top: var(--seed-dimension-x4);
167
+ padding-bottom: var(--seed-dimension-x4);
168
+ }
169
+ .seed-accordion__prefix--size_medium {
170
+ margin-right: var(--seed-dimension-x3);
171
+ --seed-icon-size: 22px;
172
+ }
173
+ .seed-accordion__title--size_medium {
174
+ font-size: var(--seed-font-size-t5);
175
+ line-height: var(--seed-line-height-t5);
176
+ }
177
+ .seed-accordion__description--size_medium {
178
+ font-size: var(--seed-font-size-t3);
179
+ line-height: var(--seed-line-height-t3);
180
+ }
181
+ .seed-accordion__suffixIcon--size_medium {
182
+ --seed-suffix-icon-size: var(--seed-dimension-x5);
183
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
184
+ }
185
+ .seed-accordion__trigger--size_large {
186
+ padding-top: var(--seed-dimension-x5);
187
+ padding-bottom: var(--seed-dimension-x5);
188
+ }
189
+ .seed-accordion__prefix--size_large {
190
+ margin-right: var(--seed-dimension-x3);
191
+ --seed-icon-size: 22px;
192
+ }
193
+ .seed-accordion__title--size_large {
194
+ font-size: var(--seed-font-size-t7);
195
+ line-height: var(--seed-line-height-t7);
196
+ }
197
+ .seed-accordion__description--size_large {
198
+ font-size: var(--seed-font-size-t5);
199
+ line-height: var(--seed-line-height-t5);
200
+ }
201
+ .seed-accordion__suffixIcon--size_large {
202
+ --seed-suffix-icon-size: var(--seed-dimension-x6);
203
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
204
+ }
205
+ .seed-accordion__trigger--size_responsive {
206
+ padding-top: var(--seed-dimension-x4);
207
+ padding-bottom: var(--seed-dimension-x4);
208
+ }
209
+ @media (min-width: 768px) {
210
+ .seed-accordion__trigger--size_responsive {
211
+ padding-top: var(--seed-dimension-x5);
212
+ padding-bottom: var(--seed-dimension-x5);
213
+ }
214
+ }
215
+ .seed-accordion__prefix--size_responsive {
216
+ margin-right: var(--seed-dimension-x3);
217
+ --seed-icon-size: 22px;
218
+ }
219
+ @media (min-width: 768px) {
220
+ .seed-accordion__prefix--size_responsive {
221
+ margin-right: var(--seed-dimension-x3);
222
+ --seed-icon-size: 22px;
223
+ }
224
+ }
225
+ .seed-accordion__title--size_responsive {
226
+ font-size: var(--seed-font-size-t5);
227
+ line-height: var(--seed-line-height-t5);
228
+ }
229
+ @media (min-width: 768px) {
230
+ .seed-accordion__title--size_responsive {
231
+ font-size: var(--seed-font-size-t7);
232
+ line-height: var(--seed-line-height-t7);
233
+ }
234
+ }
235
+ .seed-accordion__description--size_responsive {
236
+ font-size: var(--seed-font-size-t3);
237
+ line-height: var(--seed-line-height-t3);
238
+ }
239
+ @media (min-width: 768px) {
240
+ .seed-accordion__description--size_responsive {
241
+ font-size: var(--seed-font-size-t5);
242
+ line-height: var(--seed-line-height-t5);
243
+ }
244
+ }
245
+ .seed-accordion__suffixIcon--size_responsive {
246
+ --seed-suffix-icon-size: var(--seed-dimension-x5);
247
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
248
+ }
249
+ @media (min-width: 768px) {
250
+ .seed-accordion__suffixIcon--size_responsive {
251
+ --seed-suffix-icon-size: var(--seed-dimension-x6);
252
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
253
+ }
254
+ }
255
+ .seed-accordion__root--variant_separated-size_medium {
256
+ gap: var(--seed-dimension-x3);
257
+ }
258
+ .seed-accordion__root--variant_separated-size_large {
259
+ gap: var(--seed-dimension-x4);
260
+ }
261
+ .seed-accordion__root--variant_separated-size_responsive {
262
+ gap: var(--seed-dimension-x3);
263
+ }
264
+ @media (min-width: 768px) {
265
+ .seed-accordion__root--variant_separated-size_responsive {
266
+ gap: var(--seed-dimension-x4);
267
+ }
268
+ }
@@ -0,0 +1,33 @@
1
+ declare interface AccordionVariant {
2
+ /**
3
+ * - `inline`: Accordion Item들이 하나의 연속된 목록처럼 표현됩니다. 밀접하게 관련된 항목들을 컴팩트하게 나열할 때 사용합니다.
4
+ * - `separated`: 각 Accordion Item이 개별 카드 형태로 분리되어 표현됩니다. 항목 간 시각적 독립성이 필요하거나, 각 섹션의 중요도가 동등할 때 사용합니다.
5
+ *
6
+ * @default "inline"
7
+ */
8
+ variant: "inline" | "separated";
9
+ /**
10
+ * - `responsive`: 뷰포트 너비에 따라 적용되는 사이즈가 달라집니다. Breakpoint `md` 미만에서는 `medium`, `md` 이상에서는 `large`로 적용됩니다.
11
+ *
12
+ * @default "medium"
13
+ */
14
+ size: "medium" | "large" | "responsive";
15
+ }
16
+
17
+ declare type AccordionVariantMap = {
18
+ [key in keyof AccordionVariant]: Array<AccordionVariant[key]>;
19
+ };
20
+
21
+ export declare type AccordionVariantProps = Partial<AccordionVariant>;
22
+
23
+ export declare type AccordionSlotName = "root" | "item" | "header" | "trigger" | "prefix" | "body" | "title" | "description" | "suffixIcon" | "content";
24
+
25
+ export declare const accordionVariantMap: AccordionVariantMap;
26
+
27
+ export declare const accordion: ((
28
+ props?: AccordionVariantProps,
29
+ ) => Record<AccordionSlotName, string>) & {
30
+ splitVariantProps: <T extends AccordionVariantProps>(
31
+ props: T,
32
+ ) => [AccordionVariantProps, Omit<T, keyof AccordionVariantProps>];
33
+ }
@@ -0,0 +1,308 @@
1
+ @layer seed-components {
2
+ .seed-accordion__root, .seed-accordion__item {
3
+ flex-direction: column;
4
+ width: 100%;
5
+ display: flex;
6
+ }
7
+
8
+ .seed-accordion__header {
9
+ font: inherit;
10
+ margin: 0;
11
+ padding: 0;
12
+ display: flex;
13
+ }
14
+
15
+ .seed-accordion__trigger {
16
+ isolation: isolate;
17
+ cursor: pointer;
18
+ text-align: start;
19
+ width: 100%;
20
+ padding: 0;
21
+ padding-left: var(--seed-dimension-spacing-x-global-gutter);
22
+ padding-right: var(--seed-dimension-spacing-x-global-gutter);
23
+ transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
24
+ outline: var(--seed-dimension-x0_5) solid transparent;
25
+ outline-offset: var(--seed-dimension-x0_5);
26
+ background: none;
27
+ border: none;
28
+ align-items: center;
29
+ font-family: inherit;
30
+ display: flex;
31
+ position: relative;
32
+ }
33
+
34
+ .seed-accordion__trigger:is(:focus-visible, [data-focus-visible]) {
35
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
36
+ outline-offset: var(--seed-dimension-x0_5);
37
+ }
38
+
39
+ .seed-accordion__trigger:is(:disabled, [disabled], [data-disabled]) {
40
+ cursor: not-allowed;
41
+ }
42
+
43
+ .seed-accordion__prefix {
44
+ --seed-icon-color: var(--seed-color-fg-neutral);
45
+ flex-shrink: 0;
46
+ align-items: center;
47
+ display: inline-flex;
48
+ }
49
+
50
+ .seed-accordion__prefix:is(:disabled, [disabled], [data-disabled]) {
51
+ --seed-icon-color: var(--seed-color-fg-disabled);
52
+ }
53
+
54
+ .seed-accordion__body {
55
+ gap: var(--seed-dimension-x0_5);
56
+ flex-direction: column;
57
+ flex: 1;
58
+ min-width: 0;
59
+ display: flex;
60
+ }
61
+
62
+ .seed-accordion__title {
63
+ color: var(--seed-color-fg-neutral);
64
+ font-weight: var(--seed-font-weight-medium);
65
+ }
66
+
67
+ .seed-accordion__title:is(:disabled, [disabled], [data-disabled]) {
68
+ color: var(--seed-color-fg-disabled);
69
+ }
70
+
71
+ .seed-accordion__description {
72
+ color: var(--seed-color-fg-neutral-subtle);
73
+ font-weight: var(--seed-font-weight-medium);
74
+ }
75
+
76
+ .seed-accordion__description:is(:disabled, [disabled], [data-disabled]) {
77
+ color: var(--seed-color-fg-disabled);
78
+ }
79
+
80
+ .seed-accordion__suffixIcon {
81
+ color: var(--seed-color-fg-neutral-subtle);
82
+ transition: transform var(--seed-duration-d6) var(--seed-timing-function-easing);
83
+ flex-shrink: 0;
84
+ align-items: center;
85
+ margin-left: auto;
86
+ display: inline-flex;
87
+ transform: rotate(0);
88
+ }
89
+
90
+ .seed-accordion__suffixIcon:is([data-state="open"], [data-open]) {
91
+ transform: rotate(180deg);
92
+ }
93
+
94
+ .seed-accordion__suffixIcon:is(:disabled, [disabled], [data-disabled]) {
95
+ color: var(--seed-color-fg-disabled);
96
+ }
97
+
98
+ .seed-accordion__content {
99
+ opacity: 0;
100
+ height: 0;
101
+ transition: height var(--seed-duration-d6) var(--seed-timing-function-easing), opacity var(--seed-duration-d6) var(--seed-timing-function-easing);
102
+ overflow: hidden;
103
+ }
104
+
105
+ .seed-accordion__content:is([data-state="open"], [data-open]) {
106
+ height: var(--collapsible-content-height);
107
+ opacity: 1;
108
+ transition: height var(--seed-duration-d6) var(--seed-timing-function-easing), opacity var(--seed-duration-d6) var(--seed-timing-function-easing);
109
+ }
110
+
111
+ .seed-accordion__item--variant_inline {
112
+ position: relative;
113
+ }
114
+
115
+ .seed-accordion__item--variant_inline:not(:last-child):after {
116
+ content: "";
117
+ bottom: 0;
118
+ left: var(--seed-dimension-x3);
119
+ right: var(--seed-dimension-x3);
120
+ background-color: var(--seed-color-stroke-neutral-subtle);
121
+ height: 1px;
122
+ position: absolute;
123
+ }
124
+
125
+ .seed-accordion__trigger--variant_inline:before {
126
+ content: "";
127
+ z-index: -1;
128
+ transition-property: background-color, left, right, border-radius;
129
+ transition-duration: var(--seed-duration-color-transition);
130
+ transition-timing-function: var(--seed-timing-function-easing);
131
+ position: absolute;
132
+ inset: 0;
133
+ }
134
+
135
+ @media (hover: hover) and (pointer: fine) {
136
+ .seed-accordion__trigger--variant_inline:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover]):before {
137
+ background-color: var(--seed-color-bg-transparent-pressed);
138
+ left: var(--seed-dimension-x1_5);
139
+ right: var(--seed-dimension-x1_5);
140
+ border-radius: var(--seed-dimension-x2_5);
141
+ }
142
+ }
143
+
144
+ @media not all and (hover: hover) and (pointer: fine) {
145
+ .seed-accordion__trigger--variant_inline:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]):before {
146
+ background-color: var(--seed-color-bg-transparent-pressed);
147
+ left: var(--seed-dimension-x1_5);
148
+ right: var(--seed-dimension-x1_5);
149
+ border-radius: var(--seed-dimension-x2_5);
150
+ }
151
+ }
152
+
153
+ .seed-accordion__item--variant_separated {
154
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-muted);
155
+ border-radius: var(--seed-radius-r3);
156
+ overflow: hidden;
157
+ }
158
+
159
+ .seed-accordion__trigger--variant_separated:before {
160
+ content: "";
161
+ z-index: -1;
162
+ transition-property: background-color;
163
+ transition-duration: var(--seed-duration-color-transition);
164
+ transition-timing-function: var(--seed-timing-function-easing);
165
+ position: absolute;
166
+ inset: 0;
167
+ }
168
+
169
+ @media (hover: hover) and (pointer: fine) {
170
+ .seed-accordion__trigger--variant_separated:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover]):before {
171
+ background-color: var(--seed-color-bg-transparent-pressed);
172
+ }
173
+ }
174
+
175
+ @media not all and (hover: hover) and (pointer: fine) {
176
+ .seed-accordion__trigger--variant_separated:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]):before {
177
+ background-color: var(--seed-color-bg-transparent-pressed);
178
+ }
179
+ }
180
+
181
+ .seed-accordion__trigger--size_medium {
182
+ padding-top: var(--seed-dimension-x4);
183
+ padding-bottom: var(--seed-dimension-x4);
184
+ }
185
+
186
+ .seed-accordion__prefix--size_medium {
187
+ margin-right: var(--seed-dimension-x3);
188
+ --seed-icon-size: 22px;
189
+ }
190
+
191
+ .seed-accordion__title--size_medium {
192
+ font-size: var(--seed-font-size-t5);
193
+ line-height: var(--seed-line-height-t5);
194
+ }
195
+
196
+ .seed-accordion__description--size_medium {
197
+ font-size: var(--seed-font-size-t3);
198
+ line-height: var(--seed-line-height-t3);
199
+ }
200
+
201
+ .seed-accordion__suffixIcon--size_medium {
202
+ --seed-suffix-icon-size: var(--seed-dimension-x5);
203
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
204
+ }
205
+
206
+ .seed-accordion__trigger--size_large {
207
+ padding-top: var(--seed-dimension-x5);
208
+ padding-bottom: var(--seed-dimension-x5);
209
+ }
210
+
211
+ .seed-accordion__prefix--size_large {
212
+ margin-right: var(--seed-dimension-x3);
213
+ --seed-icon-size: 22px;
214
+ }
215
+
216
+ .seed-accordion__title--size_large {
217
+ font-size: var(--seed-font-size-t7);
218
+ line-height: var(--seed-line-height-t7);
219
+ }
220
+
221
+ .seed-accordion__description--size_large {
222
+ font-size: var(--seed-font-size-t5);
223
+ line-height: var(--seed-line-height-t5);
224
+ }
225
+
226
+ .seed-accordion__suffixIcon--size_large {
227
+ --seed-suffix-icon-size: var(--seed-dimension-x6);
228
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
229
+ }
230
+
231
+ .seed-accordion__trigger--size_responsive {
232
+ padding-top: var(--seed-dimension-x4);
233
+ padding-bottom: var(--seed-dimension-x4);
234
+ }
235
+
236
+ @media (width >= 768px) {
237
+ .seed-accordion__trigger--size_responsive {
238
+ padding-top: var(--seed-dimension-x5);
239
+ padding-bottom: var(--seed-dimension-x5);
240
+ }
241
+ }
242
+
243
+ .seed-accordion__prefix--size_responsive {
244
+ margin-right: var(--seed-dimension-x3);
245
+ --seed-icon-size: 22px;
246
+ }
247
+
248
+ @media (width >= 768px) {
249
+ .seed-accordion__prefix--size_responsive {
250
+ margin-right: var(--seed-dimension-x3);
251
+ --seed-icon-size: 22px;
252
+ }
253
+ }
254
+
255
+ .seed-accordion__title--size_responsive {
256
+ font-size: var(--seed-font-size-t5);
257
+ line-height: var(--seed-line-height-t5);
258
+ }
259
+
260
+ @media (width >= 768px) {
261
+ .seed-accordion__title--size_responsive {
262
+ font-size: var(--seed-font-size-t7);
263
+ line-height: var(--seed-line-height-t7);
264
+ }
265
+ }
266
+
267
+ .seed-accordion__description--size_responsive {
268
+ font-size: var(--seed-font-size-t3);
269
+ line-height: var(--seed-line-height-t3);
270
+ }
271
+
272
+ @media (width >= 768px) {
273
+ .seed-accordion__description--size_responsive {
274
+ font-size: var(--seed-font-size-t5);
275
+ line-height: var(--seed-line-height-t5);
276
+ }
277
+ }
278
+
279
+ .seed-accordion__suffixIcon--size_responsive {
280
+ --seed-suffix-icon-size: var(--seed-dimension-x5);
281
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
282
+ }
283
+
284
+ @media (width >= 768px) {
285
+ .seed-accordion__suffixIcon--size_responsive {
286
+ --seed-suffix-icon-size: var(--seed-dimension-x6);
287
+ --seed-suffix-icon-margin-left: var(--seed-dimension-x3);
288
+ }
289
+ }
290
+
291
+ .seed-accordion__root--variant_separated-size_medium {
292
+ gap: var(--seed-dimension-x3);
293
+ }
294
+
295
+ .seed-accordion__root--variant_separated-size_large {
296
+ gap: var(--seed-dimension-x4);
297
+ }
298
+
299
+ .seed-accordion__root--variant_separated-size_responsive {
300
+ gap: var(--seed-dimension-x3);
301
+ }
302
+
303
+ @media (width >= 768px) {
304
+ .seed-accordion__root--variant_separated-size_responsive {
305
+ gap: var(--seed-dimension-x4);
306
+ }
307
+ }
308
+ }
@@ -0,0 +1,94 @@
1
+ import './accordion.layered.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const accordionSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-accordion__root"
8
+ ],
9
+ [
10
+ "item",
11
+ "seed-accordion__item"
12
+ ],
13
+ [
14
+ "header",
15
+ "seed-accordion__header"
16
+ ],
17
+ [
18
+ "trigger",
19
+ "seed-accordion__trigger"
20
+ ],
21
+ [
22
+ "prefix",
23
+ "seed-accordion__prefix"
24
+ ],
25
+ [
26
+ "body",
27
+ "seed-accordion__body"
28
+ ],
29
+ [
30
+ "title",
31
+ "seed-accordion__title"
32
+ ],
33
+ [
34
+ "description",
35
+ "seed-accordion__description"
36
+ ],
37
+ [
38
+ "suffixIcon",
39
+ "seed-accordion__suffixIcon"
40
+ ],
41
+ [
42
+ "content",
43
+ "seed-accordion__content"
44
+ ]
45
+ ];
46
+
47
+ const defaultVariant = {
48
+ "variant": "inline",
49
+ "size": "medium"
50
+ };
51
+
52
+ const compoundVariants = [
53
+ {
54
+ "variant": "separated",
55
+ "size": "medium"
56
+ },
57
+ {
58
+ "variant": "separated",
59
+ "size": "large"
60
+ },
61
+ {
62
+ "variant": "separated",
63
+ "size": "responsive"
64
+ }
65
+ ];
66
+
67
+ export const accordionVariantMap = {
68
+ "variant": [
69
+ "inline",
70
+ "separated"
71
+ ],
72
+ "size": [
73
+ "medium",
74
+ "large",
75
+ "responsive"
76
+ ]
77
+ };
78
+
79
+ export const accordionVariantKeys = Object.keys(accordionVariantMap);
80
+
81
+ export function accordion(props) {
82
+ return Object.fromEntries(
83
+ accordionSlotNames.map(([slot, className]) => {
84
+ return [
85
+ slot,
86
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
87
+ ];
88
+ }),
89
+ );
90
+ }
91
+
92
+ Object.assign(accordion, { splitVariantProps: (props) => splitVariantProps(props, accordionVariantMap) });
93
+
94
+ // @recipe(seed): accordion