anentrypoint-design 0.0.127 → 0.0.130

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.
@@ -136,13 +136,50 @@
136
136
  --measure: 68ch;
137
137
  }
138
138
 
139
+ /* ============================================================
140
+ Focus-visible styles for keyboard navigation
141
+ ============================================================ */
142
+ :focus-visible {
143
+ outline: 2px solid var(--accent);
144
+ outline-offset: 2px;
145
+ }
146
+
147
+ /* Button variants with focus-visible */
148
+ .btn:focus-visible,
149
+ .btn-primary:focus-visible,
150
+ .btn-ghost:focus-visible {
151
+ outline: 2px solid var(--accent);
152
+ outline-offset: 2px;
153
+ }
154
+
155
+ /* Link focus-visible */
156
+ a:focus-visible,
157
+ [role="link"]:focus-visible {
158
+ outline: 2px solid var(--accent);
159
+ outline-offset: 2px;
160
+ }
161
+
162
+ /* Form inputs with focus-visible */
163
+ input:focus-visible,
164
+ textarea:focus-visible,
165
+ select:focus-visible {
166
+ outline: 2px solid var(--accent);
167
+ outline-offset: 1px;
168
+ }
169
+
170
+ /* Interactive element focus-visible */
171
+ [tabindex]:focus-visible {
172
+ outline: 2px solid var(--accent);
173
+ outline-offset: 2px;
174
+ }
175
+
139
176
  [data-theme="ink"] {
140
177
  --bg: var(--ink);
141
178
  --bg-2: var(--ink-2);
142
- --bg-3: #34343C;
179
+ --bg-3: #464650;
143
180
  --fg: var(--paper);
144
181
  --fg-2: var(--paper-2);
145
- --fg-3: #9A9AA2;
182
+ --fg-3: #B4B4BC;
146
183
  --panel-bg: var(--bg);
147
184
  --panel-bg-2: var(--bg-2);
148
185
  --panel-0: var(--bg);
@@ -154,16 +191,17 @@
154
191
  --panel-text-3: var(--fg-3);
155
192
  --accent: var(--accent-bright, var(--green-2));
156
193
  --accent-fg: var(--ink);
194
+ --accent-bright: var(--green-2);
157
195
  }
158
196
 
159
197
  @media (prefers-color-scheme: dark) {
160
198
  [data-theme="auto"] {
161
199
  --bg: var(--ink);
162
200
  --bg-2: var(--ink-2);
163
- --bg-3: #34343C;
201
+ --bg-3: #464650;
164
202
  --fg: var(--paper);
165
203
  --fg-2: var(--paper-2);
166
- --fg-3: #9A9AA2;
204
+ --fg-3: #B4B4BC;
167
205
  --panel-bg: var(--bg);
168
206
  --panel-bg-2: var(--bg-2);
169
207
  --panel-0: var(--bg);
@@ -175,6 +213,7 @@
175
213
  --panel-text-3: var(--fg-3);
176
214
  --accent: var(--accent-bright, var(--green-2));
177
215
  --accent-fg: var(--ink);
216
+ --accent-bright: var(--green-2);
178
217
  }
179
218
  }
180
219
 
package/community.css CHANGED
@@ -275,8 +275,9 @@
275
275
  display: inline-flex;
276
276
  align-items: center;
277
277
  justify-content: center;
278
- width: 18px;
279
- height: 18px;
278
+ width: 44px;
279
+ height: 44px;
280
+ padding: 8px;
280
281
  border: 0;
281
282
  background: transparent;
282
283
  color: var(--fg-3);
@@ -290,6 +291,10 @@
290
291
  color: var(--fg);
291
292
  background: color-mix(in oklab, var(--fg) 8%, transparent);
292
293
  }
294
+ .cm-cat-add:focus-visible {
295
+ outline: 2px solid var(--accent);
296
+ outline-offset: 2px;
297
+ }
293
298
 
294
299
  .cm-cat-channels {
295
300
  display: flex;
@@ -374,11 +379,42 @@
374
379
  border-radius: 50%;
375
380
  border: 2px solid color-mix(in oklab, var(--sun) 30%, transparent);
376
381
  border-top-color: var(--sun);
377
- animation: cm-spin 700ms linear infinite;
378
382
  flex-shrink: 0;
379
383
  }
380
- @keyframes cm-spin {
381
- to { transform: rotate(360deg); }
384
+
385
+ @media (prefers-reduced-motion: no-preference) {
386
+ .cm-ch-spinner {
387
+ animation: cm-spin var(--dur-slow) steps(8, end) infinite;
388
+ will-change: transform;
389
+ contain: layout;
390
+ }
391
+ @keyframes cm-spin {
392
+ to { transform: rotate(360deg); }
393
+ }
394
+ }
395
+
396
+ .cm-ch-icon.voice-active-badge {
397
+ color: var(--green-2);
398
+ text-shadow: 0 0 8px var(--green-2);
399
+ }
400
+
401
+ .cm-ch-voice-badge {
402
+ width: 6px;
403
+ height: 6px;
404
+ border-radius: 50%;
405
+ background: var(--green-2);
406
+ flex-shrink: 0;
407
+ position: relative;
408
+ }
409
+
410
+ @media (prefers-reduced-motion: no-preference) {
411
+ .cm-ch-voice-badge {
412
+ animation: cm-voice-pulse 2s ease-in-out infinite;
413
+ }
414
+ @keyframes cm-voice-pulse {
415
+ 0%, 100% { opacity: 1; transform: scale(1); }
416
+ 50% { opacity: 0.5; transform: scale(1.3); }
417
+ }
382
418
  }
383
419
 
384
420
  .cm-ch-name {
@@ -418,8 +454,9 @@
418
454
  .cm-channel-item.active .cm-ch-actions { opacity: 0.6; }
419
455
 
420
456
  .cm-ch-action-btn {
421
- width: 18px;
422
- height: 18px;
457
+ width: 44px;
458
+ height: 44px;
459
+ padding: 8px;
423
460
  display: inline-flex;
424
461
  align-items: center;
425
462
  justify-content: center;
@@ -435,6 +472,10 @@
435
472
  color: var(--fg);
436
473
  background: color-mix(in oklab, var(--fg) 10%, transparent);
437
474
  }
475
+ .cm-ch-action-btn:focus-visible {
476
+ outline: 2px solid var(--accent);
477
+ outline-offset: 2px;
478
+ }
438
479
 
439
480
  /* Voice users nested under a voice channel */
440
481
  .cm-ch-voice-users {
@@ -529,11 +570,16 @@
529
570
  border-radius: 50%;
530
571
  background: var(--green-2);
531
572
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--green-2) 30%, transparent);
532
- animation: cm-pulse 1.6s ease-in-out infinite;
533
573
  }
534
- @keyframes cm-pulse {
535
- 0%, 100% { box-shadow: 0 0 0 3px color-mix(in oklab, var(--green-2) 30%, transparent); }
536
- 50% { box-shadow: 0 0 0 6px color-mix(in oklab, var(--green-2) 0%, transparent); }
574
+
575
+ @media (prefers-reduced-motion: no-preference) {
576
+ .cm-vs-label::before {
577
+ animation: cm-pulse 1.6s ease-in-out infinite;
578
+ }
579
+ @keyframes cm-pulse {
580
+ 0%, 100% { box-shadow: 0 0 0 3px color-mix(in oklab, var(--green-2) 30%, transparent); }
581
+ 50% { box-shadow: 0 0 0 6px color-mix(in oklab, var(--green-2) 0%, transparent); }
582
+ }
537
583
  }
538
584
 
539
585
  .cm-vs-channel {
@@ -752,12 +798,16 @@
752
798
  scrollbar-width: thin;
753
799
  scrollbar-color: color-mix(in oklab, var(--fg) 18%, transparent) transparent;
754
800
  transition: width var(--dur-base) var(--ease), flex-basis var(--dur-base) var(--ease);
801
+ will-change: width, flex-basis, opacity, transform; contain: layout style;
755
802
  }
756
803
  .cm-member-list:not(.open) {
757
804
  width: 0;
758
805
  flex-basis: 0;
759
806
  padding: 0;
760
807
  overflow: hidden;
808
+ visibility: hidden;
809
+ opacity: 0;
810
+ transform: translateX(100%);
761
811
  }
762
812
  .cm-member-list::-webkit-scrollbar { width: 8px; }
763
813
  .cm-member-list::-webkit-scrollbar-thumb {
@@ -785,6 +835,8 @@
785
835
  color: var(--fg-2);
786
836
  cursor: pointer;
787
837
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
838
+ max-width: 100%;
839
+ min-width: 0;
788
840
  }
789
841
  .cm-member-item:hover {
790
842
  background: color-mix(in oklab, var(--fg) 6%, transparent);
@@ -926,8 +978,75 @@
926
978
  .cm-server-icon,
927
979
  .cm-server-add,
928
980
  .cm-server-back {
929
- width: 40px;
930
- height: 40px;
981
+ width: 44px;
982
+ height: 44px;
983
+ padding: 4px;
984
+ }
985
+ .cm-channel-sidebar {
986
+ left: 56px;
987
+ width: 80vw;
988
+ max-width: 200px;
989
+ }
990
+ .cm-channel-sidebar.open {
991
+ width: 80vw;
992
+ max-width: 200px;
993
+ }
994
+
995
+ /* Mobile touch target fixes for icon buttons */
996
+ .cm-cat-add,
997
+ .cm-ch-action-btn {
998
+ width: 44px;
999
+ height: 44px;
1000
+ padding: 8px;
1001
+ }
1002
+ .cm-ch-icon {
1003
+ flex: 0 0 24px;
1004
+ width: 24px;
1005
+ height: 24px;
1006
+ }
1007
+ }
1008
+
1009
+ /* ---------- a11y polish: focus-visible coverage on community interactive elements ---------- */
1010
+ /* Every interactive surface with a :hover state must also have a :focus-visible state so
1011
+ keyboard users get equivalent feedback. The selectors here mirror the existing :hover rules. */
1012
+
1013
+ .cm-server-icon:focus-visible,
1014
+ .cm-server-back:focus-visible,
1015
+ .cm-server-add:focus-visible {
1016
+ outline: 2px solid var(--accent);
1017
+ outline-offset: 2px;
1018
+ border-radius: var(--r-2);
1019
+ }
1020
+
1021
+ .cm-channel-item:focus-visible {
1022
+ outline: 2px solid var(--accent);
1023
+ outline-offset: -2px;
1024
+ border-radius: var(--r-1);
1025
+ }
1026
+
1027
+ .cm-member-item:focus-visible {
1028
+ outline: 2px solid var(--accent);
1029
+ outline-offset: -2px;
1030
+ border-radius: var(--r-1);
1031
+ }
1032
+
1033
+ .cm-vs-btn:focus-visible,
1034
+ .cm-user-btn:focus-visible {
1035
+ outline: 2px solid var(--accent);
1036
+ outline-offset: 2px;
1037
+ border-radius: var(--r-1);
1038
+ }
1039
+
1040
+ /* ---------- prefers-reduced-motion: kill the transitions that were not previously guarded ---------- */
1041
+ @media (prefers-reduced-motion: reduce) {
1042
+ .cm-server-icon,
1043
+ .cm-channel-item,
1044
+ .cm-member-item,
1045
+ .cm-vs-btn,
1046
+ .cm-user-btn,
1047
+ .cm-ch-spinner,
1048
+ .cm-ch-voice-badge {
1049
+ transition: none !important;
1050
+ animation: none !important;
931
1051
  }
932
- .cm-channel-sidebar { left: 56px; }
933
1052
  }