@seed-design/css 1.2.16 → 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,48 @@
1
+ import './attachment-input-trigger.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const attachmentInputTriggerSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-attachment-input-trigger__root"
8
+ ],
9
+ [
10
+ "icon",
11
+ "seed-attachment-input-trigger__icon"
12
+ ],
13
+ [
14
+ "itemCountArea",
15
+ "seed-attachment-input-trigger__itemCountArea"
16
+ ],
17
+ [
18
+ "itemCount",
19
+ "seed-attachment-input-trigger__itemCount"
20
+ ],
21
+ [
22
+ "maxItemCount",
23
+ "seed-attachment-input-trigger__maxItemCount"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {};
28
+
29
+ const compoundVariants = [];
30
+
31
+ export const attachmentInputTriggerVariantMap = {};
32
+
33
+ export const attachmentInputTriggerVariantKeys = Object.keys(attachmentInputTriggerVariantMap);
34
+
35
+ export function attachmentInputTrigger(props) {
36
+ return Object.fromEntries(
37
+ attachmentInputTriggerSlotNames.map(([slot, className]) => {
38
+ return [
39
+ slot,
40
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
41
+ ];
42
+ }),
43
+ );
44
+ }
45
+
46
+ Object.assign(attachmentInputTrigger, { splitVariantProps: (props) => splitVariantProps(props, attachmentInputTriggerVariantMap) });
47
+
48
+ // @recipe(seed): attachment-input-trigger
@@ -0,0 +1,55 @@
1
+ .seed-attachment-input__root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--seed-dimension-x2);
5
+ margin-left: calc(var(--seed-attachment-input-extend-x) * -1);
6
+ margin-right: calc(var(--seed-attachment-input-extend-x) * -1);
7
+ }
8
+ .seed-attachment-input__dropzone {
9
+ display: flex;
10
+ flex-direction: column;
11
+ align-items: center;
12
+ justify-content: center;
13
+ height: 120px;
14
+ gap: var(--seed-dimension-x2);
15
+ border: 1px dashed var(--seed-color-palette-gray-500);
16
+ border-radius: var(--seed-radius-r3);
17
+ padding-left: var(--seed-dimension-x4);
18
+ padding-right: var(--seed-dimension-x4);
19
+ margin-left: var(--seed-attachment-input-extend-x);
20
+ margin-right: var(--seed-attachment-input-extend-x);
21
+ transition: border-color 0.2s;
22
+ }
23
+ .seed-attachment-input__dropzone[data-dragging-over] {
24
+ border-style: solid;
25
+ border-color: var(--seed-color-stroke-neutral-solid);
26
+ }
27
+ .seed-attachment-input__dropzone:is(:disabled, [disabled], [data-disabled]) {
28
+ cursor: not-allowed;
29
+ }
30
+ .seed-attachment-input__dropzoneLabel {
31
+ color: var(--seed-color-fg-neutral-subtle);
32
+ font-size: var(--seed-font-size-t4);
33
+ line-height: var(--seed-font-size-t4);
34
+ font-weight: var(--seed-font-weight-medium);
35
+ text-align: center;
36
+ }
37
+ .seed-attachment-input__dropzoneLabel:is(:disabled, [disabled], [data-disabled]) {
38
+ color: var(--seed-color-fg-disabled);
39
+ }
40
+ .seed-attachment-input__container {
41
+ display: flex;
42
+ gap: var(--seed-dimension-x2);
43
+ overflow-x: auto;
44
+ padding-top: var(--seed-dimension-x1);
45
+ margin-top: calc(var(--seed-dimension-x1) * -1);
46
+ padding-left: var(--seed-attachment-input-extend-x);
47
+ padding-right: var(--seed-attachment-input-extend-x);
48
+ }
49
+ .seed-attachment-input__itemGroup {
50
+ display: flex;
51
+ gap: var(--seed-dimension-x2);
52
+ list-style: none;
53
+ padding: 0;
54
+ margin: 0;
55
+ }
@@ -0,0 +1,21 @@
1
+ declare interface AttachmentInputVariant {
2
+
3
+ }
4
+
5
+ declare type AttachmentInputVariantMap = {
6
+ [key in keyof AttachmentInputVariant]: Array<AttachmentInputVariant[key]>;
7
+ };
8
+
9
+ export declare type AttachmentInputVariantProps = Partial<AttachmentInputVariant>;
10
+
11
+ export declare type AttachmentInputSlotName = "root" | "dropzone" | "dropzoneLabel" | "container" | "itemGroup";
12
+
13
+ export declare const attachmentInputVariantMap: AttachmentInputVariantMap;
14
+
15
+ export declare const attachmentInput: ((
16
+ props?: AttachmentInputVariantProps,
17
+ ) => Record<AttachmentInputSlotName, string>) & {
18
+ splitVariantProps: <T extends AttachmentInputVariantProps>(
19
+ props: T,
20
+ ) => [AttachmentInputVariantProps, Omit<T, keyof AttachmentInputVariantProps>];
21
+ }
@@ -0,0 +1,64 @@
1
+ @layer seed-components {
2
+ .seed-attachment-input__root {
3
+ gap: var(--seed-dimension-x2);
4
+ margin-left: calc(var(--seed-attachment-input-extend-x) * -1);
5
+ margin-right: calc(var(--seed-attachment-input-extend-x) * -1);
6
+ flex-direction: column;
7
+ display: flex;
8
+ }
9
+
10
+ .seed-attachment-input__dropzone {
11
+ justify-content: center;
12
+ align-items: center;
13
+ gap: var(--seed-dimension-x2);
14
+ border: 1px dashed var(--seed-color-palette-gray-500);
15
+ border-radius: var(--seed-radius-r3);
16
+ height: 120px;
17
+ padding-left: var(--seed-dimension-x4);
18
+ padding-right: var(--seed-dimension-x4);
19
+ margin-left: var(--seed-attachment-input-extend-x);
20
+ margin-right: var(--seed-attachment-input-extend-x);
21
+ flex-direction: column;
22
+ transition: border-color .2s;
23
+ display: flex;
24
+ }
25
+
26
+ .seed-attachment-input__dropzone[data-dragging-over] {
27
+ border-style: solid;
28
+ border-color: var(--seed-color-stroke-neutral-solid);
29
+ }
30
+
31
+ .seed-attachment-input__dropzone:is(:disabled, [disabled], [data-disabled]) {
32
+ cursor: not-allowed;
33
+ }
34
+
35
+ .seed-attachment-input__dropzoneLabel {
36
+ color: var(--seed-color-fg-neutral-subtle);
37
+ font-size: var(--seed-font-size-t4);
38
+ line-height: var(--seed-font-size-t4);
39
+ font-weight: var(--seed-font-weight-medium);
40
+ text-align: center;
41
+ }
42
+
43
+ .seed-attachment-input__dropzoneLabel:is(:disabled, [disabled], [data-disabled]) {
44
+ color: var(--seed-color-fg-disabled);
45
+ }
46
+
47
+ .seed-attachment-input__container {
48
+ gap: var(--seed-dimension-x2);
49
+ padding-top: var(--seed-dimension-x1);
50
+ margin-top: calc(var(--seed-dimension-x1) * -1);
51
+ padding-left: var(--seed-attachment-input-extend-x);
52
+ padding-right: var(--seed-attachment-input-extend-x);
53
+ display: flex;
54
+ overflow-x: auto;
55
+ }
56
+
57
+ .seed-attachment-input__itemGroup {
58
+ gap: var(--seed-dimension-x2);
59
+ margin: 0;
60
+ padding: 0;
61
+ list-style: none;
62
+ display: flex;
63
+ }
64
+ }
@@ -0,0 +1,48 @@
1
+ import './attachment-input.layered.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const attachmentInputSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-attachment-input__root"
8
+ ],
9
+ [
10
+ "dropzone",
11
+ "seed-attachment-input__dropzone"
12
+ ],
13
+ [
14
+ "dropzoneLabel",
15
+ "seed-attachment-input__dropzoneLabel"
16
+ ],
17
+ [
18
+ "container",
19
+ "seed-attachment-input__container"
20
+ ],
21
+ [
22
+ "itemGroup",
23
+ "seed-attachment-input__itemGroup"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {};
28
+
29
+ const compoundVariants = [];
30
+
31
+ export const attachmentInputVariantMap = {};
32
+
33
+ export const attachmentInputVariantKeys = Object.keys(attachmentInputVariantMap);
34
+
35
+ export function attachmentInput(props) {
36
+ return Object.fromEntries(
37
+ attachmentInputSlotNames.map(([slot, className]) => {
38
+ return [
39
+ slot,
40
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
41
+ ];
42
+ }),
43
+ );
44
+ }
45
+
46
+ Object.assign(attachmentInput, { splitVariantProps: (props) => splitVariantProps(props, attachmentInputVariantMap) });
47
+
48
+ // @recipe(seed): attachment-input
@@ -0,0 +1,48 @@
1
+ import './attachment-input.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const attachmentInputSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-attachment-input__root"
8
+ ],
9
+ [
10
+ "dropzone",
11
+ "seed-attachment-input__dropzone"
12
+ ],
13
+ [
14
+ "dropzoneLabel",
15
+ "seed-attachment-input__dropzoneLabel"
16
+ ],
17
+ [
18
+ "container",
19
+ "seed-attachment-input__container"
20
+ ],
21
+ [
22
+ "itemGroup",
23
+ "seed-attachment-input__itemGroup"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {};
28
+
29
+ const compoundVariants = [];
30
+
31
+ export const attachmentInputVariantMap = {};
32
+
33
+ export const attachmentInputVariantKeys = Object.keys(attachmentInputVariantMap);
34
+
35
+ export function attachmentInput(props) {
36
+ return Object.fromEntries(
37
+ attachmentInputSlotNames.map(([slot, className]) => {
38
+ return [
39
+ slot,
40
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
41
+ ];
42
+ }),
43
+ );
44
+ }
45
+
46
+ Object.assign(attachmentInput, { splitVariantProps: (props) => splitVariantProps(props, attachmentInputVariantMap) });
47
+
48
+ // @recipe(seed): attachment-input
@@ -1,5 +1,14 @@
1
1
  declare interface AvatarVariant {
2
2
  /**
3
+ * - `20`: 대표 사용처: 댓글을 남긴 사용자
4
+ * - `24`: 대표 사용처: 답글 프로필
5
+ * - `36`: 대표 사용처: 댓글 프로필
6
+ * - `42`: 대표 사용처: 게시글 상세 내 프로필
7
+ * - `48`: 대표 사용처: 작은 리스트
8
+ * - `56`: 대표 사용처: 큰 리스트
9
+ * - `64`: 대표 사용처: 프로필 상세, 캐러셀
10
+ * - `108`: 대표 사용처: 프로필 수정
11
+ *
3
12
  * @default 48
4
13
  */
5
14
  size: "20" | "24" | "36" | "42" | "48" | "56" | "64" | "80" | "96" | "108";
@@ -4,10 +4,20 @@ declare interface BadgeVariant {
4
4
  */
5
5
  size: "medium" | "large";
6
6
  /**
7
+ * - `weak`: 반복적인 구조를 가진 환경에서 사용합니다. 배경색이 있는 경우에는 권장하지 않습니다.
8
+ * - `solid`: 배경이 복잡하거나 이미지 위에 Badge가 겹치는 경우 사용합니다.
9
+ * - `outline`: 중간 정도의 주목도가 필요한 본문 또는 상세 화면에서 사용합니다.
10
+ *
7
11
  * @default "solid"
8
12
  */
9
13
  variant: "weak" | "solid" | "outline";
10
14
  /**
15
+ * - `neutral`: 상태가 특별히 없거나, 상태값이 명확하지 않은 초기 상태
16
+ * - `informative`: 베타 기능 안내, 사용자 권한 제한, 정보 기반 메시지
17
+ * - `positive`: 완료, 적용됨, 승인됨, 발행됨, 저장 성공, 검토 통과
18
+ * - `warning`: 만료 임박, 제출 누락, 필수 정보 부족 등 잠재적 문제 상태
19
+ * - `critical`: 검수 거절, 제재 상태, 편집 불가, 유효성 검증 실패
20
+ *
11
21
  * @default "neutral"
12
22
  */
13
23
  tone: "neutral" | "brand" | "informative" | "positive" | "warning" | "critical";
@@ -51,6 +51,9 @@
51
51
  .seed-bottom-sheet__content[data-delayed-snap-points='true'] {
52
52
  transform: translate3d(0, var(--snap-point-height, 0), 0);
53
53
  }
54
+ .seed-bottom-sheet__content:is(:focus, [data-focus]) {
55
+ outline: none;
56
+ }
54
57
  .seed-bottom-sheet__content::after {
55
58
  top: 100%;
56
59
  height: 200vh;
@@ -89,10 +92,30 @@
89
92
  .seed-bottom-sheet__body {
90
93
  display: flex;
91
94
  flex-direction: column;
92
- --seed-box-padding-x: var(--seed-dimension-spacing-x-global-gutter);
93
- --seed-box-height: initial;
94
- --seed-box-min-height: initial;
95
- --seed-box-max-height: initial;
95
+ --seed-box-padding-x-base: var(--seed-dimension-spacing-x-global-gutter);
96
+ --seed-box-padding-x-sm: var(--seed-box-padding-x-base);
97
+ --seed-box-padding-x-md: var(--seed-box-padding-x-sm);
98
+ --seed-box-padding-x-lg: var(--seed-box-padding-x-md);
99
+ --seed-box-padding-x-xl: var(--seed-box-padding-x-lg);
100
+ --seed-box-padding-x: var(--seed-box-padding-x-base);
101
+ --seed-box-height-base: initial;
102
+ --seed-box-height-sm: var(--seed-box-height-base);
103
+ --seed-box-height-md: var(--seed-box-height-sm);
104
+ --seed-box-height-lg: var(--seed-box-height-md);
105
+ --seed-box-height-xl: var(--seed-box-height-lg);
106
+ --seed-box-height: var(--seed-box-height-base);
107
+ --seed-box-min-height-base: initial;
108
+ --seed-box-min-height-sm: var(--seed-box-min-height-base);
109
+ --seed-box-min-height-md: var(--seed-box-min-height-sm);
110
+ --seed-box-min-height-lg: var(--seed-box-min-height-md);
111
+ --seed-box-min-height-xl: var(--seed-box-min-height-lg);
112
+ --seed-box-min-height: var(--seed-box-min-height-base);
113
+ --seed-box-max-height-base: initial;
114
+ --seed-box-max-height-sm: var(--seed-box-max-height-base);
115
+ --seed-box-max-height-md: var(--seed-box-max-height-sm);
116
+ --seed-box-max-height-lg: var(--seed-box-max-height-md);
117
+ --seed-box-max-height-xl: var(--seed-box-max-height-lg);
118
+ --seed-box-max-height: var(--seed-box-max-height-base);
96
119
  --seed-box-justify-content: initial;
97
120
  --seed-box-align-items: initial;
98
121
  padding-left: var(--seed-box-padding-x);
@@ -134,6 +157,7 @@
134
157
  right: calc((28px - 44px) / 2);
135
158
  bottom: calc((28px - 44px) / 2);
136
159
  left: calc((28px - 44px) / 2);
160
+ border-radius: var(--seed-radius-r1);
137
161
  outline: var(--seed-dimension-x0_5) solid transparent;
138
162
  outline-offset: calc(var(--seed-dimension-x0_5) * -1);
139
163
  transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
@@ -142,7 +166,6 @@
142
166
  outline: none;
143
167
  }
144
168
  .seed-bottom-sheet__closeButton:is(:focus-visible, [data-focus-visible]):after {
145
- border-radius: var(--seed-radius-r1);
146
169
  outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
147
170
  outline-offset: calc(var(--seed-dimension-x0_5) * -1);
148
171
  }
@@ -178,6 +201,7 @@
178
201
  animation-name: fade-out;
179
202
  animation-duration: var(--seed-duration-d4);
180
203
  animation-timing-function: var(--seed-timing-function-exit);
204
+ animation-fill-mode: forwards;
181
205
  }
182
206
  .seed-bottom-sheet__backdrop--skipAnimation_false:is([data-state="open"], [data-open])[data-snap-points='true'][data-should-overlay-animate='true']:not([data-animation-done='true']) {
183
207
  animation-name: fade-in;
@@ -197,9 +221,42 @@
197
221
  animation-name: drawer-slide-to-bottom;
198
222
  animation-duration: var(--seed-duration-d4);
199
223
  animation-timing-function: var(--seed-timing-function-exit);
224
+ animation-fill-mode: forwards;
200
225
  }
201
226
  .seed-bottom-sheet__content--skipAnimation_false:is([data-state="open"], [data-open])[data-delayed-snap-points='true']:not([data-animation-done='true']) {
202
227
  animation-name: drawer-slide-from-bottom;
203
228
  animation-duration: var(--seed-duration-d6);
204
229
  animation-timing-function: var(--seed-timing-function-enter-expressive);
230
+ }
231
+ @media (min-width: 480px) {
232
+ .seed-bottom-sheet__body {
233
+ --seed-box-padding-x: var(--seed-box-padding-x-sm);
234
+ --seed-box-height: var(--seed-box-height-sm);
235
+ --seed-box-min-height: var(--seed-box-min-height-sm);
236
+ --seed-box-max-height: var(--seed-box-max-height-sm);
237
+ }
238
+ }
239
+ @media (min-width: 768px) {
240
+ .seed-bottom-sheet__body {
241
+ --seed-box-padding-x: var(--seed-box-padding-x-md);
242
+ --seed-box-height: var(--seed-box-height-md);
243
+ --seed-box-min-height: var(--seed-box-min-height-md);
244
+ --seed-box-max-height: var(--seed-box-max-height-md);
245
+ }
246
+ }
247
+ @media (min-width: 1280px) {
248
+ .seed-bottom-sheet__body {
249
+ --seed-box-padding-x: var(--seed-box-padding-x-lg);
250
+ --seed-box-height: var(--seed-box-height-lg);
251
+ --seed-box-min-height: var(--seed-box-min-height-lg);
252
+ --seed-box-max-height: var(--seed-box-max-height-lg);
253
+ }
254
+ }
255
+ @media (min-width: 1440px) {
256
+ .seed-bottom-sheet__body {
257
+ --seed-box-padding-x: var(--seed-box-padding-x-xl);
258
+ --seed-box-height: var(--seed-box-height-xl);
259
+ --seed-box-min-height: var(--seed-box-min-height-xl);
260
+ --seed-box-max-height: var(--seed-box-max-height-xl);
261
+ }
205
262
  }
@@ -50,6 +50,10 @@
50
50
  transform: translate3d(0, var(--snap-point-height, 0), 0);
51
51
  }
52
52
 
53
+ .seed-bottom-sheet__content:is(:focus, [data-focus]) {
54
+ outline: none;
55
+ }
56
+
53
57
  .seed-bottom-sheet__content:after {
54
58
  content: "";
55
59
  background: inherit;
@@ -90,10 +94,30 @@
90
94
  }
91
95
 
92
96
  .seed-bottom-sheet__body {
93
- --seed-box-padding-x: var(--seed-dimension-spacing-x-global-gutter);
94
- --seed-box-height: initial;
95
- --seed-box-min-height: initial;
96
- --seed-box-max-height: initial;
97
+ --seed-box-padding-x-base: var(--seed-dimension-spacing-x-global-gutter);
98
+ --seed-box-padding-x-sm: var(--seed-box-padding-x-base);
99
+ --seed-box-padding-x-md: var(--seed-box-padding-x-sm);
100
+ --seed-box-padding-x-lg: var(--seed-box-padding-x-md);
101
+ --seed-box-padding-x-xl: var(--seed-box-padding-x-lg);
102
+ --seed-box-padding-x: var(--seed-box-padding-x-base);
103
+ --seed-box-height-base: initial;
104
+ --seed-box-height-sm: var(--seed-box-height-base);
105
+ --seed-box-height-md: var(--seed-box-height-sm);
106
+ --seed-box-height-lg: var(--seed-box-height-md);
107
+ --seed-box-height-xl: var(--seed-box-height-lg);
108
+ --seed-box-height: var(--seed-box-height-base);
109
+ --seed-box-min-height-base: initial;
110
+ --seed-box-min-height-sm: var(--seed-box-min-height-base);
111
+ --seed-box-min-height-md: var(--seed-box-min-height-sm);
112
+ --seed-box-min-height-lg: var(--seed-box-min-height-md);
113
+ --seed-box-min-height-xl: var(--seed-box-min-height-lg);
114
+ --seed-box-min-height: var(--seed-box-min-height-base);
115
+ --seed-box-max-height-base: initial;
116
+ --seed-box-max-height-sm: var(--seed-box-max-height-base);
117
+ --seed-box-max-height-md: var(--seed-box-max-height-sm);
118
+ --seed-box-max-height-lg: var(--seed-box-max-height-md);
119
+ --seed-box-max-height-xl: var(--seed-box-max-height-lg);
120
+ --seed-box-max-height: var(--seed-box-max-height-base);
97
121
  --seed-box-justify-content: initial;
98
122
  --seed-box-align-items: initial;
99
123
  padding-left: var(--seed-box-padding-x);
@@ -135,6 +159,7 @@
135
159
 
136
160
  .seed-bottom-sheet__closeButton:after {
137
161
  content: "";
162
+ border-radius: var(--seed-radius-r1);
138
163
  outline: var(--seed-dimension-x0_5) solid transparent;
139
164
  outline-offset: calc(var(--seed-dimension-x0_5) * -1);
140
165
  transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
@@ -147,7 +172,6 @@
147
172
  }
148
173
 
149
174
  .seed-bottom-sheet__closeButton:is(:focus-visible, [data-focus-visible]):after {
150
- border-radius: var(--seed-radius-r1);
151
175
  outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
152
176
  outline-offset: calc(var(--seed-dimension-x0_5) * -1);
153
177
  }
@@ -191,6 +215,7 @@
191
215
  animation-name: fade-out;
192
216
  animation-duration: var(--seed-duration-d4);
193
217
  animation-timing-function: var(--seed-timing-function-exit);
218
+ animation-fill-mode: forwards;
194
219
  }
195
220
 
196
221
  .seed-bottom-sheet__backdrop--skipAnimation_false:is([data-state="open"], [data-open])[data-snap-points="true"][data-should-overlay-animate="true"]:not([data-animation-done="true"]) {
@@ -214,6 +239,7 @@
214
239
  animation-name: drawer-slide-to-bottom;
215
240
  animation-duration: var(--seed-duration-d4);
216
241
  animation-timing-function: var(--seed-timing-function-exit);
242
+ animation-fill-mode: forwards;
217
243
  }
218
244
 
219
245
  .seed-bottom-sheet__content--skipAnimation_false:is([data-state="open"], [data-open])[data-delayed-snap-points="true"]:not([data-animation-done="true"]) {
@@ -221,4 +247,40 @@
221
247
  animation-duration: var(--seed-duration-d6);
222
248
  animation-timing-function: var(--seed-timing-function-enter-expressive);
223
249
  }
250
+
251
+ @media (width >= 480px) {
252
+ .seed-bottom-sheet__body {
253
+ --seed-box-padding-x: var(--seed-box-padding-x-sm);
254
+ --seed-box-height: var(--seed-box-height-sm);
255
+ --seed-box-min-height: var(--seed-box-min-height-sm);
256
+ --seed-box-max-height: var(--seed-box-max-height-sm);
257
+ }
258
+ }
259
+
260
+ @media (width >= 768px) {
261
+ .seed-bottom-sheet__body {
262
+ --seed-box-padding-x: var(--seed-box-padding-x-md);
263
+ --seed-box-height: var(--seed-box-height-md);
264
+ --seed-box-min-height: var(--seed-box-min-height-md);
265
+ --seed-box-max-height: var(--seed-box-max-height-md);
266
+ }
267
+ }
268
+
269
+ @media (width >= 1280px) {
270
+ .seed-bottom-sheet__body {
271
+ --seed-box-padding-x: var(--seed-box-padding-x-lg);
272
+ --seed-box-height: var(--seed-box-height-lg);
273
+ --seed-box-min-height: var(--seed-box-min-height-lg);
274
+ --seed-box-max-height: var(--seed-box-max-height-lg);
275
+ }
276
+ }
277
+
278
+ @media (width >= 1440px) {
279
+ .seed-bottom-sheet__body {
280
+ --seed-box-padding-x: var(--seed-box-padding-x-xl);
281
+ --seed-box-height: var(--seed-box-height-xl);
282
+ --seed-box-min-height: var(--seed-box-min-height-xl);
283
+ --seed-box-max-height: var(--seed-box-max-height-xl);
284
+ }
285
+ }
224
286
  }
@@ -1,5 +1,12 @@
1
1
  declare interface CalloutVariant {
2
2
  /**
3
+ * - `neutral`: 일반적인 정보를 전달합니다.
4
+ * - `informative`: 유용한 정보를 제공합니다.
5
+ * - `positive`: 긍정적인 상태를 나타냅니다.
6
+ * - `warning`: 주의가 필요한 상태를 나타냅니다.
7
+ * - `critical`: 중요한 문제를 나타냅니다.
8
+ * - `magic`: AI 기능을 나타냅니다.
9
+ *
3
10
  * @default "neutral"
4
11
  */
5
12
  tone: "neutral" | "informative" | "positive" | "warning" | "critical" | "magic";
@@ -1,5 +1,8 @@
1
1
  declare interface CheckmarkVariant {
2
2
  /**
3
+ * - `square`: 필수 선택 항목이고 사용자가 해당 내용을 인지해야 하는 경우 사용합니다.
4
+ * - `ghost`: 필수 선택 항목이 아니고, 3개 이하 항목으로 구성되는 경우 사용하는 것을 권장합니다.
5
+ *
3
6
  * @default "square"
4
7
  */
5
8
  variant: "square" | "ghost";
@@ -46,8 +46,6 @@
46
46
  white-space: nowrap;
47
47
  font-family: inherit;
48
48
  border-radius: var(--seed-radius-full);
49
- padding-top: var(--seed-dimension-x2);
50
- padding-bottom: var(--seed-dimension-x2);
51
49
  font-weight: var(--seed-font-weight-medium);
52
50
  transition: background-color var(--seed-duration-color-transition) var(--seed-timing-function-easing), outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
53
51
  outline: var(--seed-dimension-x0_5) solid transparent;
@@ -62,18 +60,20 @@
62
60
  }
63
61
  .seed-chip-tabs__trigger--size_medium {
64
62
  min-height: 36px;
63
+ min-width: var(--seed-dimension-x12);
65
64
  font-size: var(--seed-font-size-t4);
66
- padding-left: var(--seed-dimension-x3_5);
67
- padding-right: var(--seed-dimension-x3_5);
65
+ padding-left: calc(var(--seed-dimension-x2) + var(--seed-dimension-x1_5));
66
+ padding-right: calc(var(--seed-dimension-x2) + var(--seed-dimension-x1_5));
68
67
  }
69
68
  .seed-chip-tabs__list--size_large {
70
69
  gap: 8px;
71
70
  }
72
71
  .seed-chip-tabs__trigger--size_large {
73
72
  min-height: 40px;
73
+ min-width: var(--seed-dimension-x13);
74
74
  font-size: var(--seed-font-size-t4);
75
- padding-left: var(--seed-dimension-x4);
76
- padding-right: var(--seed-dimension-x4);
75
+ padding-left: calc(var(--seed-dimension-x2_5) + var(--seed-dimension-x1_5));
76
+ padding-right: calc(var(--seed-dimension-x2_5) + var(--seed-dimension-x1_5));
77
77
  }
78
78
  .seed-chip-tabs__trigger--variant_neutralSolid {
79
79
  background-color: var(--seed-color-bg-neutral-weak-alpha);
@@ -105,11 +105,7 @@
105
105
  }
106
106
  .seed-chip-tabs__trigger--variant_neutralSolid:is(:disabled, [disabled], [data-disabled]) {
107
107
  cursor: not-allowed;
108
- color: var(--seed-color-fg-disabled);
109
- }
110
- .seed-chip-tabs__trigger--variant_neutralSolid:is(:disabled, [disabled], [data-disabled]):is([aria-selected=true], [data-selected]) {
111
- background-color: var(--seed-color-bg-disabled);
112
- color: var(--seed-color-fg-disabled);
108
+ opacity: 0.5;
113
109
  }
114
110
  .seed-chip-tabs__trigger--variant_neutralOutline {
115
111
  background-color: var(--seed-color-bg-transparent);
@@ -143,47 +139,7 @@
143
139
  }
144
140
  .seed-chip-tabs__trigger--variant_neutralOutline:is(:disabled, [disabled], [data-disabled]) {
145
141
  cursor: not-allowed;
146
- color: var(--seed-color-fg-disabled);
147
- }
148
- .seed-chip-tabs__trigger--variant_neutralOutline:is(:disabled, [disabled], [data-disabled]):is([aria-selected=true], [data-selected]) {
149
- background-color: var(--seed-color-bg-disabled);
150
- color: var(--seed-color-fg-disabled);
151
- }
152
- .seed-chip-tabs__trigger--variant_brandSolid {
153
- background-color: var(--seed-color-bg-neutral-weak);
154
- color: var(--seed-color-fg-neutral-muted);
155
- }
156
- .seed-chip-tabs__trigger--variant_brandSolid:is([aria-selected=true], [data-selected]) {
157
- background-color: var(--seed-color-bg-brand-solid);
158
- color: var(--seed-color-palette-static-white);
159
- }
160
- @media (hover: hover) and (pointer: fine) {
161
- .seed-chip-tabs__trigger--variant_brandSolid:is(:hover, [data-hover]) {
162
- background-color: var(--seed-color-bg-neutral-weak-pressed);
163
- }
164
- }
165
- @media not all and (hover: hover) and (pointer: fine) {
166
- .seed-chip-tabs__trigger--variant_brandSolid:is(:active, [data-active]) {
167
- background-color: var(--seed-color-bg-neutral-weak-pressed);
168
- }
169
- }
170
- @media (hover: hover) and (pointer: fine) {
171
- .seed-chip-tabs__trigger--variant_brandSolid:is([aria-selected=true], [data-selected]):is(:hover, [data-hover]) {
172
- background-color: var(--seed-color-bg-brand-solid-pressed);
173
- }
174
- }
175
- @media not all and (hover: hover) and (pointer: fine) {
176
- .seed-chip-tabs__trigger--variant_brandSolid:is([aria-selected=true], [data-selected]):is(:active, [data-active]) {
177
- background-color: var(--seed-color-bg-brand-solid-pressed);
178
- }
179
- }
180
- .seed-chip-tabs__trigger--variant_brandSolid:is(:disabled, [disabled], [data-disabled]) {
181
- cursor: not-allowed;
182
- background-color: var(--seed-color-bg-disabled);
183
- color: var(--seed-color-fg-disabled);
184
- }
185
- .seed-chip-tabs__trigger--variant_brandSolid:is(:disabled, [disabled], [data-disabled]):is([aria-selected=true], [data-selected]) {
186
- background-color: var(--seed-color-bg-disabled);
142
+ opacity: 0.5;
187
143
  }
188
144
  .seed-chip-tabs__root--contentLayout_fill {
189
145
  display: flex;
@@ -6,7 +6,7 @@ declare interface ChipTabsVariant {
6
6
  /**
7
7
  * @default "neutralSolid"
8
8
  */
9
- variant: "neutralSolid" | "neutralOutline" | "brandSolid";
9
+ variant: "neutralSolid" | "neutralOutline";
10
10
  /**
11
11
  * @default "hug"
12
12
  */