@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,94 @@
1
+ import './accordion.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
@@ -26,10 +26,30 @@
26
26
  padding-bottom: var(--seed-box-padding-bottom);
27
27
  padding-left: var(--seed-box-padding-left);
28
28
  padding-right: var(--seed-box-padding-right);
29
- --seed-box-bleed-bottom: 0px;
30
- --seed-box-bleed-top: 0px;
31
- --seed-box-bleed-left: 0px;
32
- --seed-box-bleed-right: 0px;
29
+ --seed-box-bleed-bottom-base: 0px;
30
+ --seed-box-bleed-bottom-sm: var(--seed-box-bleed-bottom-base);
31
+ --seed-box-bleed-bottom-md: var(--seed-box-bleed-bottom-sm);
32
+ --seed-box-bleed-bottom-lg: var(--seed-box-bleed-bottom-md);
33
+ --seed-box-bleed-bottom-xl: var(--seed-box-bleed-bottom-lg);
34
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-base);
35
+ --seed-box-bleed-top-base: 0px;
36
+ --seed-box-bleed-top-sm: var(--seed-box-bleed-top-base);
37
+ --seed-box-bleed-top-md: var(--seed-box-bleed-top-sm);
38
+ --seed-box-bleed-top-lg: var(--seed-box-bleed-top-md);
39
+ --seed-box-bleed-top-xl: var(--seed-box-bleed-top-lg);
40
+ --seed-box-bleed-top: var(--seed-box-bleed-top-base);
41
+ --seed-box-bleed-left-base: 0px;
42
+ --seed-box-bleed-left-sm: var(--seed-box-bleed-left-base);
43
+ --seed-box-bleed-left-md: var(--seed-box-bleed-left-sm);
44
+ --seed-box-bleed-left-lg: var(--seed-box-bleed-left-md);
45
+ --seed-box-bleed-left-xl: var(--seed-box-bleed-left-lg);
46
+ --seed-box-bleed-left: var(--seed-box-bleed-left-base);
47
+ --seed-box-bleed-right-base: 0px;
48
+ --seed-box-bleed-right-sm: var(--seed-box-bleed-right-base);
49
+ --seed-box-bleed-right-md: var(--seed-box-bleed-right-sm);
50
+ --seed-box-bleed-right-lg: var(--seed-box-bleed-right-md);
51
+ --seed-box-bleed-right-xl: var(--seed-box-bleed-right-lg);
52
+ --seed-box-bleed-right: var(--seed-box-bleed-right-base);
33
53
  margin-top: calc(var(--seed-box-bleed-top) * -1);
34
54
  margin-bottom: calc(var(--seed-box-bleed-bottom) * -1);
35
55
  margin-left: calc(var(--seed-box-bleed-left) * -1);
@@ -368,4 +388,36 @@
368
388
  --seed-box-padding-right: var(--seed-dimension-x3_5);
369
389
  --seed-box-padding-top: var(--seed-dimension-x3_5);
370
390
  --seed-box-padding-bottom: var(--seed-dimension-x3_5);
391
+ }
392
+ @media (min-width: 480px) {
393
+ .seed-action-button {
394
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-sm);
395
+ --seed-box-bleed-top: var(--seed-box-bleed-top-sm);
396
+ --seed-box-bleed-left: var(--seed-box-bleed-left-sm);
397
+ --seed-box-bleed-right: var(--seed-box-bleed-right-sm);
398
+ }
399
+ }
400
+ @media (min-width: 768px) {
401
+ .seed-action-button {
402
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-md);
403
+ --seed-box-bleed-top: var(--seed-box-bleed-top-md);
404
+ --seed-box-bleed-left: var(--seed-box-bleed-left-md);
405
+ --seed-box-bleed-right: var(--seed-box-bleed-right-md);
406
+ }
407
+ }
408
+ @media (min-width: 1280px) {
409
+ .seed-action-button {
410
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-lg);
411
+ --seed-box-bleed-top: var(--seed-box-bleed-top-lg);
412
+ --seed-box-bleed-left: var(--seed-box-bleed-left-lg);
413
+ --seed-box-bleed-right: var(--seed-box-bleed-right-lg);
414
+ }
415
+ }
416
+ @media (min-width: 1440px) {
417
+ .seed-action-button {
418
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-xl);
419
+ --seed-box-bleed-top: var(--seed-box-bleed-top-xl);
420
+ --seed-box-bleed-left: var(--seed-box-bleed-left-xl);
421
+ --seed-box-bleed-right: var(--seed-box-bleed-right-xl);
422
+ }
371
423
  }
@@ -1,13 +1,29 @@
1
1
  declare interface ActionButtonVariant {
2
2
  /**
3
+ * - `brandSolid`: 브랜드의 핵심 가치를 전달하며, 사용자 간 연결이 일어나는 서비스의 주요 기능에 사용합니다. 한 화면에 하나만 사용하는 것을 권장합니다.
4
+ * - `neutralSolid`: 대부분의 화면에서 CTA로 사용합니다. 한 화면에 하나만 사용하는 것을 권장합니다.
5
+ * - `neutralWeak`: CTA를 제외한 대부분의 액션에 사용됩니다.
6
+ * - `criticalSolid`: 삭제나 초기화처럼 되돌릴 수 없는 중요한 작업에 사용합니다.
7
+ * - `brandOutline`: variant=brandSolid, neutralSolid, criticalSolid와 함께 사용할 수 없으며, variant=neutralOutline과 조합하여 사용하는 것을 권장합니다.
8
+ * - `neutralOutline`: variant=brandSolid, neutralSolid, criticalSolid와 함께 사용할 수 없으며, variant=brandOutline과 조합하여 사용하는 것을 권장합니다.
9
+ * - `ghost`: 배경 없이 텍스트와 아이콘만 표시됩니다. 모두 동일한 색상을 사용하는 조건에서 icon, prefix icon, suffix icon, label에 정의된 color를 변경할 수 있으며, label의 fontWeight를 `$font-weight.regular` 또는 `$font-weight.medium`으로 변경하여 주목도를 조절할 수 있습니다.
10
+ *
3
11
  * @default "brandSolid"
4
12
  */
5
13
  variant: "brandSolid" | "neutralSolid" | "neutralWeak" | "criticalSolid" | "brandOutline" | "neutralOutline" | "ghost";
6
14
  /**
15
+ * - `xsmall`: 작은 공간에서 효율적으로 사용할 수 있는 Pill 형태로 제공됩니다.
16
+ * - `small`: 화면 중앙에서 범용적으로 사용됩니다.
17
+ * - `medium`: 화면 중앙에서 범용적으로 사용됩니다.
18
+ * - `large`: 주로 CTA 역할로 사용됩니다.
19
+ *
7
20
  * @default "medium"
8
21
  */
9
22
  size: "xsmall" | "small" | "medium" | "large";
10
23
  /**
24
+ * - `withText`: 텍스트와 함께 아이콘을 표시할 수 있습니다.
25
+ * - `iconOnly`: 아이콘만으로 의미를 전달하기 때문에 접근성이 떨어집니다. 꼭 필요한 경우에만 접근성 레이블과 함께 사용하는 것을 권장합니다.
26
+ *
11
27
  * @default "withText"
12
28
  */
13
29
  layout: "withText" | "iconOnly";
@@ -20,10 +20,30 @@
20
20
  padding-bottom: var(--seed-box-padding-bottom);
21
21
  padding-left: var(--seed-box-padding-left);
22
22
  padding-right: var(--seed-box-padding-right);
23
- --seed-box-bleed-bottom: 0px;
24
- --seed-box-bleed-top: 0px;
25
- --seed-box-bleed-left: 0px;
26
- --seed-box-bleed-right: 0px;
23
+ --seed-box-bleed-bottom-base: 0px;
24
+ --seed-box-bleed-bottom-sm: var(--seed-box-bleed-bottom-base);
25
+ --seed-box-bleed-bottom-md: var(--seed-box-bleed-bottom-sm);
26
+ --seed-box-bleed-bottom-lg: var(--seed-box-bleed-bottom-md);
27
+ --seed-box-bleed-bottom-xl: var(--seed-box-bleed-bottom-lg);
28
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-base);
29
+ --seed-box-bleed-top-base: 0px;
30
+ --seed-box-bleed-top-sm: var(--seed-box-bleed-top-base);
31
+ --seed-box-bleed-top-md: var(--seed-box-bleed-top-sm);
32
+ --seed-box-bleed-top-lg: var(--seed-box-bleed-top-md);
33
+ --seed-box-bleed-top-xl: var(--seed-box-bleed-top-lg);
34
+ --seed-box-bleed-top: var(--seed-box-bleed-top-base);
35
+ --seed-box-bleed-left-base: 0px;
36
+ --seed-box-bleed-left-sm: var(--seed-box-bleed-left-base);
37
+ --seed-box-bleed-left-md: var(--seed-box-bleed-left-sm);
38
+ --seed-box-bleed-left-lg: var(--seed-box-bleed-left-md);
39
+ --seed-box-bleed-left-xl: var(--seed-box-bleed-left-lg);
40
+ --seed-box-bleed-left: var(--seed-box-bleed-left-base);
41
+ --seed-box-bleed-right-base: 0px;
42
+ --seed-box-bleed-right-sm: var(--seed-box-bleed-right-base);
43
+ --seed-box-bleed-right-md: var(--seed-box-bleed-right-sm);
44
+ --seed-box-bleed-right-lg: var(--seed-box-bleed-right-md);
45
+ --seed-box-bleed-right-xl: var(--seed-box-bleed-right-lg);
46
+ --seed-box-bleed-right: var(--seed-box-bleed-right-base);
27
47
  margin-top: calc(var(--seed-box-bleed-top) * -1);
28
48
  margin-bottom: calc(var(--seed-box-bleed-bottom) * -1);
29
49
  margin-left: calc(var(--seed-box-bleed-left) * -1);
@@ -418,4 +438,40 @@
418
438
  --seed-box-padding-top: var(--seed-dimension-x3_5);
419
439
  --seed-box-padding-bottom: var(--seed-dimension-x3_5);
420
440
  }
441
+
442
+ @media (width >= 480px) {
443
+ .seed-action-button {
444
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-sm);
445
+ --seed-box-bleed-top: var(--seed-box-bleed-top-sm);
446
+ --seed-box-bleed-left: var(--seed-box-bleed-left-sm);
447
+ --seed-box-bleed-right: var(--seed-box-bleed-right-sm);
448
+ }
449
+ }
450
+
451
+ @media (width >= 768px) {
452
+ .seed-action-button {
453
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-md);
454
+ --seed-box-bleed-top: var(--seed-box-bleed-top-md);
455
+ --seed-box-bleed-left: var(--seed-box-bleed-left-md);
456
+ --seed-box-bleed-right: var(--seed-box-bleed-right-md);
457
+ }
458
+ }
459
+
460
+ @media (width >= 1280px) {
461
+ .seed-action-button {
462
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-lg);
463
+ --seed-box-bleed-top: var(--seed-box-bleed-top-lg);
464
+ --seed-box-bleed-left: var(--seed-box-bleed-left-lg);
465
+ --seed-box-bleed-right: var(--seed-box-bleed-right-lg);
466
+ }
467
+ }
468
+
469
+ @media (width >= 1440px) {
470
+ .seed-action-button {
471
+ --seed-box-bleed-bottom: var(--seed-box-bleed-bottom-xl);
472
+ --seed-box-bleed-top: var(--seed-box-bleed-top-xl);
473
+ --seed-box-bleed-left: var(--seed-box-bleed-left-xl);
474
+ --seed-box-bleed-right: var(--seed-box-bleed-right-xl);
475
+ }
476
+ }
421
477
  }
@@ -102,7 +102,4 @@
102
102
  }
103
103
  .seed-app-bar__icon--tone_transparent {
104
104
  color: var(--seed-icon-color, var(--seed-color-palette-static-white));
105
- }
106
- .seed-app-bar__background--divider_true {
107
- box-shadow: inset 0px calc(-1 * 1px) 0 var(--seed-color-stroke-neutral-subtle);
108
105
  }
@@ -11,10 +11,6 @@ declare interface AppBarVariant {
11
11
  * @default "layer"
12
12
  */
13
13
  tone: "layer" | "transparent";
14
- /**
15
- * @default false
16
- */
17
- divider: boolean;
18
14
  }
19
15
 
20
16
  declare type AppBarVariantMap = {
@@ -122,8 +122,4 @@
122
122
  .seed-app-bar__icon--tone_transparent {
123
123
  color: var(--seed-icon-color, var(--seed-color-palette-static-white));
124
124
  }
125
-
126
- .seed-app-bar__background--divider_true {
127
- box-shadow: inset 0px calc(-1 * 1px) 0 var(--seed-color-stroke-neutral-subtle);
128
- }
129
125
  }
@@ -35,8 +35,7 @@ const appBarSlotNames = [
35
35
  const defaultVariant = {
36
36
  "theme": "cupertino",
37
37
  "transitionStyle": "slideFromRightIOS",
38
- "tone": "layer",
39
- "divider": false
38
+ "tone": "layer"
40
39
  };
41
40
 
42
41
  const compoundVariants = [];
@@ -54,9 +53,6 @@ export const appBarVariantMap = {
54
53
  "tone": [
55
54
  "layer",
56
55
  "transparent"
57
- ],
58
- "divider": [
59
- true
60
56
  ]
61
57
  };
62
58
 
@@ -35,8 +35,7 @@ const appBarSlotNames = [
35
35
  const defaultVariant = {
36
36
  "theme": "cupertino",
37
37
  "transitionStyle": "slideFromRightIOS",
38
- "tone": "layer",
39
- "divider": false
38
+ "tone": "layer"
40
39
  };
41
40
 
42
41
  const compoundVariants = [];
@@ -54,9 +53,6 @@ export const appBarVariantMap = {
54
53
  "tone": [
55
54
  "layer",
56
55
  "transparent"
57
- ],
58
- "divider": [
59
- true
60
56
  ]
61
57
  };
62
58
 
@@ -29,6 +29,9 @@
29
29
  .seed-app-screen__layer::-webkit-scrollbar {
30
30
  display: none;
31
31
  }
32
+ .seed-app-screen__layer:focus {
33
+ outline: none;
34
+ }
32
35
  .seed-app-screen__layer {
33
36
  background-color: var(--seed-color-bg-layer-default);
34
37
  }
@@ -34,6 +34,10 @@
34
34
  display: none;
35
35
  }
36
36
 
37
+ .seed-app-screen__layer:focus {
38
+ outline: none;
39
+ }
40
+
37
41
  .seed-app-screen__layer {
38
42
  background-color: var(--seed-color-bg-layer-default);
39
43
  }
@@ -0,0 +1,275 @@
1
+ .seed-attachment-input-item__root {
2
+ position: relative;
3
+ display: flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: var(--seed-dimension-x2_5);
7
+ height: 80px;
8
+ border-radius: var(--seed-radius-r3);
9
+ --remove-button-mask-size: var(--seed-dimension-x6);
10
+ --remove-button-mask-offset: var(--seed-dimension-x1_5);
11
+ outline: var(--seed-dimension-x0_5) solid transparent;
12
+ outline-offset: var(--seed-dimension-x0_5);
13
+ }
14
+ .seed-attachment-input-item__root:is(:focus-visible, [data-focus-visible]) {
15
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
16
+ outline-offset: var(--seed-dimension-x0_5);
17
+ }
18
+ .seed-attachment-input-item__root::before {
19
+ content: "";
20
+ position: absolute;
21
+ top: 0;
22
+ right: 0;
23
+ bottom: 0;
24
+ left: 0;
25
+ border-radius: inherit;
26
+ pointer-events: none;
27
+ -webkit-mask-image: linear-gradient(black, black), url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="white"/></svg>');
28
+ -webkit-mask-size: 100% 100%, var(--remove-button-mask-size) var(--remove-button-mask-size);
29
+ -webkit-mask-position: 0 0, right calc(0px - var(--remove-button-mask-offset)) top calc(0px - var(--remove-button-mask-offset));
30
+ -webkit-mask-repeat: no-repeat;
31
+ -webkit-mask-composite: source-out;
32
+ mask-image: linear-gradient(black, black), url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="white"/></svg>');
33
+ mask-size: 100% 100%, var(--remove-button-mask-size) var(--remove-button-mask-size);
34
+ mask-position: 0 0, right calc(0px - var(--remove-button-mask-offset)) top calc(0px - var(--remove-button-mask-offset));
35
+ mask-repeat: no-repeat;
36
+ mask-composite: subtract;
37
+ transform: translateZ(0);
38
+ }
39
+ .seed-attachment-input-item__root[role='button']:not([aria-grabbed=true]):not([data-readonly]) {
40
+ cursor: grab;
41
+ }
42
+ .seed-attachment-input-item__root[aria-grabbed=true] {
43
+ --remove-button-mask-size: 0px;
44
+ --remove-button-mask-offset: 0px;
45
+ }
46
+ .seed-attachment-input-item__image {
47
+ width: 100%;
48
+ height: 100%;
49
+ object-fit: cover;
50
+ border-radius: inherit;
51
+ -webkit-mask-image: linear-gradient(black, black), url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="white"/></svg>');
52
+ -webkit-mask-size: 100% 100%, var(--remove-button-mask-size) var(--remove-button-mask-size);
53
+ -webkit-mask-position: 0 0, right calc(0px - var(--remove-button-mask-offset)) top calc(0px - var(--remove-button-mask-offset));
54
+ -webkit-mask-repeat: no-repeat;
55
+ -webkit-mask-composite: source-out;
56
+ mask-image: linear-gradient(black, black), url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="white"/></svg>');
57
+ mask-size: 100% 100%, var(--remove-button-mask-size) var(--remove-button-mask-size);
58
+ mask-position: 0 0, right calc(0px - var(--remove-button-mask-offset)) top calc(0px - var(--remove-button-mask-offset));
59
+ mask-repeat: no-repeat;
60
+ mask-composite: subtract;
61
+ transform: translateZ(0);
62
+ }
63
+ .seed-attachment-input-item__thumbnail {
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ width: var(--seed-dimension-x12);
68
+ height: var(--seed-dimension-x12);
69
+ background-color: var(--seed-color-bg-neutral-weak);
70
+ border-radius: var(--seed-radius-r2);
71
+ flex-shrink: 0;
72
+ --seed-icon-size: var(--seed-dimension-x6);
73
+ --seed-icon-color: var(--seed-color-fg-neutral-subtle);
74
+ }
75
+ .seed-attachment-input-item__metadata {
76
+ display: flex;
77
+ flex-direction: column;
78
+ width: 100%;
79
+ flex-grow: 1;
80
+ }
81
+ .seed-attachment-input-item__name {
82
+ overflow: hidden;
83
+ word-break: break-all;
84
+ font-size: var(--seed-font-size-t2);
85
+ line-height: var(--seed-line-height-t2);
86
+ font-weight: var(--seed-font-weight-medium);
87
+ color: var(--seed-color-fg-neutral);
88
+ }
89
+ .seed-attachment-input-item__size {
90
+ font-size: var(--seed-font-size-t1);
91
+ line-height: var(--seed-line-height-t1);
92
+ font-weight: var(--seed-font-weight-regular);
93
+ color: var(--seed-color-fg-neutral-subtle);
94
+ }
95
+ .seed-attachment-input-item__backdrop {
96
+ position: absolute;
97
+ top: 0;
98
+ right: 0;
99
+ bottom: 0;
100
+ left: 0;
101
+ display: flex;
102
+ flex-direction: column;
103
+ align-items: center;
104
+ justify-content: center;
105
+ border-radius: inherit;
106
+ -webkit-mask-image: linear-gradient(black, black), url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="white"/></svg>');
107
+ -webkit-mask-size: 100% 100%, var(--remove-button-mask-size) var(--remove-button-mask-size);
108
+ -webkit-mask-position: 0 0, right calc(0px - var(--remove-button-mask-offset)) top calc(0px - var(--remove-button-mask-offset));
109
+ -webkit-mask-repeat: no-repeat;
110
+ -webkit-mask-composite: source-out;
111
+ mask-image: linear-gradient(black, black), url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="12" fill="white"/></svg>');
112
+ mask-size: 100% 100%, var(--remove-button-mask-size) var(--remove-button-mask-size);
113
+ mask-position: 0 0, right calc(0px - var(--remove-button-mask-offset)) top calc(0px - var(--remove-button-mask-offset));
114
+ mask-repeat: no-repeat;
115
+ mask-composite: subtract;
116
+ transform: translateZ(0);
117
+ }
118
+ .seed-attachment-input-item__actionButton {
119
+ width: 100%;
120
+ height: 100%;
121
+ display: flex;
122
+ flex-direction: column;
123
+ align-items: center;
124
+ justify-content: center;
125
+ text-align: center;
126
+ border: none;
127
+ padding: 0;
128
+ font: inherit;
129
+ background: transparent;
130
+ cursor: pointer;
131
+ border-radius: inherit;
132
+ transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
133
+ outline: var(--seed-dimension-x0_5) solid transparent;
134
+ outline-offset: calc(var(--seed-dimension-x0_5) * -1);
135
+ }
136
+ .seed-attachment-input-item__actionButton:is(:focus-visible, [data-focus-visible]) {
137
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
138
+ outline-offset: calc(var(--seed-dimension-x0_5) * -1);
139
+ }
140
+ .seed-attachment-input-item__actionButton {
141
+ font-size: var(--seed-font-size-t2);
142
+ line-height: var(--seed-line-height-t2);
143
+ font-weight: var(--seed-font-weight-medium);
144
+ gap: var(--seed-dimension-x1);
145
+ --seed-icon-size: var(--seed-dimension-x6);
146
+ }
147
+ .seed-attachment-input-item__removeButton {
148
+ position: absolute;
149
+ top: calc(var(--seed-dimension-x1) * -1);
150
+ right: calc(var(--seed-dimension-x1) * -1);
151
+ width: var(--seed-dimension-x5);
152
+ height: var(--seed-dimension-x5);
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: center;
156
+ border: none;
157
+ padding: 0;
158
+ background-color: var(--seed-color-bg-layer-default);
159
+ border-radius: var(--seed-radius-full);
160
+ cursor: pointer;
161
+ transition: background-color 0.2s, outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
162
+ outline: var(--seed-dimension-x0_5) solid transparent;
163
+ outline-offset: calc(var(--seed-dimension-x0_5) * -1);
164
+ }
165
+ .seed-attachment-input-item__removeButton:is(:focus-visible, [data-focus-visible]) {
166
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
167
+ outline-offset: calc(var(--seed-dimension-x0_5) * -1);
168
+ }
169
+ .seed-attachment-input-item__removeButton {
170
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-weak);
171
+ --seed-icon-size: var(--seed-dimension-x2_5);
172
+ --seed-icon-color: var(--seed-color-fg-neutral);
173
+ }
174
+ @media (hover: hover) and (pointer: fine) {
175
+ .seed-attachment-input-item__removeButton:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover]) {
176
+ background-color: var(--seed-color-bg-layer-default-pressed);
177
+ }
178
+ }
179
+ @media not all and (hover: hover) and (pointer: fine) {
180
+ .seed-attachment-input-item__removeButton:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]) {
181
+ background-color: var(--seed-color-bg-layer-default-pressed);
182
+ }
183
+ }
184
+ .seed-attachment-input-item__removeButton:is(:disabled, [disabled], [data-disabled]) {
185
+ cursor: not-allowed;
186
+ --seed-icon-color: var(--seed-color-fg-disabled);
187
+ }
188
+ [aria-grabbed=true] .seed-attachment-input-item__removeButton {
189
+ display: none;
190
+ }
191
+ .seed-attachment-input-item__root--type_general {
192
+ width: 160px;
193
+ padding-left: var(--seed-dimension-x4);
194
+ padding-right: var(--seed-dimension-x4);
195
+ }
196
+ .seed-attachment-input-item__root--type_general::before {
197
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-weak);
198
+ }
199
+ .seed-attachment-input-item__thumbnail--type_general[data-has-overlay] {
200
+ display: none;
201
+ }
202
+ .seed-attachment-input-item__thumbnail--type_general:is([data-readonly]) {
203
+ --seed-icon-color: var(--seed-color-fg-disabled);
204
+ }
205
+ [aria-grabbed=true] .seed-attachment-input-item__thumbnail--type_general {
206
+ --seed-icon-color: var(--seed-color-fg-disabled);
207
+ }
208
+ .seed-attachment-input-item__metadata--type_general[data-has-overlay] {
209
+ display: none;
210
+ }
211
+ .seed-attachment-input-item__name--type_general:is([data-readonly]) {
212
+ color: var(--seed-color-fg-disabled);
213
+ }
214
+ [aria-grabbed=true] .seed-attachment-input-item__name--type_general {
215
+ color: var(--seed-color-fg-disabled);
216
+ }
217
+ .seed-attachment-input-item__size--type_general:is([data-readonly]) {
218
+ color: var(--seed-color-fg-disabled);
219
+ }
220
+ [aria-grabbed=true] .seed-attachment-input-item__size--type_general {
221
+ color: var(--seed-color-fg-disabled);
222
+ }
223
+ .seed-attachment-input-item__actionButton--type_general {
224
+ color: var(--seed-color-fg-neutral-subtle);
225
+ --seed-icon-color: var(--seed-color-fg-neutral-subtle);
226
+ }
227
+ .seed-attachment-input-item__root--type_image {
228
+ width: 80px;
229
+ transition: opacity 0.2s;
230
+ }
231
+ .seed-attachment-input-item__root--type_image::before {
232
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-subtle);
233
+ }
234
+ .seed-attachment-input-item__root--type_image:is([data-readonly]) {
235
+ opacity: 0.5;
236
+ }
237
+ .seed-attachment-input-item__root--type_image[aria-grabbed=true] {
238
+ opacity: 0.5;
239
+ }
240
+ .seed-attachment-input-item__thumbnail--type_image {
241
+ display: none;
242
+ }
243
+ .seed-attachment-input-item__metadata--type_image {
244
+ display: none;
245
+ }
246
+ .seed-attachment-input-item__badge--type_image {
247
+ position: absolute;
248
+ bottom: 0;
249
+ left: 0;
250
+ right: 0;
251
+ display: flex;
252
+ align-items: center;
253
+ justify-content: center;
254
+ height: var(--seed-dimension-x6);
255
+ padding-left: var(--seed-dimension-x1);
256
+ padding-right: var(--seed-dimension-x1);
257
+ background-color: var(--seed-color-bg-overlay);
258
+ border-radius: 0 0 var(--seed-radius-r3) var(--seed-radius-r3);
259
+ }
260
+ .seed-attachment-input-item__badgeLabel--type_image {
261
+ overflow: hidden;
262
+ text-overflow: ellipsis;
263
+ white-space: nowrap;
264
+ font-size: var(--seed-font-size-t2);
265
+ line-height: var(--seed-line-height-t2);
266
+ font-weight: var(--seed-font-weight-medium);
267
+ color: var(--seed-color-palette-static-white);
268
+ }
269
+ .seed-attachment-input-item__backdrop--type_image {
270
+ background: var(--seed-color-bg-overlay);
271
+ }
272
+ .seed-attachment-input-item__actionButton--type_image {
273
+ color: var(--seed-color-palette-static-white);
274
+ --seed-icon-color: var(--seed-color-palette-static-white);
275
+ }
@@ -0,0 +1,24 @@
1
+ declare interface AttachmentInputItemVariant {
2
+ /**
3
+ * @default "general"
4
+ */
5
+ type: "general" | "image";
6
+ }
7
+
8
+ declare type AttachmentInputItemVariantMap = {
9
+ [key in keyof AttachmentInputItemVariant]: Array<AttachmentInputItemVariant[key]>;
10
+ };
11
+
12
+ export declare type AttachmentInputItemVariantProps = Partial<AttachmentInputItemVariant>;
13
+
14
+ export declare type AttachmentInputItemSlotName = "root" | "image" | "thumbnail" | "metadata" | "name" | "size" | "badge" | "badgeLabel" | "backdrop" | "actionButton" | "removeButton";
15
+
16
+ export declare const attachmentInputItemVariantMap: AttachmentInputItemVariantMap;
17
+
18
+ export declare const attachmentInputItem: ((
19
+ props?: AttachmentInputItemVariantProps,
20
+ ) => Record<AttachmentInputItemSlotName, string>) & {
21
+ splitVariantProps: <T extends AttachmentInputItemVariantProps>(
22
+ props: T,
23
+ ) => [AttachmentInputItemVariantProps, Omit<T, keyof AttachmentInputItemVariantProps>];
24
+ }