@astryx-vue/lab 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lab.css CHANGED
@@ -13,3 +13,9 @@
13
13
  @import './styles/code-editor.css';
14
14
  @import './styles/chat-emoji-picker.css';
15
15
  @import './styles/chat-reaction-bar.css';
16
+ @import './styles/comment-composer.css';
17
+ @import './styles/comment-thread.css';
18
+ @import './styles/comments.css';
19
+ @import './styles/comment-pin.css';
20
+ @import './styles/emoji-picker.css';
21
+ @import './styles/schedule.css';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@astryx-vue/lab",
3
3
  "type": "module",
4
- "version": "0.5.1",
4
+ "version": "0.5.3",
5
5
  "description": "Astryx lab components for Vue 3 — experimental components that may change. Ships only under the canary dist-tag.",
6
6
  "author": "ShenQingchuan",
7
7
  "license": "MIT",
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "peerDependencies": {
55
55
  "vue": "^3.5.0",
56
- "@astryx-vue/core": "^0.7.14"
56
+ "@astryx-vue/core": "^0.7.20"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/node": "26.6.4",
@@ -64,7 +64,7 @@
64
64
  "unplugin-vue": "8.0.0",
65
65
  "vue": "3.5.43",
66
66
  "vue-tsc": "3.3.12",
67
- "@astryx-vue/core": "^0.7.14"
67
+ "@astryx-vue/core": "^0.7.20"
68
68
  },
69
69
  "scripts": {
70
70
  "build": "tsdown",
@@ -0,0 +1,64 @@
1
+ .astryx-comment-composer {
2
+ width: 100%;
3
+ }
4
+
5
+ .astryx-comment-composer .astryx-chat-composer {
6
+ --_chat-composer-radius: var(--astryx-radius-container, 0.75rem);
7
+ }
8
+
9
+ .astryx-comment-composer__quote {
10
+ width: 100%;
11
+ border-radius: var(--astryx-radius-inner, 0.375rem);
12
+ }
13
+
14
+ .astryx-comment-error-banner {
15
+ width: 100%;
16
+ }
17
+
18
+ .astryx-metadata-action {
19
+ white-space: nowrap;
20
+ }
21
+
22
+ .astryx-quoted-passage__text {
23
+ font-style: italic;
24
+ }
25
+
26
+ .astryx-quoted-passage[data-highlight-color='blue'] {
27
+ border-inline-start-color: var(--astryx-color-border-blue);
28
+ }
29
+
30
+ .astryx-quoted-passage[data-highlight-color='cyan'] {
31
+ border-inline-start-color: var(--astryx-color-border-cyan);
32
+ }
33
+
34
+ .astryx-quoted-passage[data-highlight-color='gray'] {
35
+ border-inline-start-color: var(--astryx-color-border-gray);
36
+ }
37
+
38
+ .astryx-quoted-passage[data-highlight-color='green'] {
39
+ border-inline-start-color: var(--astryx-color-border-green);
40
+ }
41
+
42
+ .astryx-quoted-passage[data-highlight-color='orange'] {
43
+ border-inline-start-color: var(--astryx-color-border-orange);
44
+ }
45
+
46
+ .astryx-quoted-passage[data-highlight-color='pink'] {
47
+ border-inline-start-color: var(--astryx-color-border-pink);
48
+ }
49
+
50
+ .astryx-quoted-passage[data-highlight-color='purple'] {
51
+ border-inline-start-color: var(--astryx-color-border-purple);
52
+ }
53
+
54
+ .astryx-quoted-passage[data-highlight-color='red'] {
55
+ border-inline-start-color: var(--astryx-color-border-red);
56
+ }
57
+
58
+ .astryx-quoted-passage[data-highlight-color='teal'] {
59
+ border-inline-start-color: var(--astryx-color-border-teal);
60
+ }
61
+
62
+ .astryx-quoted-passage[data-highlight-color='yellow'] {
63
+ border-inline-start-color: var(--astryx-color-border-yellow);
64
+ }
@@ -0,0 +1,159 @@
1
+ /* CommentPin: a speech-bubble annotation marker. The 2px logical bottom-start
2
+ corner is intentional; no radius token is 2px, and themes may change
3
+ --astryx-radius-inner. */
4
+
5
+ .astryx-comment-pin {
6
+ appearance: none;
7
+ box-sizing: border-box;
8
+ position: relative;
9
+ display: inline-flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ flex-shrink: 0;
13
+ vertical-align: middle;
14
+ transform-origin: left bottom;
15
+ margin: 0;
16
+ border-width: var(--astryx-border-width, 1px);
17
+ border-style: solid;
18
+ border-color: transparent;
19
+ border-end-start-radius: 2px;
20
+ background-color: var(--astryx-color-background-popover);
21
+ background-image: none;
22
+ box-shadow: var(--astryx-shadow-med);
23
+ color: var(--astryx-color-text-secondary);
24
+ cursor: pointer;
25
+ font-family: var(--astryx-font-family-body);
26
+ font-size: var(--astryx-text-supporting-size);
27
+ font-weight: var(--astryx-font-weight-semibold);
28
+ line-height: var(--astryx-text-supporting-leading);
29
+ white-space: nowrap;
30
+ user-select: none;
31
+ }
32
+
33
+ .astryx-comment-pin:dir(rtl) {
34
+ transform-origin: right bottom;
35
+ }
36
+
37
+ .astryx-comment-pin[data-grouped='grouped'],
38
+ .astryx-comment-pin[data-unread='unread'] {
39
+ justify-content: flex-start;
40
+ gap: var(--astryx-spacing-1);
41
+ }
42
+
43
+ .astryx-comment-pin[data-size='sm'] {
44
+ min-width: var(--astryx-size-element-sm);
45
+ height: var(--astryx-size-element-sm);
46
+ padding: calc((var(--astryx-size-element-sm) - 22px) / 2 - var(--astryx-border-width, 1px));
47
+ border-start-start-radius: calc(var(--astryx-size-element-sm) / 2);
48
+ border-start-end-radius: calc(var(--astryx-size-element-sm) / 2);
49
+ border-end-end-radius: calc(var(--astryx-size-element-sm) / 2);
50
+ }
51
+
52
+ .astryx-comment-pin[data-size='md'] {
53
+ min-width: var(--astryx-size-element-md);
54
+ height: var(--astryx-size-element-md);
55
+ padding: calc((var(--astryx-size-element-md) - 24px) / 2 - var(--astryx-border-width, 1px));
56
+ border-start-start-radius: calc(var(--astryx-size-element-md) / 2);
57
+ border-start-end-radius: calc(var(--astryx-size-element-md) / 2);
58
+ border-end-end-radius: calc(var(--astryx-size-element-md) / 2);
59
+ }
60
+
61
+ .astryx-comment-pin[data-size='lg'] {
62
+ min-width: var(--astryx-size-element-lg);
63
+ height: var(--astryx-size-element-lg);
64
+ padding: calc((var(--astryx-size-element-lg) - 28px) / 2 - var(--astryx-border-width, 1px));
65
+ border-start-start-radius: calc(var(--astryx-size-element-lg) / 2);
66
+ border-start-end-radius: calc(var(--astryx-size-element-lg) / 2);
67
+ border-end-end-radius: calc(var(--astryx-size-element-lg) / 2);
68
+ }
69
+
70
+ .astryx-comment-pin[data-selected='selected'] {
71
+ forced-color-adjust: none;
72
+ opacity: 1;
73
+ border-color: transparent;
74
+ background-color: var(--astryx-color-background-popover);
75
+ box-shadow: 0 0 0 2px var(--astryx-color-accent), var(--astryx-shadow-med);
76
+ color: var(--astryx-color-text-secondary);
77
+ }
78
+
79
+ .astryx-comment-pin[data-dimmed='dimmed']:not([data-selected='selected']) {
80
+ opacity: 0.4;
81
+ }
82
+
83
+ .astryx-comment-pin[data-disabled='disabled'] {
84
+ cursor: default;
85
+ opacity: 0.45;
86
+ }
87
+
88
+ .astryx-comment-pin[data-disabled='disabled'][data-selected='selected'] {
89
+ opacity: 1;
90
+ }
91
+
92
+ .astryx-comment-pin:focus-visible {
93
+ outline: var(--astryx-focus-outline-width, 2px) var(--astryx-focus-outline-style, solid) var(--astryx-focus-outline-color, currentcolor);
94
+ outline-offset: var(--astryx-focus-outline-offset, 3px);
95
+ }
96
+
97
+ .astryx-comment-pin__avatar-rail {
98
+ display: inline-flex;
99
+ align-items: center;
100
+ flex-shrink: 0;
101
+ }
102
+
103
+ .astryx-comment-pin__avatar-rail--grouped {
104
+ margin-inline-start: -2px;
105
+ }
106
+
107
+ .astryx-comment-pin__overflow {
108
+ padding-inline: 0;
109
+ }
110
+
111
+ .astryx-comment-pin__trailing {
112
+ display: inline-flex;
113
+ align-items: center;
114
+ gap: var(--astryx-spacing-1);
115
+ padding-inline-end: var(--astryx-spacing-1);
116
+ }
117
+
118
+ .astryx-comment-pin__count {
119
+ color: inherit;
120
+ font-variant-numeric: tabular-nums;
121
+ }
122
+
123
+ .astryx-comment-pin__unread {
124
+ display: inline-flex;
125
+ align-items: center;
126
+ forced-color-adjust: none;
127
+ color: var(--astryx-color-on-accent);
128
+ }
129
+
130
+ .astryx-comment-pin__unread :deep(.astryx-status-dot),
131
+ .astryx-comment-pin__unread .astryx-status-dot {
132
+ background-color: var(--astryx-color-accent);
133
+ color: var(--astryx-color-on-accent);
134
+ }
135
+
136
+ @media (forced-colors: active) {
137
+ .astryx-comment-pin[data-selected='selected'] {
138
+ border-color: Highlight;
139
+ background-color: Highlight;
140
+ box-shadow: none;
141
+ color: HighlightText;
142
+ }
143
+
144
+ .astryx-comment-pin[data-dimmed='dimmed']:not([data-selected='selected']),
145
+ .astryx-comment-pin[data-disabled='disabled'] {
146
+ opacity: 1;
147
+ }
148
+
149
+ .astryx-comment-pin[data-disabled='disabled']:not([data-selected='selected']) {
150
+ border-color: GrayText;
151
+ color: GrayText;
152
+ }
153
+
154
+ .astryx-comment-pin__unread,
155
+ .astryx-comment-pin__unread .astryx-status-dot {
156
+ color: inherit;
157
+ background-color: currentColor;
158
+ }
159
+ }
@@ -0,0 +1,279 @@
1
+ .astryx-comment-thread {
2
+ width: 100%;
3
+ }
4
+
5
+ .astryx-comment-thread:focus {
6
+ outline: none;
7
+ }
8
+
9
+ .astryx-comment-avatar-frame {
10
+ position: relative;
11
+ z-index: 1;
12
+ overflow: hidden;
13
+ width: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
14
+ min-width: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
15
+ height: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
16
+ background-color: var(--astryx-color-background-card);
17
+ }
18
+
19
+ .astryx-comment-avatar-frame[data-avatar-shape='person'] {
20
+ border-radius: var(--astryx-radius-full);
21
+ }
22
+
23
+ .astryx-comment-avatar-frame[data-avatar-shape='agent'] {
24
+ border-radius: var(--astryx-radius-element);
25
+ }
26
+
27
+ .astryx-comment-avatar-spacer,
28
+ .astryx-comment-avatar {
29
+ width: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
30
+ min-width: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
31
+ height: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
32
+ }
33
+
34
+ .astryx-comment-nowrap {
35
+ white-space: nowrap;
36
+ }
37
+
38
+ .astryx-comment-body-clamped[data-comment-body-clamp='3'] {
39
+ display: -webkit-box;
40
+ -webkit-box-orient: vertical;
41
+ -webkit-line-clamp: 3;
42
+ overflow: hidden;
43
+ }
44
+
45
+ .astryx-comment-unread-badge {
46
+ animation-name: astryx-comment-unread-fade;
47
+ animation-delay: 5s;
48
+ animation-duration: var(--astryx-duration-slow-max, 500ms);
49
+ animation-timing-function: var(--astryx-ease-standard, ease);
50
+ animation-fill-mode: forwards;
51
+ }
52
+
53
+ @media (prefers-reduced-motion: reduce) {
54
+ .astryx-comment-unread-badge {
55
+ animation-duration: 1ms;
56
+ }
57
+ }
58
+
59
+ @keyframes astryx-comment-unread-fade {
60
+ from {
61
+ opacity: 1;
62
+ visibility: visible;
63
+ }
64
+
65
+ to {
66
+ opacity: 0;
67
+ visibility: hidden;
68
+ }
69
+ }
70
+
71
+ .astryx-comment-anchor-quote {
72
+ padding-block: var(--astryx-spacing-1, 4px);
73
+ width: 100%;
74
+ }
75
+
76
+ .astryx-comment-progress-label {
77
+ color: var(--astryx-color-text-secondary);
78
+ }
79
+
80
+ @supports (background-clip: text) {
81
+ .astryx-comment-progress-label {
82
+ color: transparent;
83
+ background-image: linear-gradient(
84
+ 90deg,
85
+ var(--astryx-color-text-secondary) 40%,
86
+ var(--astryx-color-text-primary) 50%,
87
+ var(--astryx-color-text-secondary) 60%
88
+ );
89
+ background-size: 250% 100%;
90
+ background-clip: text;
91
+ animation-name: astryx-comment-progress-shimmer;
92
+ animation-duration: calc(var(--astryx-duration-slow-max, 500ms) * 2);
93
+ animation-timing-function: linear;
94
+ animation-iteration-count: infinite;
95
+ }
96
+ }
97
+
98
+ @media (prefers-reduced-motion: reduce) {
99
+ .astryx-comment-progress-label {
100
+ color: var(--astryx-color-text-secondary);
101
+ background-image: none;
102
+ animation-name: none;
103
+ }
104
+ }
105
+
106
+ @keyframes astryx-comment-progress-shimmer {
107
+ from {
108
+ background-position: 100% 0;
109
+ }
110
+
111
+ to {
112
+ background-position: 0 0;
113
+ }
114
+ }
115
+
116
+ .astryx-thread-rail-row {
117
+ position: relative;
118
+ }
119
+
120
+ .astryx-thread-rail {
121
+ position: absolute;
122
+ inset-inline-start: calc(var(--astryx-spacing-3, 12px) + var(--astryx-border-width, 1px));
123
+ width: var(--astryx-spacing-0-5, 2px);
124
+ background-color: var(--astryx-color-border-emphasized);
125
+ pointer-events: none;
126
+ }
127
+
128
+ .astryx-thread-rail[data-from='avatar'] {
129
+ inset-block-start: calc(
130
+ var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px) + var(--astryx-spacing-1, 4px)
131
+ );
132
+ }
133
+
134
+ .astryx-thread-rail[data-from='row'] {
135
+ inset-block-start: 0;
136
+ }
137
+
138
+ .astryx-thread-rail[data-to='avatar'] {
139
+ inset-block-end: calc(var(--astryx-spacing-1, 4px) - var(--astryx-spacing-2, 8px));
140
+ }
141
+
142
+ .astryx-thread-rail[data-to='row'] {
143
+ inset-block-end: calc(-1 * var(--astryx-spacing-2, 8px));
144
+ }
145
+
146
+ .astryx-thread-rail--collapsed {
147
+ position: absolute;
148
+ inset-block-start: calc(
149
+ var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px) + var(--astryx-spacing-1, 4px)
150
+ );
151
+ inset-block-end: 0;
152
+ inset-inline-start: calc(var(--astryx-spacing-3, 12px) + var(--astryx-border-width, 1px));
153
+ width: var(--astryx-spacing-0-5, 2px);
154
+ background-image: linear-gradient(to bottom, var(--astryx-color-border-emphasized), transparent);
155
+ pointer-events: none;
156
+ z-index: -1;
157
+ }
158
+
159
+ .astryx-thread-surface[data-selectable='true'] {
160
+ cursor: pointer;
161
+ }
162
+
163
+ .astryx-thread-surface[data-focused='true'] {
164
+ outline-style: var(--astryx-focus-outline-style, solid);
165
+ outline-width: var(--astryx-focus-outline-width, 2px);
166
+ outline-color: var(--astryx-focus-outline-color, Highlight);
167
+ outline-offset: var(--astryx-focus-outline-offset, 2px);
168
+ }
169
+
170
+ .astryx-thread-surface[data-thread-surface='card'][data-filled='true'] {
171
+ background-color: var(--astryx-color-background-muted);
172
+ }
173
+
174
+ @media (forced-colors: active) {
175
+ .astryx-thread-surface[data-filled='true'] {
176
+ outline-style: solid;
177
+ outline-width: calc(var(--astryx-border-width, 1px) * 2);
178
+ outline-color: Highlight;
179
+ outline-offset: calc(var(--astryx-border-width, 1px) * -2);
180
+ }
181
+ }
182
+
183
+ .astryx-thread-section-overlap:not(:first-child) {
184
+ margin-block-start: calc(-1 * var(--astryx-border-width, 1px));
185
+ }
186
+
187
+ .astryx-comment-header {
188
+ height: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
189
+ min-height: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
190
+ }
191
+
192
+ .astryx-comment-metadata {
193
+ flex-grow: 0;
194
+ flex-shrink: 1;
195
+ flex-basis: auto;
196
+ min-width: 0;
197
+ }
198
+
199
+ .astryx-comment-metadata--beside-actions {
200
+ max-width: calc(100% - var(--astryx-spacing-6, 24px) - var(--astryx-spacing-1, 4px));
201
+ }
202
+
203
+ .astryx-comment-author-name {
204
+ flex-shrink: 1;
205
+ min-width: 0;
206
+ }
207
+
208
+ .astryx-comment-agent-badge {
209
+ flex-shrink: 0;
210
+ }
211
+
212
+ .astryx-comment-actions-reveal {
213
+ flex-grow: 1;
214
+ flex-shrink: 1;
215
+ flex-basis: 0;
216
+ min-width: 0;
217
+ transition: none;
218
+ }
219
+
220
+ .astryx-comment-actions-list {
221
+ flex-grow: 1;
222
+ flex-shrink: 1;
223
+ flex-basis: 0;
224
+ min-width: 0;
225
+ justify-content: flex-end;
226
+ display: flex;
227
+ align-items: center;
228
+ gap: var(--astryx-spacing-0-5, 2px);
229
+ }
230
+
231
+ .astryx-comment-control-row-bleed {
232
+ margin-inline-start: calc(-1 * var(--astryx-spacing-2, 8px));
233
+ }
234
+
235
+ .astryx-comment-reaction-toggle {
236
+ aspect-ratio: auto;
237
+ padding-inline: var(--astryx-spacing-2, 8px);
238
+ }
239
+
240
+ .astryx-comment-markdown-image {
241
+ display: block;
242
+ max-width: 100%;
243
+ height: auto;
244
+ margin-block: var(--astryx-spacing-2, 8px);
245
+ cursor: zoom-in;
246
+ }
247
+
248
+ .astryx-comment-markdown-image:focus-visible {
249
+ outline-style: var(--astryx-focus-outline-style, solid);
250
+ outline-width: var(--astryx-focus-outline-width, 2px);
251
+ outline-color: var(--astryx-focus-outline-color, Highlight);
252
+ outline-offset: var(--astryx-focus-outline-offset, 2px);
253
+ }
254
+
255
+ .astryx-comment-thread-rows {
256
+ position: relative;
257
+ isolation: isolate;
258
+ }
259
+
260
+ .astryx-comment-reply-disclosure {
261
+ margin: 0;
262
+ padding: 0;
263
+ border: 0;
264
+ background: none;
265
+ color: var(--astryx-color-text-secondary);
266
+ font: inherit;
267
+ cursor: pointer;
268
+ text-align: start;
269
+ }
270
+
271
+ .astryx-comment-reply-disclosure:disabled {
272
+ cursor: default;
273
+ opacity: 0.6;
274
+ }
275
+
276
+ .astryx-comment-reply-disclosure:focus-visible {
277
+ outline: 2px solid var(--astryx-color-border-focus, Highlight);
278
+ outline-offset: 2px;
279
+ }
@@ -0,0 +1,53 @@
1
+ /* Comments panel: a pane fills its container; an embedded list is content-height. */
2
+ .astryx-comments {
3
+ min-width: 0;
4
+ }
5
+
6
+ .astryx-comments[data-layout='pane'] {
7
+ height: 100%;
8
+ min-height: 0;
9
+ overflow: hidden;
10
+ }
11
+
12
+ .astryx-comments[data-layout='pane'] > .astryx-chat-layout {
13
+ flex: 1 1 auto;
14
+ min-height: 0;
15
+ width: 100%;
16
+ }
17
+
18
+ .astryx-comments-timeline {
19
+ position: relative;
20
+ z-index: 0;
21
+ isolation: isolate;
22
+ }
23
+
24
+ /* A card parent's Sections bleed through ChatMessageList padding to the panel edge. */
25
+ .astryx-comments-timeline--bleed-compact {
26
+ width: calc(100% + (var(--astryx-spacing-3) * 2));
27
+ margin-inline: calc(-1 * var(--astryx-spacing-3));
28
+ margin-block-start: calc(-1 * var(--astryx-spacing-2));
29
+ }
30
+
31
+ .astryx-comments-timeline--bleed-balanced {
32
+ width: calc(100% + (var(--astryx-spacing-4) * 2));
33
+ margin-inline: calc(-1 * var(--astryx-spacing-4));
34
+ margin-block-start: calc(-1 * var(--astryx-spacing-4));
35
+ }
36
+
37
+ /* ChatLayout's dock pads one step less than the message list; restore the inset. */
38
+ .astryx-comments-composer-dock {
39
+ padding-inline: var(--astryx-spacing-1);
40
+ }
41
+
42
+ .astryx-comments-event {
43
+ padding-inline-start: var(--astryx-spacing-3);
44
+ }
45
+
46
+ .astryx-comments-event-avatar {
47
+ width: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
48
+ min-width: calc(var(--astryx-spacing-6, 24px) + var(--astryx-spacing-1, 4px));
49
+ }
50
+
51
+ .astryx-comments-loading-composer {
52
+ border-radius: var(--astryx-radius-container);
53
+ }
@@ -0,0 +1,90 @@
1
+ @layer astryx.reset, astryx.tokens, astryx.base, astryx.components, astryx.overrides;
2
+
3
+ @layer astryx.components {
4
+ .astryx-emoji-picker {
5
+ box-sizing: border-box;
6
+ min-width: 0;
7
+ }
8
+
9
+ .astryx-emoji-picker__grids {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: var(--astryx-spacing-3, 12px);
13
+ width: 100%;
14
+ min-width: 0;
15
+ }
16
+
17
+
18
+ /* 分组标题在列表顶部吸住,背景用弹出层表面色,避免表情滚过去时透出来。 */
19
+ .astryx-emoji-picker__category {
20
+ position: sticky;
21
+ inset-block-start: 0;
22
+ z-index: 1;
23
+ background-color: var(--astryx-color-background-popover, light-dark(#ffffff, #1b1b1b));
24
+ }
25
+
26
+ .astryx-emoji-picker__row {
27
+ display: grid;
28
+ grid-template-columns: repeat(8, minmax(0, 1fr));
29
+ column-gap: var(--astryx-spacing-0-5, 2px);
30
+ }
31
+
32
+ .astryx-emoji-picker__grid-cell {
33
+ display: flex;
34
+ min-width: 0;
35
+ }
36
+
37
+ .astryx-emoji-picker__cell {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ box-sizing: border-box;
42
+ width: 100%;
43
+ aspect-ratio: 1;
44
+ margin: 0;
45
+ padding: 0;
46
+ border-style: none;
47
+ border-radius: var(--astryx-radius-inner, 0.375rem);
48
+ background-color: transparent;
49
+ color: inherit;
50
+ font-family: var(--astryx-font-family-body, inherit);
51
+ font-size: var(--astryx-text-large-size, 1.125rem);
52
+ line-height: 1;
53
+ cursor: pointer;
54
+ /* 格子紧挨着,外扩的焦点环会压到旁边的格子,所以向内收 2px。 */
55
+ outline-offset: 0;
56
+ transition-property: background-color;
57
+ transition-duration: var(--astryx-duration-fast, 125ms);
58
+ transition-timing-function: var(--astryx-ease-standard, cubic-bezier(0.24, 1, 0.4, 1));
59
+ }
60
+
61
+ @media (hover: hover) {
62
+ .astryx-emoji-picker__cell:hover:where(:not(:disabled, [aria-disabled='true'])) {
63
+ background-color: var(--astryx-color-overlay-hover, light-dark(#0000000d, #ffffff0d));
64
+ }
65
+ }
66
+
67
+ .astryx-emoji-picker__cell:is(:disabled, [aria-disabled='true']) {
68
+ cursor: default;
69
+ }
70
+
71
+ .astryx-emoji-picker__cell:focus-visible {
72
+ outline: var(--astryx-focus-outline-width, 2px) var(--astryx-focus-outline-style, solid) var(--astryx-focus-outline-color, currentcolor);
73
+ outline-offset: -2px;
74
+ }
75
+
76
+ .astryx-emoji-picker__preview {
77
+ min-height: var(--astryx-spacing-8, 32px);
78
+ }
79
+
80
+ .astryx-emoji-picker__preview-emoji {
81
+ font-size: var(--astryx-text-large-size, 1.125rem);
82
+ line-height: 1;
83
+ }
84
+
85
+ @media (prefers-reduced-motion: reduce) {
86
+ .astryx-emoji-picker__cell {
87
+ transition-duration: 0s;
88
+ }
89
+ }
90
+ }