@seed-design/css 2.8.3 → 2.9.1

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 (40) hide show
  1. package/all.css +58 -26
  2. package/all.layered.css +58 -26
  3. package/base.css +6 -0
  4. package/base.layered.css +6 -0
  5. package/package.json +1 -1
  6. package/recipes/app-bar-main.css +2 -1
  7. package/recipes/app-bar-main.layered.css +2 -1
  8. package/recipes/app-bar.css +5 -3
  9. package/recipes/app-bar.layered.css +5 -3
  10. package/recipes/app-screen.css +5 -1
  11. package/recipes/app-screen.layered.css +6 -6
  12. package/recipes/bottom-sheet.css +4 -0
  13. package/recipes/bottom-sheet.layered.css +5 -1
  14. package/recipes/content-dialog.css +10 -6
  15. package/recipes/content-dialog.layered.css +10 -6
  16. package/recipes/dialog.css +6 -0
  17. package/recipes/dialog.layered.css +6 -0
  18. package/recipes/menu-sheet.css +5 -0
  19. package/recipes/menu-sheet.layered.css +5 -0
  20. package/recipes/side-panel.css +10 -6
  21. package/recipes/side-panel.layered.css +10 -6
  22. package/recipes/snackbar-region.css +3 -3
  23. package/recipes/snackbar-region.layered.css +3 -3
  24. package/vars/component/alert-dialog.d.ts +2 -0
  25. package/vars/component/bottom-sheet.d.ts +3 -0
  26. package/vars/component/bottom-sheet.mjs +1 -0
  27. package/vars/component/dialog.d.ts +6 -2
  28. package/vars/component/help-bubble.d.ts +2 -1
  29. package/vars/component/menu-sheet.d.ts +5 -0
  30. package/vars/component/menu-sheet.mjs +1 -0
  31. package/vars/component/menu.d.ts +2 -1
  32. package/vars/component/select.d.ts +2 -1
  33. package/vars/component/side-panel.d.ts +10 -7
  34. package/vars/component/snackbar.d.ts +1 -0
  35. package/vars/component/top-navigation.d.ts +1 -4
  36. package/vars/component/top-navigation.mjs +1 -4
  37. package/all.layered.min.css +0 -1
  38. package/all.min.css +0 -1
  39. package/base.layered.min.css +0 -1
  40. package/base.min.css +0 -1
@@ -54,8 +54,9 @@
54
54
  }
55
55
 
56
56
  .seed-app-bar__root--theme_cupertino {
57
- height: calc(44px + var(--seed-safe-area-top));
58
- padding-inline: var(--seed-dimension-x4);
57
+ height: calc(56px + var(--seed-safe-area-top));
58
+ padding-left: calc(var(--seed-dimension-x4) + var(--seed-safe-area-left));
59
+ padding-right: calc(var(--seed-dimension-x4) + var(--seed-safe-area-right));
59
60
  padding-top: var(--seed-safe-area-top);
60
61
  }
61
62
 
@@ -79,7 +80,8 @@
79
80
 
80
81
  .seed-app-bar__root--theme_android {
81
82
  height: calc(56px + var(--seed-safe-area-top));
82
- padding-inline: var(--seed-dimension-x4);
83
+ padding-left: calc(var(--seed-dimension-x4) + var(--seed-safe-area-left));
84
+ padding-right: calc(var(--seed-dimension-x4) + var(--seed-safe-area-right));
83
85
  padding-top: var(--seed-safe-area-top);
84
86
  }
85
87
 
@@ -20,6 +20,8 @@
20
20
  width: 100%;
21
21
  height: 100%;
22
22
  inset-inline: 0;
23
+ padding-left: var(--seed-safe-area-left);
24
+ padding-right: var(--seed-safe-area-right);
23
25
  overflow-y: scroll;
24
26
  -webkit-overflow-scrolling: touch;
25
27
  }
@@ -40,7 +42,7 @@
40
42
  inset-inline: 0;
41
43
  }
42
44
  .seed-app-screen__root--theme_cupertino {
43
- --app-bar-height: 44px;
45
+ --app-bar-height: 56px;
44
46
  }
45
47
  .seed-app-screen__root--theme_android {
46
48
  --app-bar-height: 56px;
@@ -99,6 +101,8 @@
99
101
  inset-inline: 0;
100
102
  top: 0;
101
103
  margin-bottom: calc(-1 * (66px + 400px + var(--seed-safe-area-top)));
104
+ margin-left: calc(-1 * var(--seed-safe-area-left));
105
+ margin-right: calc(-1 * var(--seed-safe-area-right));
102
106
  height: calc(66px + 400px + var(--seed-safe-area-top));
103
107
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.35) 400px, rgba(0, 0, 0, 0.00) 100%);
104
108
  pointer-events: none;
@@ -19,9 +19,11 @@
19
19
  .seed-app-screen__layer {
20
20
  z-index: var(--z-index-layer);
21
21
  box-sizing: border-box;
22
- -webkit-overflow-scrolling: touch;
23
22
  width: 100%;
24
23
  height: 100%;
24
+ padding-left: var(--seed-safe-area-left);
25
+ padding-right: var(--seed-safe-area-right);
26
+ -webkit-overflow-scrolling: touch;
25
27
  position: absolute;
26
28
  inset-inline: 0;
27
29
  overflow-y: scroll;
@@ -47,11 +49,7 @@
47
49
  inset-inline: 0;
48
50
  }
49
51
 
50
- .seed-app-screen__root--theme_cupertino {
51
- --app-bar-height: 44px;
52
- }
53
-
54
- .seed-app-screen__root--theme_android {
52
+ .seed-app-screen__root--theme_cupertino, .seed-app-screen__root--theme_android {
55
53
  --app-bar-height: 56px;
56
54
  }
57
55
 
@@ -118,6 +116,8 @@
118
116
  content: "";
119
117
  inset-inline: 0;
120
118
  margin-bottom: calc(-1 * (66px + 400px + var(--seed-safe-area-top)));
119
+ margin-left: calc(-1 * var(--seed-safe-area-left));
120
+ margin-right: calc(-1 * var(--seed-safe-area-right));
121
121
  height: calc(66px + 400px + var(--seed-safe-area-top));
122
122
  pointer-events: none;
123
123
  z-index: 1;
@@ -5,6 +5,8 @@
5
5
  align-items: flex-end;
6
6
  inset: 0;
7
7
  overscroll-behavior-y: none;
8
+ padding-left: var(--seed-safe-area-left);
9
+ padding-right: var(--seed-safe-area-right);
8
10
  --sheet-z-index: 2;
9
11
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
10
12
  }
@@ -33,6 +35,7 @@
33
35
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
34
36
  background: var(--seed-color-bg-layer-floating);
35
37
  max-width: 480px;
38
+ max-height: min(0.9 * 100%, 100% - var(--seed-safe-area-top));
36
39
  border-top-left-radius: var(--seed-radius-r6);
37
40
  border-top-right-radius: var(--seed-radius-r6);
38
41
  padding-bottom: var(--seed-safe-area-bottom);
@@ -85,6 +88,7 @@
85
88
  .seed-bottom-sheet__body {
86
89
  display: flex;
87
90
  flex-direction: column;
91
+ overflow-y: auto;
88
92
  --seed-box-padding-x-base: var(--seed-dimension-spacing-x-global-gutter);
89
93
  --seed-box-padding-x-sm: var(--seed-box-padding-x-base, initial);
90
94
  --seed-box-padding-x-md: var(--seed-box-padding-x-sm, initial);
@@ -1,6 +1,8 @@
1
1
  @layer seed-components {
2
2
  .seed-bottom-sheet__positioner {
3
3
  overscroll-behavior-y: none;
4
+ padding-left: var(--seed-safe-area-left);
5
+ padding-right: var(--seed-safe-area-right);
4
6
  --sheet-z-index: 2;
5
7
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
6
8
  justify-content: center;
@@ -30,9 +32,10 @@
30
32
  word-break: break-all;
31
33
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
32
34
  background: var(--seed-color-bg-layer-floating);
35
+ max-width: 480px;
36
+ max-height: min(.9 * 100%, 100% - var(--seed-safe-area-top));
33
37
  border-top-left-radius: var(--seed-radius-r6);
34
38
  border-top-right-radius: var(--seed-radius-r6);
35
- max-width: 480px;
36
39
  padding-bottom: var(--seed-safe-area-bottom);
37
40
  touch-action: none;
38
41
  will-change: transform;
@@ -127,6 +130,7 @@
127
130
  align-items: var(--seed-box-align-items);
128
131
  flex-direction: column;
129
132
  display: flex;
133
+ overflow-y: auto;
130
134
  }
131
135
 
132
136
  .seed-bottom-sheet__footer {
@@ -5,6 +5,10 @@
5
5
  align-items: center;
6
6
  inset: 0;
7
7
  overscroll-behavior-y: none;
8
+ padding-top: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
9
+ padding-right: var(--seed-safe-area-right);
10
+ padding-bottom: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
11
+ padding-left: var(--seed-safe-area-left);
8
12
  --dialog-z-index: 2;
9
13
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
10
14
  }
@@ -44,7 +48,7 @@
44
48
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
45
49
  background: var(--seed-color-bg-layer-floating);
46
50
  border-radius: var(--seed-radius-r5);
47
- --content-dialog-default-width: calc(0.9 * 100vw);
51
+ --content-dialog-default-width: calc(0.9 * (100vw - var(--seed-safe-area-left) - var(--seed-safe-area-right)));
48
52
  --content-dialog-default-max-width: calc(0.9 * 100%);
49
53
  --seed-box-width-base: var(--content-dialog-default-width);
50
54
  --seed-box-width-sm: var(--seed-box-width-base, initial);
@@ -58,15 +62,15 @@
58
62
  --seed-box-max-width-lg: var(--seed-box-max-width-md, initial);
59
63
  --seed-box-max-width-xl: var(--seed-box-max-width-lg, initial);
60
64
  --seed-box-max-width: var(--seed-box-max-width-base, initial);
61
- width: var(--seed-box-width);
62
- max-width: var(--seed-box-max-width);
63
- max-height: calc(0.8 * 100vh);
64
- max-height: calc(0.8 * 100dvh);
65
+ width: min(var(--seed-box-width), 100%);
66
+ max-width: min(var(--seed-box-max-width), 100%);
67
+ max-height: min(0.8 * 100vh, 100%);
68
+ max-height: min(0.8 * 100dvh, 100%);
65
69
  }
66
70
  @media (min-width: 768px) {
67
71
  .seed-content-dialog__content {
68
72
  --content-dialog-default-width: var(--content-dialog-size-width);
69
- --content-dialog-default-max-width: calc(100vw - 2 * var(--seed-dimension-x5));
73
+ --content-dialog-default-max-width: calc(100vw - 2 * var(--seed-dimension-x5) - var(--seed-safe-area-left) - var(--seed-safe-area-right));
70
74
  }
71
75
  }
72
76
  .seed-content-dialog__content:is([data-state="open"], [data-open]) {
@@ -1,6 +1,10 @@
1
1
  @layer seed-components {
2
2
  .seed-content-dialog__positioner {
3
3
  overscroll-behavior-y: none;
4
+ padding-top: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
5
+ padding-right: var(--seed-safe-area-right);
6
+ padding-bottom: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
7
+ padding-left: var(--seed-safe-area-left);
4
8
  --dialog-z-index: 2;
5
9
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
6
10
  justify-content: center;
@@ -44,7 +48,7 @@
44
48
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
45
49
  background: var(--seed-color-bg-layer-floating);
46
50
  border-radius: var(--seed-radius-r5);
47
- --content-dialog-default-width: calc(.9 * 100vw);
51
+ --content-dialog-default-width: calc(.9 * (100vw - var(--seed-safe-area-left) - var(--seed-safe-area-right)));
48
52
  --content-dialog-default-max-width: calc(.9 * 100%);
49
53
  --seed-box-width-base: var(--content-dialog-default-width);
50
54
  --seed-box-width-sm: var(--seed-box-width-base, initial);
@@ -58,13 +62,13 @@
58
62
  --seed-box-max-width-lg: var(--seed-box-max-width-md, initial);
59
63
  --seed-box-max-width-xl: var(--seed-box-max-width-lg, initial);
60
64
  --seed-box-max-width: var(--seed-box-max-width-base, initial);
61
- width: var(--seed-box-width);
62
- max-width: var(--seed-box-max-width);
63
- max-height: 80vh;
65
+ width: min(var(--seed-box-width), 100%);
66
+ max-width: min(var(--seed-box-max-width), 100%);
67
+ max-height: min(80vh, 100%);
64
68
  outline: none;
65
69
  flex-direction: column;
66
70
  flex: none;
67
- max-height: 80dvh;
71
+ max-height: min(80dvh, 100%);
68
72
  display: flex;
69
73
  position: relative;
70
74
  }
@@ -72,7 +76,7 @@
72
76
  @media (min-width: 768px) {
73
77
  .seed-content-dialog__content {
74
78
  --content-dialog-default-width: var(--content-dialog-size-width);
75
- --content-dialog-default-max-width: calc(100vw - 2 * var(--seed-dimension-x5));
79
+ --content-dialog-default-max-width: calc(100vw - 2 * var(--seed-dimension-x5) - var(--seed-safe-area-left) - var(--seed-safe-area-right));
76
80
  }
77
81
  }
78
82
 
@@ -5,6 +5,10 @@
5
5
  align-items: center;
6
6
  inset: 0;
7
7
  overscroll-behavior-y: none;
8
+ padding-top: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
9
+ padding-right: var(--seed-safe-area-right);
10
+ padding-bottom: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
11
+ padding-left: var(--seed-safe-area-left);
8
12
  --dialog-z-index: 2;
9
13
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
10
14
  }
@@ -25,6 +29,8 @@
25
29
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
26
30
  background: var(--seed-color-bg-layer-floating);
27
31
  max-width: 272px;
32
+ max-height: 100%;
33
+ overflow-y: auto;
28
34
  margin: auto var(--seed-dimension-x8);
29
35
  border-radius: var(--seed-radius-r5);
30
36
  }
@@ -1,6 +1,10 @@
1
1
  @layer seed-components {
2
2
  .seed-dialog__positioner {
3
3
  overscroll-behavior-y: none;
4
+ padding-top: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
5
+ padding-right: var(--seed-safe-area-right);
6
+ padding-bottom: max(var(--seed-safe-area-top), var(--seed-safe-area-bottom));
7
+ padding-left: var(--seed-safe-area-left);
4
8
  --dialog-z-index: 2;
5
9
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
6
10
  justify-content: center;
@@ -23,6 +27,7 @@
23
27
  z-index: calc(var(--dialog-z-index) + var(--layer-index, 0));
24
28
  background: var(--seed-color-bg-layer-floating);
25
29
  max-width: 272px;
30
+ max-height: 100%;
26
31
  margin: auto var(--seed-dimension-x8);
27
32
  border-radius: var(--seed-radius-r5);
28
33
  outline: none;
@@ -30,6 +35,7 @@
30
35
  flex: 1;
31
36
  display: flex;
32
37
  position: relative;
38
+ overflow-y: auto;
33
39
  }
34
40
 
35
41
  .seed-dialog__content:is(:focus, [data-focus]) {
@@ -5,6 +5,8 @@
5
5
  align-items: flex-end;
6
6
  inset: 0;
7
7
  overscroll-behavior-y: none;
8
+ padding-left: var(--seed-safe-area-left);
9
+ padding-right: var(--seed-safe-area-right);
8
10
  --sheet-z-index: 2;
9
11
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
10
12
  }
@@ -25,6 +27,7 @@
25
27
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
26
28
  background: var(--seed-color-bg-layer-floating);
27
29
  max-width: 480px;
30
+ max-height: min(0.9 * 100%, 100% - var(--seed-safe-area-top));
28
31
  padding-inline: var(--seed-dimension-spacing-x-global-gutter);
29
32
  padding-top: var(--menu-sheet-header-padding-top, var(--seed-dimension-x4));
30
33
  padding-bottom: calc(var(--seed-dimension-x4) + var(--seed-safe-area-bottom));
@@ -74,6 +77,7 @@
74
77
  display: flex;
75
78
  flex-direction: column;
76
79
  align-items: stretch;
80
+ overflow-y: auto;
77
81
  gap: var(--seed-dimension-x2_5);
78
82
  }
79
83
  .seed-menu-sheet__group {
@@ -81,6 +85,7 @@
81
85
  flex-direction: column;
82
86
  align-items: stretch;
83
87
  overflow: hidden;
88
+ flex-shrink: 0;
84
89
  border-radius: var(--seed-radius-r4);
85
90
  }
86
91
  .seed-menu-sheet__footer {
@@ -1,6 +1,8 @@
1
1
  @layer seed-components {
2
2
  .seed-menu-sheet__positioner {
3
3
  overscroll-behavior-y: none;
4
+ padding-left: var(--seed-safe-area-left);
5
+ padding-right: var(--seed-safe-area-right);
4
6
  --sheet-z-index: 2;
5
7
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
6
8
  justify-content: center;
@@ -23,6 +25,7 @@
23
25
  z-index: calc(var(--sheet-z-index) + var(--layer-index, 0));
24
26
  background: var(--seed-color-bg-layer-floating);
25
27
  max-width: 480px;
28
+ max-height: min(.9 * 100%, 100% - var(--seed-safe-area-top));
26
29
  padding-inline: var(--seed-dimension-spacing-x-global-gutter);
27
30
  padding-top: var(--menu-sheet-header-padding-top, var(--seed-dimension-x4));
28
31
  padding-bottom: calc(var(--seed-dimension-x4) + var(--seed-safe-area-bottom));
@@ -85,11 +88,13 @@
85
88
  gap: var(--seed-dimension-x2_5);
86
89
  flex-direction: column;
87
90
  display: flex;
91
+ overflow-y: auto;
88
92
  }
89
93
 
90
94
  .seed-menu-sheet__group {
91
95
  border-radius: var(--seed-radius-r4);
92
96
  flex-direction: column;
97
+ flex-shrink: 0;
93
98
  align-items: stretch;
94
99
  display: flex;
95
100
  overflow: hidden;
@@ -40,22 +40,20 @@
40
40
  background: var(--seed-color-bg-layer-floating);
41
41
  touch-action: none;
42
42
  will-change: transform;
43
- --side-panel-default-width: calc(0.8 * 100vw);
43
+ --side-panel-default-width: calc(0.8 * (100vw - var(--seed-safe-area-left) - var(--seed-safe-area-right)));
44
44
  --seed-box-width-base: var(--side-panel-default-width);
45
45
  --seed-box-width-sm: var(--seed-box-width-base, initial);
46
46
  --seed-box-width-md: var(--seed-box-width-sm, initial);
47
47
  --seed-box-width-lg: var(--seed-box-width-md, initial);
48
48
  --seed-box-width-xl: var(--seed-box-width-lg, initial);
49
49
  --seed-box-width: var(--seed-box-width-base, initial);
50
- --seed-box-max-width-base: calc(0.8 * 100%);
50
+ --seed-box-max-width-base: calc(0.8 * (100% - var(--seed-safe-area-left) - var(--seed-safe-area-right)));
51
51
  --seed-box-max-width-sm: var(--seed-box-max-width-base, initial);
52
52
  --seed-box-max-width-md: var(--seed-box-max-width-sm, initial);
53
53
  --seed-box-max-width-lg: var(--seed-box-max-width-md, initial);
54
54
  --seed-box-max-width-xl: var(--seed-box-max-width-lg, initial);
55
55
  --seed-box-max-width: var(--seed-box-max-width-base, initial);
56
56
  inset-block: 0;
57
- width: var(--seed-box-width);
58
- max-width: var(--seed-box-max-width);
59
57
  padding-bottom: var(--seed-safe-area-bottom);
60
58
  }
61
59
  @media (min-width: 768px) {
@@ -76,14 +74,20 @@
76
74
  }
77
75
  .seed-side-panel__content[data-drawer-direction='left'] {
78
76
  left: 0;
79
- padding-left: env(safe-area-inset-left, 0);
77
+ width: calc(var(--seed-box-width) + var(--seed-safe-area-left));
78
+ max-width: calc(var(--seed-box-max-width) + var(--seed-safe-area-left));
79
+ padding-left: var(--seed-safe-area-left);
80
+ padding-right: max(0px, var(--seed-safe-area-right) - (100% - var(--seed-safe-area-left) - min(var(--seed-box-width), var(--seed-box-max-width))));
80
81
  }
81
82
  .seed-side-panel__content[data-drawer-direction='left']::after {
82
83
  right: 100%;
83
84
  }
84
85
  .seed-side-panel__content[data-drawer-direction='right'] {
85
86
  right: 0;
86
- padding-right: env(safe-area-inset-right, 0);
87
+ width: calc(var(--seed-box-width) + var(--seed-safe-area-right));
88
+ max-width: calc(var(--seed-box-max-width) + var(--seed-safe-area-right));
89
+ padding-right: var(--seed-safe-area-right);
90
+ padding-left: max(0px, var(--seed-safe-area-left) - (100% - var(--seed-safe-area-right) - min(var(--seed-box-width), var(--seed-box-max-width))));
87
91
  }
88
92
  .seed-side-panel__content[data-drawer-direction='right']::after {
89
93
  left: 100%;
@@ -42,21 +42,19 @@
42
42
  background: var(--seed-color-bg-layer-floating);
43
43
  touch-action: none;
44
44
  will-change: transform;
45
- --side-panel-default-width: calc(.8 * 100vw);
45
+ --side-panel-default-width: calc(.8 * (100vw - var(--seed-safe-area-left) - var(--seed-safe-area-right)));
46
46
  --seed-box-width-base: var(--side-panel-default-width);
47
47
  --seed-box-width-sm: var(--seed-box-width-base, initial);
48
48
  --seed-box-width-md: var(--seed-box-width-sm, initial);
49
49
  --seed-box-width-lg: var(--seed-box-width-md, initial);
50
50
  --seed-box-width-xl: var(--seed-box-width-lg, initial);
51
51
  --seed-box-width: var(--seed-box-width-base, initial);
52
- --seed-box-max-width-base: calc(.8 * 100%);
52
+ --seed-box-max-width-base: calc(.8 * (100% - var(--seed-safe-area-left) - var(--seed-safe-area-right)));
53
53
  --seed-box-max-width-sm: var(--seed-box-max-width-base, initial);
54
54
  --seed-box-max-width-md: var(--seed-box-max-width-sm, initial);
55
55
  --seed-box-max-width-lg: var(--seed-box-max-width-md, initial);
56
56
  --seed-box-max-width-xl: var(--seed-box-max-width-lg, initial);
57
57
  --seed-box-max-width: var(--seed-box-max-width-base, initial);
58
- width: var(--seed-box-width);
59
- max-width: var(--seed-box-max-width);
60
58
  padding-bottom: var(--seed-safe-area-bottom);
61
59
  flex-direction: column;
62
60
  display: flex;
@@ -84,7 +82,10 @@
84
82
  }
85
83
 
86
84
  .seed-side-panel__content[data-drawer-direction="left"] {
87
- padding-left: env(safe-area-inset-left, 0);
85
+ width: calc(var(--seed-box-width) + var(--seed-safe-area-left));
86
+ max-width: calc(var(--seed-box-max-width) + var(--seed-safe-area-left));
87
+ padding-left: var(--seed-safe-area-left);
88
+ padding-right: max(0px, var(--seed-safe-area-right) - (100% - var(--seed-safe-area-left) - min(var(--seed-box-width), var(--seed-box-max-width))));
88
89
  left: 0;
89
90
  }
90
91
 
@@ -93,7 +94,10 @@
93
94
  }
94
95
 
95
96
  .seed-side-panel__content[data-drawer-direction="right"] {
96
- padding-right: env(safe-area-inset-right, 0);
97
+ width: calc(var(--seed-box-width) + var(--seed-safe-area-right));
98
+ max-width: calc(var(--seed-box-max-width) + var(--seed-safe-area-right));
99
+ padding-right: var(--seed-safe-area-right);
100
+ padding-left: max(0px, var(--seed-safe-area-left) - (100% - var(--seed-safe-area-right) - min(var(--seed-box-width), var(--seed-box-max-width))));
97
101
  right: 0;
98
102
  }
99
103
 
@@ -3,9 +3,9 @@
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
  align-items: center;
6
- left: calc(env(safe-area-inset-left, 0px));
7
- right: calc(env(safe-area-inset-right, 0px));
8
- bottom: calc(env(safe-area-inset-bottom, 0px) + var(--snackbar-region-offset, 0px));
6
+ left: var(--seed-safe-area-left);
7
+ right: var(--seed-safe-area-right);
8
+ bottom: calc(var(--seed-safe-area-bottom) + var(--snackbar-region-offset, 0px));
9
9
  padding-inline: var(--seed-dimension-x2);
10
10
  padding-block: var(--seed-dimension-x2);
11
11
  transition-property: bottom;
@@ -1,9 +1,9 @@
1
1
  @layer seed-components {
2
2
  .seed-snackbar-region {
3
3
  z-index: 2147483647;
4
- left: calc(env(safe-area-inset-left, 0px));
5
- right: calc(env(safe-area-inset-right, 0px));
6
- bottom: calc(env(safe-area-inset-bottom, 0px) + var(--snackbar-region-offset, 0px));
4
+ left: var(--seed-safe-area-left);
5
+ right: var(--seed-safe-area-right);
6
+ bottom: calc(var(--seed-safe-area-bottom) + var(--snackbar-region-offset, 0px));
7
7
  padding-inline: var(--seed-dimension-x2);
8
8
  padding-block: var(--seed-dimension-x2);
9
9
  transition-property: bottom;
@@ -10,9 +10,11 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓입니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓이고, 높이는 그 사이 높이를 넘지 않습니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "cornerRadius": "var(--seed-radius-r5)",
17
+ /** content와 좌우 안전 영역 경계 사이의 최소 간격입니다. 화면 끝이 아니라 안전 영역 경계부터 잽니다. */
16
18
  "marginX": "var(--seed-dimension-x8)",
17
19
  "marginY": "var(--seed-dimension-x16)",
18
20
  "maxWidth": "272px",
@@ -10,9 +10,12 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 하단 inset을 content의 하단 패딩으로 적용합니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "maxWidth": "480px",
17
+ /** inset을 빼지 않은 viewport height 또는 parent height에 대한 최대 비율입니다. 최대 높이는 min(maxHeightFraction × 높이, 상단 inset을 뺀 높이)이므로, content는 상단 안전 영역 경계까지만 커집니다. */
18
+ "maxHeightFraction": "0.9",
16
19
  "topCornerRadius": "var(--seed-radius-r6)",
17
20
  "enterDuration": "var(--seed-duration-d6)",
18
21
  "enterTimingFunction": "var(--seed-timing-function-enter-expressive)",
@@ -13,6 +13,7 @@ export const vars = {
13
13
  "content": {
14
14
  "color": "var(--seed-color-bg-layer-floating)",
15
15
  "maxWidth": "480px",
16
+ "maxHeightFraction": "0.9",
16
17
  "topCornerRadius": "var(--seed-radius-r6)",
17
18
  "enterDuration": "var(--seed-duration-d6)",
18
19
  "enterTimingFunction": "var(--seed-timing-function-enter-expressive)",
@@ -10,13 +10,15 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 소비자가 지정한 너비는 안전 영역의 너비를 기준으로 합니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓입니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "cornerRadius": "var(--seed-radius-r5)",
16
- /** viewport width 또는 parent width에 대한 비율입니다. viewport `md` 미만에서 적용합니다. */
17
+ /** 좌우 inset을 뺀 viewport width 또는 parent width에 대한 비율입니다. viewport `md` 미만에서 적용합니다. */
17
18
  "widthFraction": "0.9",
18
- /** viewport height 또는 parent height에 대한 최대 비율입니다. */
19
+ /** viewport height 또는 parent height에 대한 최대 비율입니다. 최대 높이는 min(maxHeightFraction × 높이, 상단과 하단 inset 중 큰 값을 위아래에서 각각 뺀 높이)입니다. */
19
20
  "maxHeightFraction": "0.8",
21
+ /** viewport `md` 이상에서 content와 좌우 안전 영역 경계 사이에 두는 최소 간격입니다. */
20
22
  "marginX": "var(--seed-dimension-x5)",
21
23
  "enterDuration": "var(--seed-duration-d4)",
22
24
  "enterTimingFunction": "var(--seed-timing-function-enter-expressive)",
@@ -76,6 +78,7 @@ export declare const vars: {
76
78
  },
77
79
  "sizeMedium": {
78
80
  "enabled": {
81
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 소비자가 지정한 너비는 안전 영역의 너비를 기준으로 합니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓입니다. */
79
82
  "content": {
80
83
  "maxWidth": "480px"
81
84
  }
@@ -83,6 +86,7 @@ export declare const vars: {
83
86
  },
84
87
  "sizeLarge": {
85
88
  "enabled": {
89
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 소비자가 지정한 너비는 안전 영역의 너비를 기준으로 합니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓입니다. */
86
90
  "content": {
87
91
  "maxWidth": "800px"
88
92
  }
@@ -7,6 +7,7 @@ export declare const vars: {
7
7
  "paddingX": "var(--seed-dimension-x3)",
8
8
  "paddingY": "var(--seed-dimension-x2_5)",
9
9
  "gap": "var(--seed-dimension-x1)",
10
+ /** 가용 너비(overflowPadding 참고)가 이보다 작으면 가용 너비로 축소됩니다. */
10
11
  "maxWidth": "280px",
11
12
  "enterScale": "0.9",
12
13
  "enterOpacity": "0",
@@ -16,7 +17,7 @@ export declare const vars: {
16
17
  "exitOpacity": "0",
17
18
  "exitDuration": "var(--seed-duration-d4)",
18
19
  "exitTimingFunction": "var(--seed-timing-function-easing)",
19
- /** 말풍선과 뷰포트 경계 사이의 최소 간격을 정의합니다. */
20
+ /** 말풍선과 안전 영역 경계 사이의 최소 간격을 정의합니다. 말풍선은 화면 끝에서 inset + overflowPadding만큼 안쪽에 배치되며, 가용 너비도 같은 기준으로 계산합니다. */
20
21
  "overflowPadding": "var(--seed-dimension-x4)"
21
22
  },
22
23
  "arrow": {
@@ -10,11 +10,15 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓입니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "maxWidth": "480px",
17
+ /** inset을 빼지 않은 viewport height 또는 parent height에 대한 최대 비율입니다. 최대 높이는 min(maxHeightFraction × 높이, 상단 inset을 뺀 높이)이므로, content는 상단 안전 영역 경계까지만 커집니다. */
18
+ "maxHeightFraction": "0.9",
16
19
  "paddingX": "var(--seed-dimension-spacing-x-global-gutter)",
17
20
  "paddingTop": "var(--seed-dimension-x6)",
21
+ /** 이 값은 하단 inset과 합산하여 적용합니다. */
18
22
  "paddingBottom": "var(--seed-dimension-x4)",
19
23
  "topCornerRadius": "var(--seed-radius-r5)",
20
24
  "enterDuration": "var(--seed-duration-d6)",
@@ -24,6 +28,7 @@ export declare const vars: {
24
28
  },
25
29
  "header": {
26
30
  "gap": "var(--seed-dimension-x1)",
31
+ /** 이 값은 하단 inset과 합산하여 적용합니다. */
27
32
  "paddingBottom": "var(--seed-dimension-x4)"
28
33
  },
29
34
  "title": {
@@ -13,6 +13,7 @@ export const vars = {
13
13
  "content": {
14
14
  "color": "var(--seed-color-bg-layer-floating)",
15
15
  "maxWidth": "480px",
16
+ "maxHeightFraction": "0.9",
16
17
  "paddingX": "var(--seed-dimension-spacing-x-global-gutter)",
17
18
  "paddingTop": "var(--seed-dimension-x6)",
18
19
  "paddingBottom": "var(--seed-dimension-x4)",
@@ -17,8 +17,9 @@ export declare const vars: {
17
17
  "gap": "var(--seed-dimension-x2)",
18
18
  /** 트리거와 메뉴 사이의 간격을 정의합니다. */
19
19
  "gutter": "var(--seed-dimension-x2)",
20
- /** 메뉴와 뷰포트 경계 사이의 최소 간격을 정의합니다. */
20
+ /** 메뉴와 안전 영역 경계 사이의 최소 간격을 정의합니다. 메뉴는 화면 끝에서 inset + overflowPadding만큼 안쪽에 배치되며, 가용 높이도 같은 기준으로 계산합니다. */
21
21
  "overflowPadding": "var(--seed-dimension-x2)",
22
+ /** 가용 높이(overflowPadding 참고)가 이보다 작으면 가용 높이로 축소됩니다. */
22
23
  "maxHeight": "480px"
23
24
  },
24
25
  "groupLabel": {
@@ -17,8 +17,9 @@ export declare const vars: {
17
17
  "gap": "var(--seed-dimension-x2)",
18
18
  /** 트리거와 목록 사이의 간격을 정의합니다. */
19
19
  "gutter": "var(--seed-dimension-x2)",
20
- /** 목록과 뷰포트 경계 사이의 최소 간격을 정의합니다. */
20
+ /** 목록과 안전 영역 경계 사이의 최소 간격을 정의합니다. 목록은 화면 끝에서 inset + overflowPadding만큼 안쪽에 배치되며, 가용 높이도 같은 기준으로 계산합니다. */
21
21
  "overflowPadding": "var(--seed-dimension-x2)",
22
+ /** 가용 높이(overflowPadding 참고)가 이보다 작으면 가용 높이로 축소됩니다. */
22
23
  "maxHeight": "480px"
23
24
  },
24
25
  "groupLabel": {