@revikornmann/muka-ui 0.15.0 → 0.17.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.
- package/build/manifest.json +10 -0
- package/dist/cjs/components/BottomBar/BottomBar.css +19 -4
- package/dist/cjs/components/ChatComposer/ChatComposer.js +12 -4
- package/dist/cjs/components/ChatComposer/ChatComposer.js.map +1 -1
- package/dist/cjs/components/ChatMessage/ChatMessage.css +7 -1
- package/dist/cjs/components/ChatMessage/ChatMessage.js.map +1 -1
- package/dist/cjs/components/ChatMessageList/ChatMessageList.css +1 -1
- package/dist/cjs/components/Combobox/Combobox.css +59 -1
- package/dist/cjs/components/Combobox/Combobox.js +22 -3
- package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
- package/dist/cjs/components/EmojiPicker/EmojiPicker.css +19 -0
- package/dist/cjs/components/EmojiPicker/EmojiPicker.js +54 -0
- package/dist/cjs/components/EmojiPicker/EmojiPicker.js.map +1 -0
- package/dist/cjs/components/EmojiPicker/index.js +12 -0
- package/dist/cjs/components/EmojiPicker/index.js.map +1 -0
- package/dist/cjs/components/PhotoDraftStrip/PhotoDraftStrip.css +27 -0
- package/dist/cjs/components/PhotoDraftStrip/PhotoDraftStrip.js +36 -0
- package/dist/cjs/components/PhotoDraftStrip/PhotoDraftStrip.js.map +1 -0
- package/dist/cjs/components/PhotoDraftStrip/index.js +11 -0
- package/dist/cjs/components/PhotoDraftStrip/index.js.map +1 -0
- package/dist/cjs/components/RecordingBar/RecordingBar.css +47 -0
- package/dist/cjs/components/RecordingBar/RecordingBar.js +22 -0
- package/dist/cjs/components/RecordingBar/RecordingBar.js.map +1 -0
- package/dist/cjs/components/RecordingBar/index.js +11 -0
- package/dist/cjs/components/RecordingBar/index.js.map +1 -0
- package/dist/cjs/components/SearchInput/SearchInput.js +7 -2
- package/dist/cjs/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/cjs/components/TextLink/TextLink.css +79 -0
- package/dist/cjs/components/TextLink/TextLink.js +28 -0
- package/dist/cjs/components/TextLink/TextLink.js.map +1 -0
- package/dist/cjs/components/TextLink/index.js +11 -0
- package/dist/cjs/components/TextLink/index.js.map +1 -0
- package/dist/cjs/components/VoiceMessage/VoiceMessage.css +29 -0
- package/dist/cjs/components/VoiceMessage/VoiceMessage.js +85 -0
- package/dist/cjs/components/VoiceMessage/VoiceMessage.js.map +1 -0
- package/dist/cjs/components/VoiceMessage/index.js +11 -0
- package/dist/cjs/components/VoiceMessage/index.js.map +1 -0
- package/dist/cjs/components/VoiceRecorder/audio.js +61 -0
- package/dist/cjs/components/VoiceRecorder/audio.js.map +1 -0
- package/dist/cjs/components/VoiceRecorder/index.js +16 -0
- package/dist/cjs/components/VoiceRecorder/index.js.map +1 -0
- package/dist/cjs/components/VoiceRecorder/useVoiceRecorder.js +213 -0
- package/dist/cjs/components/VoiceRecorder/useVoiceRecorder.js.map +1 -0
- package/dist/cjs/components/Waveform/Waveform.css +23 -0
- package/dist/cjs/components/Waveform/Waveform.js +36 -0
- package/dist/cjs/components/Waveform/Waveform.js.map +1 -0
- package/dist/cjs/components/Waveform/index.js +11 -0
- package/dist/cjs/components/Waveform/index.js.map +1 -0
- package/dist/cjs/components/index.js +20 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/esm/components/BottomBar/BottomBar.css +19 -4
- package/dist/esm/components/ChatComposer/ChatComposer.js +12 -4
- package/dist/esm/components/ChatComposer/ChatComposer.js.map +1 -1
- package/dist/esm/components/ChatMessage/ChatMessage.css +7 -1
- package/dist/esm/components/ChatMessage/ChatMessage.js.map +1 -1
- package/dist/esm/components/ChatMessageList/ChatMessageList.css +1 -1
- package/dist/esm/components/Combobox/Combobox.css +59 -1
- package/dist/esm/components/Combobox/Combobox.js +23 -4
- package/dist/esm/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/EmojiPicker/EmojiPicker.css +19 -0
- package/dist/esm/components/EmojiPicker/EmojiPicker.js +50 -0
- package/dist/esm/components/EmojiPicker/EmojiPicker.js.map +1 -0
- package/dist/esm/components/EmojiPicker/index.js +3 -0
- package/dist/esm/components/EmojiPicker/index.js.map +1 -0
- package/dist/esm/components/PhotoDraftStrip/PhotoDraftStrip.css +27 -0
- package/dist/esm/components/PhotoDraftStrip/PhotoDraftStrip.js +32 -0
- package/dist/esm/components/PhotoDraftStrip/PhotoDraftStrip.js.map +1 -0
- package/dist/esm/components/PhotoDraftStrip/index.js +3 -0
- package/dist/esm/components/PhotoDraftStrip/index.js.map +1 -0
- package/dist/esm/components/RecordingBar/RecordingBar.css +47 -0
- package/dist/esm/components/RecordingBar/RecordingBar.js +18 -0
- package/dist/esm/components/RecordingBar/RecordingBar.js.map +1 -0
- package/dist/esm/components/RecordingBar/index.js +3 -0
- package/dist/esm/components/RecordingBar/index.js.map +1 -0
- package/dist/esm/components/SearchInput/SearchInput.js +7 -2
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/TextLink/TextLink.css +79 -0
- package/dist/esm/components/TextLink/TextLink.js +24 -0
- package/dist/esm/components/TextLink/TextLink.js.map +1 -0
- package/dist/esm/components/TextLink/index.js +3 -0
- package/dist/esm/components/TextLink/index.js.map +1 -0
- package/dist/esm/components/VoiceMessage/VoiceMessage.css +29 -0
- package/dist/esm/components/VoiceMessage/VoiceMessage.js +81 -0
- package/dist/esm/components/VoiceMessage/VoiceMessage.js.map +1 -0
- package/dist/esm/components/VoiceMessage/index.js +3 -0
- package/dist/esm/components/VoiceMessage/index.js.map +1 -0
- package/dist/esm/components/VoiceRecorder/audio.js +55 -0
- package/dist/esm/components/VoiceRecorder/audio.js.map +1 -0
- package/dist/esm/components/VoiceRecorder/index.js +4 -0
- package/dist/esm/components/VoiceRecorder/index.js.map +1 -0
- package/dist/esm/components/VoiceRecorder/useVoiceRecorder.js +210 -0
- package/dist/esm/components/VoiceRecorder/useVoiceRecorder.js.map +1 -0
- package/dist/esm/components/Waveform/Waveform.css +23 -0
- package/dist/esm/components/Waveform/Waveform.js +32 -0
- package/dist/esm/components/Waveform/Waveform.js.map +1 -0
- package/dist/esm/components/Waveform/index.js +3 -0
- package/dist/esm/components/Waveform/index.js.map +1 -0
- package/dist/esm/components/index.js +7 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/styles/components/BottomBar.css +19 -4
- package/dist/styles/components/ChatMessage.css +7 -1
- package/dist/styles/components/ChatMessageList.css +1 -1
- package/dist/styles/components/Combobox.css +59 -1
- package/dist/styles/components/EmojiPicker.css +19 -0
- package/dist/styles/components/PhotoDraftStrip.css +27 -0
- package/dist/styles/components/RecordingBar.css +47 -0
- package/dist/styles/components/TextLink.css +79 -0
- package/dist/styles/components/VoiceMessage.css +29 -0
- package/dist/styles/components/Waveform.css +23 -0
- package/dist/styles/index.css +373 -50
- package/dist/styles/muka-dark.css +373 -50
- package/dist/styles/muka-light.css +373 -50
- package/dist/styles/tokens-bouwplan-dark.css +4 -2
- package/dist/styles/tokens-bouwplan-light.css +4 -2
- package/dist/styles/tokens-fscl-dark.css +4 -2
- package/dist/styles/tokens-fscl-light.css +4 -2
- package/dist/styles/tokens-grip-dark.css +4 -2
- package/dist/styles/tokens-grip-light.css +4 -2
- package/dist/styles/tokens-muka-dark.css +4 -2
- package/dist/styles/tokens-muka-light.css +4 -2
- package/dist/styles/tokens-wireframe-dark.css +4 -2
- package/dist/styles/tokens-wireframe-light.css +4 -2
- package/dist/styles/wireframe-dark.css +373 -50
- package/dist/styles/wireframe-light.css +373 -50
- package/dist/types/components/ChatComposer/ChatComposer.d.ts +7 -0
- package/dist/types/components/ChatComposer/ChatComposer.d.ts.map +1 -1
- package/dist/types/components/ChatMessage/ChatMessage.d.ts +4 -1
- package/dist/types/components/ChatMessage/ChatMessage.d.ts.map +1 -1
- package/dist/types/components/Combobox/Combobox.d.ts +7 -0
- package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/EmojiPicker/EmojiPicker.d.ts +28 -0
- package/dist/types/components/EmojiPicker/EmojiPicker.d.ts.map +1 -0
- package/dist/types/components/EmojiPicker/index.d.ts +3 -0
- package/dist/types/components/EmojiPicker/index.d.ts.map +1 -0
- package/dist/types/components/PhotoDraftStrip/PhotoDraftStrip.d.ts +51 -0
- package/dist/types/components/PhotoDraftStrip/PhotoDraftStrip.d.ts.map +1 -0
- package/dist/types/components/PhotoDraftStrip/index.d.ts +3 -0
- package/dist/types/components/PhotoDraftStrip/index.d.ts.map +1 -0
- package/dist/types/components/RecordingBar/RecordingBar.d.ts +22 -0
- package/dist/types/components/RecordingBar/RecordingBar.d.ts.map +1 -0
- package/dist/types/components/RecordingBar/index.d.ts +3 -0
- package/dist/types/components/RecordingBar/index.d.ts.map +1 -0
- package/dist/types/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/types/components/TextLink/TextLink.d.ts +30 -0
- package/dist/types/components/TextLink/TextLink.d.ts.map +1 -0
- package/dist/types/components/TextLink/index.d.ts +3 -0
- package/dist/types/components/TextLink/index.d.ts.map +1 -0
- package/dist/types/components/VoiceMessage/VoiceMessage.d.ts +34 -0
- package/dist/types/components/VoiceMessage/VoiceMessage.d.ts.map +1 -0
- package/dist/types/components/VoiceMessage/index.d.ts +3 -0
- package/dist/types/components/VoiceMessage/index.d.ts.map +1 -0
- package/dist/types/components/VoiceRecorder/audio.d.ts +20 -0
- package/dist/types/components/VoiceRecorder/audio.d.ts.map +1 -0
- package/dist/types/components/VoiceRecorder/index.d.ts +4 -0
- package/dist/types/components/VoiceRecorder/index.d.ts.map +1 -0
- package/dist/types/components/VoiceRecorder/useVoiceRecorder.d.ts +48 -0
- package/dist/types/components/VoiceRecorder/useVoiceRecorder.d.ts.map +1 -0
- package/dist/types/components/Waveform/Waveform.d.ts +31 -0
- package/dist/types/components/Waveform/Waveform.d.ts.map +1 -0
- package/dist/types/components/Waveform/index.d.ts +3 -0
- package/dist/types/components/Waveform/index.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +7 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/tokens/t4-components/bottombar.json +2 -1
- package/tokens/t4-components/chat.json +15 -0
- package/tokens/t4-components/chatbubble.json +7 -1
package/dist/styles/index.css
CHANGED
|
@@ -1694,7 +1694,9 @@ body {
|
|
|
1694
1694
|
--card-border-hover: 0.0625rem solid #d0cdd7;
|
|
1695
1695
|
--card-border-pressed: 0.125rem solid #3e63dd;
|
|
1696
1696
|
--card-border-selected: 0.125rem solid #3e63dd;
|
|
1697
|
-
--
|
|
1697
|
+
--chat-column-max-width: 768px;
|
|
1698
|
+
--chatbubble-max-width: 37rem;
|
|
1699
|
+
--chatbubble-max-width-ratio: 77%;
|
|
1698
1700
|
--chatbubble-radius: 0.75rem;
|
|
1699
1701
|
--chatbubble-padding-block: 0.75rem;
|
|
1700
1702
|
--chatbubble-padding-inline: 1rem;
|
|
@@ -2117,7 +2119,7 @@ body {
|
|
|
2117
2119
|
--bottombar-floating-backdrop-start: transparent;
|
|
2118
2120
|
--bottombar-floating-backdrop-end: rgba(0, 0, 0, 0.027);
|
|
2119
2121
|
--bottombar-floating-padding-top: 2rem;
|
|
2120
|
-
--bottombar-chat-max-width:
|
|
2122
|
+
--bottombar-chat-max-width: 768px;
|
|
2121
2123
|
--bottombar-chat-padding: 0.75rem;
|
|
2122
2124
|
--bottombar-tab-icon-size: 24px;
|
|
2123
2125
|
--bottombar-tab-gap: 0.25rem;
|
|
@@ -2389,6 +2391,64 @@ body {
|
|
|
2389
2391
|
|
|
2390
2392
|
|
|
2391
2393
|
/* ========== Component Styles ========== */
|
|
2394
|
+
/* Waveform */
|
|
2395
|
+
/* Waveform Component Styles */
|
|
2396
|
+
|
|
2397
|
+
/*
|
|
2398
|
+
* A row of amplitude bars. Muka ships no audio/waveform primitive; this is
|
|
2399
|
+
* drawn from color + spacing tokens only. Bar height (per-peak magnitude) and
|
|
2400
|
+
* the played/unplayed color split are data-driven, so they arrive as inline
|
|
2401
|
+
* styles from the component; everything else is tokenized here.
|
|
2402
|
+
*/
|
|
2403
|
+
.muka-waveform {
|
|
2404
|
+
display: flex;
|
|
2405
|
+
align-items: center;
|
|
2406
|
+
gap: var(--spacing-05, 2px);
|
|
2407
|
+
width: 100%;
|
|
2408
|
+
min-width: 0;
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2411
|
+
.muka-waveform__bar {
|
|
2412
|
+
flex: 1 1 0;
|
|
2413
|
+
min-width: 2px;
|
|
2414
|
+
max-width: 4px;
|
|
2415
|
+
border-radius: var(--radius-full, 9999px);
|
|
2416
|
+
background: var(--color-border-contrast);
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
/* VoiceMessage */
|
|
2421
|
+
/* VoiceMessage Component Styles */
|
|
2422
|
+
|
|
2423
|
+
.muka-voice-message {
|
|
2424
|
+
display: flex;
|
|
2425
|
+
align-items: center;
|
|
2426
|
+
gap: var(--spacing-3);
|
|
2427
|
+
width: 100%;
|
|
2428
|
+
min-width: min(16rem, 60vw);
|
|
2429
|
+
}
|
|
2430
|
+
|
|
2431
|
+
.muka-voice-message__wave {
|
|
2432
|
+
flex: 1 1 auto;
|
|
2433
|
+
min-width: 0;
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
.muka-voice-message__time {
|
|
2437
|
+
flex: 0 0 auto;
|
|
2438
|
+
white-space: nowrap;
|
|
2439
|
+
font-size: var(--text-label-sm-fontSize, 0.75rem);
|
|
2440
|
+
line-height: var(--text-label-sm-lineHeight, 1);
|
|
2441
|
+
font-variant-numeric: tabular-nums;
|
|
2442
|
+
color: var(--color-text-subtle-default);
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
/* On the tinted own bubble the surface is the action color, so the timer flips
|
|
2446
|
+
* to the inverse text token for contrast. */
|
|
2447
|
+
.muka-voice-message--own .muka-voice-message__time {
|
|
2448
|
+
color: var(--color-text-default-inverse);
|
|
2449
|
+
}
|
|
2450
|
+
|
|
2451
|
+
|
|
2392
2452
|
/* View */
|
|
2393
2453
|
/* View Component Styles */
|
|
2394
2454
|
|
|
@@ -3809,6 +3869,88 @@ body {
|
|
|
3809
3869
|
}
|
|
3810
3870
|
|
|
3811
3871
|
|
|
3872
|
+
/* TextLink */
|
|
3873
|
+
/* TextLink Component Styles - Using Muka Design Tokens */
|
|
3874
|
+
|
|
3875
|
+
.muka-text-link {
|
|
3876
|
+
display: inline;
|
|
3877
|
+
cursor: pointer;
|
|
3878
|
+
text-decoration: underline;
|
|
3879
|
+
/* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
|
|
3880
|
+
text-underline-offset: 0.2em;
|
|
3881
|
+
text-decoration-thickness: from-font;
|
|
3882
|
+
/* Rounds the focus ring's corners; the link itself has no visible box. */
|
|
3883
|
+
border-radius: var(--border-radius-sm);
|
|
3884
|
+
transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
|
|
3885
|
+
}
|
|
3886
|
+
|
|
3887
|
+
/* ─── Sizes ───────────────────────────────────────────────
|
|
3888
|
+
Mirrors the body text scale so a link matches the copy it sits in. */
|
|
3889
|
+
.muka-text-link--sm {
|
|
3890
|
+
font-family: var(--text-body-sm-regular-fontFamily);
|
|
3891
|
+
font-weight: var(--text-body-sm-regular-fontWeight);
|
|
3892
|
+
font-size: var(--text-body-sm-regular-fontSize);
|
|
3893
|
+
line-height: var(--text-body-sm-regular-lineHeight);
|
|
3894
|
+
}
|
|
3895
|
+
|
|
3896
|
+
.muka-text-link--base {
|
|
3897
|
+
font-family: var(--text-body-base-regular-fontFamily);
|
|
3898
|
+
font-weight: var(--text-body-base-regular-fontWeight);
|
|
3899
|
+
font-size: var(--text-body-base-regular-fontSize);
|
|
3900
|
+
line-height: var(--text-body-base-regular-lineHeight);
|
|
3901
|
+
}
|
|
3902
|
+
|
|
3903
|
+
.muka-text-link--lg {
|
|
3904
|
+
font-family: var(--text-body-lg-regular-fontFamily);
|
|
3905
|
+
font-weight: var(--text-body-lg-regular-fontWeight);
|
|
3906
|
+
font-size: var(--text-body-lg-regular-fontSize);
|
|
3907
|
+
line-height: var(--text-body-lg-regular-lineHeight);
|
|
3908
|
+
}
|
|
3909
|
+
|
|
3910
|
+
/* ─── Variant: default (accent) ───────────────────────────
|
|
3911
|
+
Visited repeats the default colour on purpose: the design treats visited and
|
|
3912
|
+
default the same, and pinning it stops the browser's purple from showing. */
|
|
3913
|
+
.muka-text-link--default,
|
|
3914
|
+
.muka-text-link--default:visited {
|
|
3915
|
+
color: var(--color-text-action-default);
|
|
3916
|
+
}
|
|
3917
|
+
|
|
3918
|
+
.muka-text-link--default:hover,
|
|
3919
|
+
.muka-text-link--default:focus-visible {
|
|
3920
|
+
color: var(--color-text-action-hover);
|
|
3921
|
+
}
|
|
3922
|
+
|
|
3923
|
+
.muka-text-link--default:active {
|
|
3924
|
+
color: var(--color-text-action-pressed);
|
|
3925
|
+
}
|
|
3926
|
+
|
|
3927
|
+
/* ─── Variant: subtle (neutral) ───────────────────────────
|
|
3928
|
+
Hover, focus and pressed all darken to the default text colour. */
|
|
3929
|
+
.muka-text-link--subtle,
|
|
3930
|
+
.muka-text-link--subtle:visited {
|
|
3931
|
+
color: var(--color-text-subtle-default);
|
|
3932
|
+
}
|
|
3933
|
+
|
|
3934
|
+
.muka-text-link--subtle:hover,
|
|
3935
|
+
.muka-text-link--subtle:focus-visible,
|
|
3936
|
+
.muka-text-link--subtle:active {
|
|
3937
|
+
color: var(--color-text-default-default);
|
|
3938
|
+
}
|
|
3939
|
+
|
|
3940
|
+
/* ─── Focus ───────────────────────────────────────────────
|
|
3941
|
+
Same ring as every other focusable Muka component. */
|
|
3942
|
+
.muka-text-link:focus-visible {
|
|
3943
|
+
outline: 2px solid var(--color-border-focus);
|
|
3944
|
+
outline-offset: 2px;
|
|
3945
|
+
}
|
|
3946
|
+
|
|
3947
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3948
|
+
.muka-text-link {
|
|
3949
|
+
transition: none;
|
|
3950
|
+
}
|
|
3951
|
+
}
|
|
3952
|
+
|
|
3953
|
+
|
|
3812
3954
|
/* Tabs */
|
|
3813
3955
|
/* Tabs Component Styles - Clean underline style tabs matching Figma */
|
|
3814
3956
|
|
|
@@ -5520,6 +5662,56 @@ body {
|
|
|
5520
5662
|
}
|
|
5521
5663
|
|
|
5522
5664
|
|
|
5665
|
+
/* RecordingBar */
|
|
5666
|
+
/* RecordingBar Component Styles */
|
|
5667
|
+
|
|
5668
|
+
.muka-recording-bar {
|
|
5669
|
+
display: flex;
|
|
5670
|
+
align-items: center;
|
|
5671
|
+
gap: var(--spacing-3);
|
|
5672
|
+
width: 100%;
|
|
5673
|
+
min-width: 0;
|
|
5674
|
+
}
|
|
5675
|
+
|
|
5676
|
+
.muka-recording-bar__dot {
|
|
5677
|
+
flex: 0 0 auto;
|
|
5678
|
+
width: 0.625rem;
|
|
5679
|
+
height: 0.625rem;
|
|
5680
|
+
border-radius: var(--radius-full, 9999px);
|
|
5681
|
+
background: var(--alert-color-error-accent, var(--color-text-default-default));
|
|
5682
|
+
animation: muka-recording-bar-pulse 1s ease-in-out infinite;
|
|
5683
|
+
}
|
|
5684
|
+
|
|
5685
|
+
.muka-recording-bar__time {
|
|
5686
|
+
flex: 0 0 auto;
|
|
5687
|
+
font-size: var(--text-label-sm-fontSize, 0.75rem);
|
|
5688
|
+
line-height: var(--text-label-sm-lineHeight, 1);
|
|
5689
|
+
font-variant-numeric: tabular-nums;
|
|
5690
|
+
color: var(--color-text-default-default);
|
|
5691
|
+
}
|
|
5692
|
+
|
|
5693
|
+
.muka-recording-bar__wave {
|
|
5694
|
+
flex: 1 1 auto;
|
|
5695
|
+
min-width: 0;
|
|
5696
|
+
}
|
|
5697
|
+
|
|
5698
|
+
@keyframes muka-recording-bar-pulse {
|
|
5699
|
+
0%,
|
|
5700
|
+
100% {
|
|
5701
|
+
opacity: 1;
|
|
5702
|
+
}
|
|
5703
|
+
50% {
|
|
5704
|
+
opacity: 0.3;
|
|
5705
|
+
}
|
|
5706
|
+
}
|
|
5707
|
+
|
|
5708
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5709
|
+
.muka-recording-bar__dot {
|
|
5710
|
+
animation: none;
|
|
5711
|
+
}
|
|
5712
|
+
}
|
|
5713
|
+
|
|
5714
|
+
|
|
5523
5715
|
/* RangeSlider */
|
|
5524
5716
|
/* RangeSlider Component Styles - Using Muka Design Tokens */
|
|
5525
5717
|
|
|
@@ -7072,33 +7264,33 @@ body {
|
|
|
7072
7264
|
}
|
|
7073
7265
|
|
|
7074
7266
|
|
|
7075
|
-
/*
|
|
7076
|
-
/*
|
|
7077
|
-
/* Only the prefix/suffix affixes are NumberInput-specific. */
|
|
7267
|
+
/* PhotoDraftStrip */
|
|
7268
|
+
/* PhotoDraftStrip Component Styles */
|
|
7078
7269
|
|
|
7079
|
-
.muka-
|
|
7080
|
-
display:
|
|
7270
|
+
.muka-photo-draft-strip {
|
|
7271
|
+
display: flex;
|
|
7081
7272
|
align-items: center;
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
|
|
7085
|
-
font-size: var(--text-input-md-fontSize);
|
|
7086
|
-
line-height: var(--text-input-md-lineHeight);
|
|
7087
|
-
user-select: none;
|
|
7088
|
-
pointer-events: none;
|
|
7089
|
-
white-space: nowrap;
|
|
7273
|
+
gap: var(--spacing-3);
|
|
7274
|
+
width: 100%;
|
|
7275
|
+
padding: var(--spacing-2) 0;
|
|
7090
7276
|
}
|
|
7091
7277
|
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7278
|
+
.muka-photo-draft-strip__track {
|
|
7279
|
+
display: flex;
|
|
7280
|
+
gap: var(--spacing-2);
|
|
7281
|
+
flex: 1 1 auto;
|
|
7282
|
+
min-width: 0;
|
|
7283
|
+
overflow-x: auto;
|
|
7284
|
+
scroll-behavior: smooth;
|
|
7285
|
+
scrollbar-width: none;
|
|
7097
7286
|
}
|
|
7098
7287
|
|
|
7099
|
-
.muka-
|
|
7100
|
-
|
|
7101
|
-
|
|
7288
|
+
.muka-photo-draft-strip__track::-webkit-scrollbar {
|
|
7289
|
+
display: none;
|
|
7290
|
+
}
|
|
7291
|
+
|
|
7292
|
+
.muka-photo-draft-strip__item {
|
|
7293
|
+
flex: 0 0 auto;
|
|
7102
7294
|
}
|
|
7103
7295
|
|
|
7104
7296
|
|
|
@@ -7204,6 +7396,36 @@ body {
|
|
|
7204
7396
|
}
|
|
7205
7397
|
|
|
7206
7398
|
|
|
7399
|
+
/* NumberInput */
|
|
7400
|
+
/* NumberInput — reuses Input field styles (../Input/Input.css). */
|
|
7401
|
+
/* Only the prefix/suffix affixes are NumberInput-specific. */
|
|
7402
|
+
|
|
7403
|
+
.muka-numberinput__addon {
|
|
7404
|
+
display: inline-flex;
|
|
7405
|
+
align-items: center;
|
|
7406
|
+
flex: none;
|
|
7407
|
+
color: var(--color-text-subtle-default);
|
|
7408
|
+
font-family: var(--text-input-md-fontFamily);
|
|
7409
|
+
font-size: var(--text-input-md-fontSize);
|
|
7410
|
+
line-height: var(--text-input-md-lineHeight);
|
|
7411
|
+
user-select: none;
|
|
7412
|
+
pointer-events: none;
|
|
7413
|
+
white-space: nowrap;
|
|
7414
|
+
}
|
|
7415
|
+
|
|
7416
|
+
/* Hide the native number spinners — affixes/step API replace them. */
|
|
7417
|
+
.muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
|
|
7418
|
+
.muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
|
|
7419
|
+
-webkit-appearance: none;
|
|
7420
|
+
margin: 0;
|
|
7421
|
+
}
|
|
7422
|
+
|
|
7423
|
+
.muka-numberinput__field .muka-input__native {
|
|
7424
|
+
-moz-appearance: textfield;
|
|
7425
|
+
appearance: textfield;
|
|
7426
|
+
}
|
|
7427
|
+
|
|
7428
|
+
|
|
7207
7429
|
/* NavigationTransition */
|
|
7208
7430
|
/* NavigationTransition Component Styles */
|
|
7209
7431
|
|
|
@@ -8159,26 +8381,6 @@ li.muka-listitem {
|
|
|
8159
8381
|
}
|
|
8160
8382
|
|
|
8161
8383
|
|
|
8162
|
-
/* Form */
|
|
8163
|
-
.muka-form {
|
|
8164
|
-
display: flex;
|
|
8165
|
-
flex-direction: column;
|
|
8166
|
-
width: 100%;
|
|
8167
|
-
}
|
|
8168
|
-
|
|
8169
|
-
.muka-form--gap-sm {
|
|
8170
|
-
gap: var(--size-sm);
|
|
8171
|
-
}
|
|
8172
|
-
|
|
8173
|
-
.muka-form--gap-md {
|
|
8174
|
-
gap: var(--size-md);
|
|
8175
|
-
}
|
|
8176
|
-
|
|
8177
|
-
.muka-form--gap-lg {
|
|
8178
|
-
gap: var(--size-lg);
|
|
8179
|
-
}
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
8384
|
/* Icon */
|
|
8183
8385
|
/* Icon Component Styles - Using Muka Design Tokens */
|
|
8184
8386
|
|
|
@@ -8233,6 +8435,26 @@ li.muka-listitem {
|
|
|
8233
8435
|
}
|
|
8234
8436
|
|
|
8235
8437
|
|
|
8438
|
+
/* Form */
|
|
8439
|
+
.muka-form {
|
|
8440
|
+
display: flex;
|
|
8441
|
+
flex-direction: column;
|
|
8442
|
+
width: 100%;
|
|
8443
|
+
}
|
|
8444
|
+
|
|
8445
|
+
.muka-form--gap-sm {
|
|
8446
|
+
gap: var(--size-sm);
|
|
8447
|
+
}
|
|
8448
|
+
|
|
8449
|
+
.muka-form--gap-md {
|
|
8450
|
+
gap: var(--size-md);
|
|
8451
|
+
}
|
|
8452
|
+
|
|
8453
|
+
.muka-form--gap-lg {
|
|
8454
|
+
gap: var(--size-lg);
|
|
8455
|
+
}
|
|
8456
|
+
|
|
8457
|
+
|
|
8236
8458
|
/* FileUpload */
|
|
8237
8459
|
/* FileUpload Component Styles */
|
|
8238
8460
|
|
|
@@ -8777,6 +8999,28 @@ li.muka-listitem {
|
|
|
8777
8999
|
}
|
|
8778
9000
|
|
|
8779
9001
|
|
|
9002
|
+
/* EmojiPicker */
|
|
9003
|
+
/* EmojiPicker Component Styles */
|
|
9004
|
+
|
|
9005
|
+
.muka-emoji-picker {
|
|
9006
|
+
display: grid;
|
|
9007
|
+
grid-template-columns: repeat(8, 1fr);
|
|
9008
|
+
gap: var(--spacing-1);
|
|
9009
|
+
padding: var(--spacing-2);
|
|
9010
|
+
max-height: 12rem;
|
|
9011
|
+
overflow-y: auto;
|
|
9012
|
+
background: var(--color-surface-level2);
|
|
9013
|
+
border: var(--border-width-regular, 1px) solid var(--color-border-default);
|
|
9014
|
+
border-radius: var(--radius-lg);
|
|
9015
|
+
box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
|
|
9016
|
+
}
|
|
9017
|
+
|
|
9018
|
+
.muka-emoji-picker__glyph {
|
|
9019
|
+
font-size: 1.25rem;
|
|
9020
|
+
line-height: 1;
|
|
9021
|
+
}
|
|
9022
|
+
|
|
9023
|
+
|
|
8780
9024
|
/* Drawer */
|
|
8781
9025
|
/* Drawer Component Styles */
|
|
8782
9026
|
|
|
@@ -10153,6 +10397,19 @@ li.muka-listitem {
|
|
|
10153
10397
|
/* Combobox */
|
|
10154
10398
|
/* Combobox Component Styles */
|
|
10155
10399
|
|
|
10400
|
+
/* ─── Trigger group (positioning context for the trailing controls) ── */
|
|
10401
|
+
|
|
10402
|
+
/*
|
|
10403
|
+
* The clear control is a sibling of the trigger, not a child (a <button> may
|
|
10404
|
+
* not contain interactive content), so it is overlaid on the trigger's trailing
|
|
10405
|
+
* padding. The trigger reserves that space with padding-right below.
|
|
10406
|
+
*/
|
|
10407
|
+
.muka-combobox__trigger-group {
|
|
10408
|
+
position: relative;
|
|
10409
|
+
display: block;
|
|
10410
|
+
width: 100%;
|
|
10411
|
+
}
|
|
10412
|
+
|
|
10156
10413
|
/* ─── Trigger (looks like an Input field, behaves like a button) ── */
|
|
10157
10414
|
|
|
10158
10415
|
.muka-combobox {
|
|
@@ -10160,7 +10417,7 @@ li.muka-listitem {
|
|
|
10160
10417
|
align-items: center;
|
|
10161
10418
|
gap: var(--spacing-2);
|
|
10162
10419
|
width: 100%;
|
|
10163
|
-
padding: 0 var(--input-field-padding-x);
|
|
10420
|
+
padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
|
|
10164
10421
|
background-color: var(--input-field-color-default-background);
|
|
10165
10422
|
border: var(--border-width-regular) solid var(--input-field-color-default-border);
|
|
10166
10423
|
color: var(--color-text-default-default);
|
|
@@ -10172,6 +10429,19 @@ li.muka-listitem {
|
|
|
10172
10429
|
line-height: var(--text-body-md-regular-lineHeight);
|
|
10173
10430
|
-webkit-tap-highlight-color: transparent;
|
|
10174
10431
|
transition: border-color 0.12s ease;
|
|
10432
|
+
|
|
10433
|
+
/* Room for the chevron overlaid on the trailing edge. */
|
|
10434
|
+
--muka-combobox-trailing-space: calc(
|
|
10435
|
+
var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
|
|
10436
|
+
);
|
|
10437
|
+
}
|
|
10438
|
+
|
|
10439
|
+
/* …and for the clear button next to it, when one is rendered. */
|
|
10440
|
+
.muka-combobox--clearable {
|
|
10441
|
+
--muka-combobox-trailing-space: calc(
|
|
10442
|
+
var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
|
|
10443
|
+
var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
|
|
10444
|
+
);
|
|
10175
10445
|
}
|
|
10176
10446
|
|
|
10177
10447
|
.muka-combobox--sm {
|
|
@@ -10224,6 +10494,23 @@ li.muka-listitem {
|
|
|
10224
10494
|
text-overflow: ellipsis;
|
|
10225
10495
|
}
|
|
10226
10496
|
|
|
10497
|
+
/* ─── Trailing controls (clear + chevron) ─────────────── */
|
|
10498
|
+
|
|
10499
|
+
.muka-combobox__actions {
|
|
10500
|
+
position: absolute;
|
|
10501
|
+
top: 0;
|
|
10502
|
+
right: var(--input-field-padding-x);
|
|
10503
|
+
height: 100%;
|
|
10504
|
+
display: flex;
|
|
10505
|
+
align-items: center;
|
|
10506
|
+
gap: var(--spacing-2);
|
|
10507
|
+
/*
|
|
10508
|
+
* The strip sits on top of the trigger, so it must not swallow taps meant to
|
|
10509
|
+
* open the picker. Only the clear button takes pointer events back.
|
|
10510
|
+
*/
|
|
10511
|
+
pointer-events: none;
|
|
10512
|
+
}
|
|
10513
|
+
|
|
10227
10514
|
.muka-combobox__clear,
|
|
10228
10515
|
.muka-combobox__chevron {
|
|
10229
10516
|
display: inline-flex;
|
|
@@ -10234,9 +10521,13 @@ li.muka-listitem {
|
|
|
10234
10521
|
}
|
|
10235
10522
|
|
|
10236
10523
|
.muka-combobox__clear {
|
|
10524
|
+
pointer-events: auto;
|
|
10237
10525
|
cursor: pointer;
|
|
10238
10526
|
padding: var(--spacing-1);
|
|
10527
|
+
border: none;
|
|
10528
|
+
background: none;
|
|
10239
10529
|
border-radius: var(--radius-sm);
|
|
10530
|
+
-webkit-tap-highlight-color: transparent;
|
|
10240
10531
|
}
|
|
10241
10532
|
|
|
10242
10533
|
.muka-combobox__clear:hover {
|
|
@@ -10244,6 +10535,17 @@ li.muka-listitem {
|
|
|
10244
10535
|
background-color: var(--color-surface-level1);
|
|
10245
10536
|
}
|
|
10246
10537
|
|
|
10538
|
+
.muka-combobox__clear:focus-visible {
|
|
10539
|
+
outline: 2px solid var(--color-border-focus);
|
|
10540
|
+
outline-offset: 2px;
|
|
10541
|
+
color: var(--color-text-default-default);
|
|
10542
|
+
}
|
|
10543
|
+
|
|
10544
|
+
.muka-combobox--disabled ~ .muka-combobox__actions,
|
|
10545
|
+
.muka-combobox:disabled ~ .muka-combobox__actions {
|
|
10546
|
+
opacity: 0.5;
|
|
10547
|
+
}
|
|
10548
|
+
|
|
10247
10549
|
/* ─── Picker sheet body ───────────────────────────────── */
|
|
10248
10550
|
|
|
10249
10551
|
.muka-combobox__picker {
|
|
@@ -11053,7 +11355,7 @@ button.muka-chat-photo-grid__tile:focus-visible {
|
|
|
11053
11355
|
align-items: stretch;
|
|
11054
11356
|
gap: var(--spacing-8);
|
|
11055
11357
|
width: 100%;
|
|
11056
|
-
max-width: var(--
|
|
11358
|
+
max-width: var(--chat-column-max-width);
|
|
11057
11359
|
margin: 0 auto;
|
|
11058
11360
|
}
|
|
11059
11361
|
|
|
@@ -11139,7 +11441,13 @@ button.muka-chat-photo-grid__tile:focus-visible {
|
|
|
11139
11441
|
* no length measuring needed (Figma `Text length` on 5355:44091).
|
|
11140
11442
|
*/
|
|
11141
11443
|
width: fit-content;
|
|
11142
|
-
|
|
11444
|
+
/*
|
|
11445
|
+
* Stops short of the far edge at every width: the fixed cap once the
|
|
11446
|
+
* conversation column reaches its own cap, the ratio below that, where the
|
|
11447
|
+
* column runs full-bleed. Without that gap a long `own` bubble spans the
|
|
11448
|
+
* column and reads no differently from a `peer` one.
|
|
11449
|
+
*/
|
|
11450
|
+
max-width: min(var(--chatbubble-max-width), var(--chatbubble-max-width-ratio));
|
|
11143
11451
|
position: relative;
|
|
11144
11452
|
display: flex;
|
|
11145
11453
|
flex-direction: column;
|
|
@@ -12262,19 +12570,34 @@ button.muka-chat-photo-grid__tile:focus-visible {
|
|
|
12262
12570
|
|
|
12263
12571
|
.muka-bottombar--chat .muka-bottombar__content {
|
|
12264
12572
|
flex-direction: row;
|
|
12265
|
-
max-width: var(--bottombar-chat-max-width);
|
|
12266
12573
|
width: 100%;
|
|
12267
12574
|
margin: 0 auto;
|
|
12268
12575
|
}
|
|
12269
12576
|
|
|
12270
|
-
/*
|
|
12577
|
+
/*
|
|
12578
|
+
* `--bottombar-chat-max-width` is the conversation column (it derives from
|
|
12579
|
+
* `chat.column.max-width`, the same token `ChatMessageList` caps its column
|
|
12580
|
+
* with). The cap here carries the padding on top of it, so it is the
|
|
12581
|
+
* composer's own edges — not the padding around it — that land on the column.
|
|
12582
|
+
*/
|
|
12583
|
+
|
|
12584
|
+
/*
|
|
12585
|
+
* Docked chat pads its content; the floating card supplies its own padding.
|
|
12586
|
+
* The inline half is the section gutter `ChatMessageList` pads its scroller
|
|
12587
|
+
* with, so below the cap — where the column runs full-bleed — the composer
|
|
12588
|
+
* keeps to the same gutters as the messages.
|
|
12589
|
+
*/
|
|
12271
12590
|
.muka-bottombar--chat:not(.muka-bottombar--floating) .muka-bottombar__content {
|
|
12272
|
-
padding: var(--bottombar-chat-padding)
|
|
12591
|
+
padding: var(--bottombar-chat-padding)
|
|
12592
|
+
var(--section-padding-horizontal-default, var(--spacing-4));
|
|
12593
|
+
max-width: calc(
|
|
12594
|
+
var(--bottombar-chat-max-width) + 2 * var(--section-padding-horizontal-default, var(--spacing-4))
|
|
12595
|
+
);
|
|
12273
12596
|
}
|
|
12274
12597
|
|
|
12275
12598
|
/* Floating chat card widens to the chat cap (overrides the md default below). */
|
|
12276
12599
|
.muka-bottombar--chat.muka-bottombar--floating .muka-bottombar__content {
|
|
12277
|
-
max-width: var(--bottombar-chat-max-width);
|
|
12600
|
+
max-width: calc(var(--bottombar-chat-max-width) + 2 * var(--bottombar-floating-padding));
|
|
12278
12601
|
}
|
|
12279
12602
|
|
|
12280
12603
|
/* ─── Tab item ────────────────────────────────────────── */
|