@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
|
@@ -1661,7 +1661,9 @@ body {
|
|
|
1661
1661
|
--card-border-hover: 0.0625rem solid #bbbbbb;
|
|
1662
1662
|
--card-border-pressed: 0.125rem solid #113264;
|
|
1663
1663
|
--card-border-selected: 0.125rem solid #113264;
|
|
1664
|
-
--
|
|
1664
|
+
--chat-column-max-width: 768px;
|
|
1665
|
+
--chatbubble-max-width: 37rem;
|
|
1666
|
+
--chatbubble-max-width-ratio: 77%;
|
|
1665
1667
|
--chatbubble-radius: 0px;
|
|
1666
1668
|
--chatbubble-padding-block: 0.75rem;
|
|
1667
1669
|
--chatbubble-padding-inline: 1rem;
|
|
@@ -2084,7 +2086,7 @@ body {
|
|
|
2084
2086
|
--bottombar-floating-backdrop-start: transparent;
|
|
2085
2087
|
--bottombar-floating-backdrop-end: rgba(0, 0, 0, 0.027);
|
|
2086
2088
|
--bottombar-floating-padding-top: 2rem;
|
|
2087
|
-
--bottombar-chat-max-width:
|
|
2089
|
+
--bottombar-chat-max-width: 768px;
|
|
2088
2090
|
--bottombar-chat-padding: 0.75rem;
|
|
2089
2091
|
--bottombar-tab-icon-size: 24px;
|
|
2090
2092
|
--bottombar-tab-gap: 0.25rem;
|
|
@@ -2356,6 +2358,64 @@ body {
|
|
|
2356
2358
|
|
|
2357
2359
|
|
|
2358
2360
|
/* ========== Component Styles ========== */
|
|
2361
|
+
/* Waveform */
|
|
2362
|
+
/* Waveform Component Styles */
|
|
2363
|
+
|
|
2364
|
+
/*
|
|
2365
|
+
* A row of amplitude bars. Muka ships no audio/waveform primitive; this is
|
|
2366
|
+
* drawn from color + spacing tokens only. Bar height (per-peak magnitude) and
|
|
2367
|
+
* the played/unplayed color split are data-driven, so they arrive as inline
|
|
2368
|
+
* styles from the component; everything else is tokenized here.
|
|
2369
|
+
*/
|
|
2370
|
+
.muka-waveform {
|
|
2371
|
+
display: flex;
|
|
2372
|
+
align-items: center;
|
|
2373
|
+
gap: var(--spacing-05, 2px);
|
|
2374
|
+
width: 100%;
|
|
2375
|
+
min-width: 0;
|
|
2376
|
+
}
|
|
2377
|
+
|
|
2378
|
+
.muka-waveform__bar {
|
|
2379
|
+
flex: 1 1 0;
|
|
2380
|
+
min-width: 2px;
|
|
2381
|
+
max-width: 4px;
|
|
2382
|
+
border-radius: var(--radius-full, 9999px);
|
|
2383
|
+
background: var(--color-border-contrast);
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
/* VoiceMessage */
|
|
2388
|
+
/* VoiceMessage Component Styles */
|
|
2389
|
+
|
|
2390
|
+
.muka-voice-message {
|
|
2391
|
+
display: flex;
|
|
2392
|
+
align-items: center;
|
|
2393
|
+
gap: var(--spacing-3);
|
|
2394
|
+
width: 100%;
|
|
2395
|
+
min-width: min(16rem, 60vw);
|
|
2396
|
+
}
|
|
2397
|
+
|
|
2398
|
+
.muka-voice-message__wave {
|
|
2399
|
+
flex: 1 1 auto;
|
|
2400
|
+
min-width: 0;
|
|
2401
|
+
}
|
|
2402
|
+
|
|
2403
|
+
.muka-voice-message__time {
|
|
2404
|
+
flex: 0 0 auto;
|
|
2405
|
+
white-space: nowrap;
|
|
2406
|
+
font-size: var(--text-label-sm-fontSize, 0.75rem);
|
|
2407
|
+
line-height: var(--text-label-sm-lineHeight, 1);
|
|
2408
|
+
font-variant-numeric: tabular-nums;
|
|
2409
|
+
color: var(--color-text-subtle-default);
|
|
2410
|
+
}
|
|
2411
|
+
|
|
2412
|
+
/* On the tinted own bubble the surface is the action color, so the timer flips
|
|
2413
|
+
* to the inverse text token for contrast. */
|
|
2414
|
+
.muka-voice-message--own .muka-voice-message__time {
|
|
2415
|
+
color: var(--color-text-default-inverse);
|
|
2416
|
+
}
|
|
2417
|
+
|
|
2418
|
+
|
|
2359
2419
|
/* View */
|
|
2360
2420
|
/* View Component Styles */
|
|
2361
2421
|
|
|
@@ -3776,6 +3836,88 @@ body {
|
|
|
3776
3836
|
}
|
|
3777
3837
|
|
|
3778
3838
|
|
|
3839
|
+
/* TextLink */
|
|
3840
|
+
/* TextLink Component Styles - Using Muka Design Tokens */
|
|
3841
|
+
|
|
3842
|
+
.muka-text-link {
|
|
3843
|
+
display: inline;
|
|
3844
|
+
cursor: pointer;
|
|
3845
|
+
text-decoration: underline;
|
|
3846
|
+
/* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
|
|
3847
|
+
text-underline-offset: 0.2em;
|
|
3848
|
+
text-decoration-thickness: from-font;
|
|
3849
|
+
/* Rounds the focus ring's corners; the link itself has no visible box. */
|
|
3850
|
+
border-radius: var(--border-radius-sm);
|
|
3851
|
+
transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
|
|
3852
|
+
}
|
|
3853
|
+
|
|
3854
|
+
/* ─── Sizes ───────────────────────────────────────────────
|
|
3855
|
+
Mirrors the body text scale so a link matches the copy it sits in. */
|
|
3856
|
+
.muka-text-link--sm {
|
|
3857
|
+
font-family: var(--text-body-sm-regular-fontFamily);
|
|
3858
|
+
font-weight: var(--text-body-sm-regular-fontWeight);
|
|
3859
|
+
font-size: var(--text-body-sm-regular-fontSize);
|
|
3860
|
+
line-height: var(--text-body-sm-regular-lineHeight);
|
|
3861
|
+
}
|
|
3862
|
+
|
|
3863
|
+
.muka-text-link--base {
|
|
3864
|
+
font-family: var(--text-body-base-regular-fontFamily);
|
|
3865
|
+
font-weight: var(--text-body-base-regular-fontWeight);
|
|
3866
|
+
font-size: var(--text-body-base-regular-fontSize);
|
|
3867
|
+
line-height: var(--text-body-base-regular-lineHeight);
|
|
3868
|
+
}
|
|
3869
|
+
|
|
3870
|
+
.muka-text-link--lg {
|
|
3871
|
+
font-family: var(--text-body-lg-regular-fontFamily);
|
|
3872
|
+
font-weight: var(--text-body-lg-regular-fontWeight);
|
|
3873
|
+
font-size: var(--text-body-lg-regular-fontSize);
|
|
3874
|
+
line-height: var(--text-body-lg-regular-lineHeight);
|
|
3875
|
+
}
|
|
3876
|
+
|
|
3877
|
+
/* ─── Variant: default (accent) ───────────────────────────
|
|
3878
|
+
Visited repeats the default colour on purpose: the design treats visited and
|
|
3879
|
+
default the same, and pinning it stops the browser's purple from showing. */
|
|
3880
|
+
.muka-text-link--default,
|
|
3881
|
+
.muka-text-link--default:visited {
|
|
3882
|
+
color: var(--color-text-action-default);
|
|
3883
|
+
}
|
|
3884
|
+
|
|
3885
|
+
.muka-text-link--default:hover,
|
|
3886
|
+
.muka-text-link--default:focus-visible {
|
|
3887
|
+
color: var(--color-text-action-hover);
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3890
|
+
.muka-text-link--default:active {
|
|
3891
|
+
color: var(--color-text-action-pressed);
|
|
3892
|
+
}
|
|
3893
|
+
|
|
3894
|
+
/* ─── Variant: subtle (neutral) ───────────────────────────
|
|
3895
|
+
Hover, focus and pressed all darken to the default text colour. */
|
|
3896
|
+
.muka-text-link--subtle,
|
|
3897
|
+
.muka-text-link--subtle:visited {
|
|
3898
|
+
color: var(--color-text-subtle-default);
|
|
3899
|
+
}
|
|
3900
|
+
|
|
3901
|
+
.muka-text-link--subtle:hover,
|
|
3902
|
+
.muka-text-link--subtle:focus-visible,
|
|
3903
|
+
.muka-text-link--subtle:active {
|
|
3904
|
+
color: var(--color-text-default-default);
|
|
3905
|
+
}
|
|
3906
|
+
|
|
3907
|
+
/* ─── Focus ───────────────────────────────────────────────
|
|
3908
|
+
Same ring as every other focusable Muka component. */
|
|
3909
|
+
.muka-text-link:focus-visible {
|
|
3910
|
+
outline: 2px solid var(--color-border-focus);
|
|
3911
|
+
outline-offset: 2px;
|
|
3912
|
+
}
|
|
3913
|
+
|
|
3914
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3915
|
+
.muka-text-link {
|
|
3916
|
+
transition: none;
|
|
3917
|
+
}
|
|
3918
|
+
}
|
|
3919
|
+
|
|
3920
|
+
|
|
3779
3921
|
/* Tabs */
|
|
3780
3922
|
/* Tabs Component Styles - Clean underline style tabs matching Figma */
|
|
3781
3923
|
|
|
@@ -5487,6 +5629,56 @@ body {
|
|
|
5487
5629
|
}
|
|
5488
5630
|
|
|
5489
5631
|
|
|
5632
|
+
/* RecordingBar */
|
|
5633
|
+
/* RecordingBar Component Styles */
|
|
5634
|
+
|
|
5635
|
+
.muka-recording-bar {
|
|
5636
|
+
display: flex;
|
|
5637
|
+
align-items: center;
|
|
5638
|
+
gap: var(--spacing-3);
|
|
5639
|
+
width: 100%;
|
|
5640
|
+
min-width: 0;
|
|
5641
|
+
}
|
|
5642
|
+
|
|
5643
|
+
.muka-recording-bar__dot {
|
|
5644
|
+
flex: 0 0 auto;
|
|
5645
|
+
width: 0.625rem;
|
|
5646
|
+
height: 0.625rem;
|
|
5647
|
+
border-radius: var(--radius-full, 9999px);
|
|
5648
|
+
background: var(--alert-color-error-accent, var(--color-text-default-default));
|
|
5649
|
+
animation: muka-recording-bar-pulse 1s ease-in-out infinite;
|
|
5650
|
+
}
|
|
5651
|
+
|
|
5652
|
+
.muka-recording-bar__time {
|
|
5653
|
+
flex: 0 0 auto;
|
|
5654
|
+
font-size: var(--text-label-sm-fontSize, 0.75rem);
|
|
5655
|
+
line-height: var(--text-label-sm-lineHeight, 1);
|
|
5656
|
+
font-variant-numeric: tabular-nums;
|
|
5657
|
+
color: var(--color-text-default-default);
|
|
5658
|
+
}
|
|
5659
|
+
|
|
5660
|
+
.muka-recording-bar__wave {
|
|
5661
|
+
flex: 1 1 auto;
|
|
5662
|
+
min-width: 0;
|
|
5663
|
+
}
|
|
5664
|
+
|
|
5665
|
+
@keyframes muka-recording-bar-pulse {
|
|
5666
|
+
0%,
|
|
5667
|
+
100% {
|
|
5668
|
+
opacity: 1;
|
|
5669
|
+
}
|
|
5670
|
+
50% {
|
|
5671
|
+
opacity: 0.3;
|
|
5672
|
+
}
|
|
5673
|
+
}
|
|
5674
|
+
|
|
5675
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5676
|
+
.muka-recording-bar__dot {
|
|
5677
|
+
animation: none;
|
|
5678
|
+
}
|
|
5679
|
+
}
|
|
5680
|
+
|
|
5681
|
+
|
|
5490
5682
|
/* RangeSlider */
|
|
5491
5683
|
/* RangeSlider Component Styles - Using Muka Design Tokens */
|
|
5492
5684
|
|
|
@@ -7039,33 +7231,33 @@ body {
|
|
|
7039
7231
|
}
|
|
7040
7232
|
|
|
7041
7233
|
|
|
7042
|
-
/*
|
|
7043
|
-
/*
|
|
7044
|
-
/* Only the prefix/suffix affixes are NumberInput-specific. */
|
|
7234
|
+
/* PhotoDraftStrip */
|
|
7235
|
+
/* PhotoDraftStrip Component Styles */
|
|
7045
7236
|
|
|
7046
|
-
.muka-
|
|
7047
|
-
display:
|
|
7237
|
+
.muka-photo-draft-strip {
|
|
7238
|
+
display: flex;
|
|
7048
7239
|
align-items: center;
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
font-size: var(--text-input-md-fontSize);
|
|
7053
|
-
line-height: var(--text-input-md-lineHeight);
|
|
7054
|
-
user-select: none;
|
|
7055
|
-
pointer-events: none;
|
|
7056
|
-
white-space: nowrap;
|
|
7240
|
+
gap: var(--spacing-3);
|
|
7241
|
+
width: 100%;
|
|
7242
|
+
padding: var(--spacing-2) 0;
|
|
7057
7243
|
}
|
|
7058
7244
|
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7245
|
+
.muka-photo-draft-strip__track {
|
|
7246
|
+
display: flex;
|
|
7247
|
+
gap: var(--spacing-2);
|
|
7248
|
+
flex: 1 1 auto;
|
|
7249
|
+
min-width: 0;
|
|
7250
|
+
overflow-x: auto;
|
|
7251
|
+
scroll-behavior: smooth;
|
|
7252
|
+
scrollbar-width: none;
|
|
7064
7253
|
}
|
|
7065
7254
|
|
|
7066
|
-
.muka-
|
|
7067
|
-
|
|
7068
|
-
|
|
7255
|
+
.muka-photo-draft-strip__track::-webkit-scrollbar {
|
|
7256
|
+
display: none;
|
|
7257
|
+
}
|
|
7258
|
+
|
|
7259
|
+
.muka-photo-draft-strip__item {
|
|
7260
|
+
flex: 0 0 auto;
|
|
7069
7261
|
}
|
|
7070
7262
|
|
|
7071
7263
|
|
|
@@ -7171,6 +7363,36 @@ body {
|
|
|
7171
7363
|
}
|
|
7172
7364
|
|
|
7173
7365
|
|
|
7366
|
+
/* NumberInput */
|
|
7367
|
+
/* NumberInput — reuses Input field styles (../Input/Input.css). */
|
|
7368
|
+
/* Only the prefix/suffix affixes are NumberInput-specific. */
|
|
7369
|
+
|
|
7370
|
+
.muka-numberinput__addon {
|
|
7371
|
+
display: inline-flex;
|
|
7372
|
+
align-items: center;
|
|
7373
|
+
flex: none;
|
|
7374
|
+
color: var(--color-text-subtle-default);
|
|
7375
|
+
font-family: var(--text-input-md-fontFamily);
|
|
7376
|
+
font-size: var(--text-input-md-fontSize);
|
|
7377
|
+
line-height: var(--text-input-md-lineHeight);
|
|
7378
|
+
user-select: none;
|
|
7379
|
+
pointer-events: none;
|
|
7380
|
+
white-space: nowrap;
|
|
7381
|
+
}
|
|
7382
|
+
|
|
7383
|
+
/* Hide the native number spinners — affixes/step API replace them. */
|
|
7384
|
+
.muka-numberinput__field .muka-input__native::-webkit-outer-spin-button,
|
|
7385
|
+
.muka-numberinput__field .muka-input__native::-webkit-inner-spin-button {
|
|
7386
|
+
-webkit-appearance: none;
|
|
7387
|
+
margin: 0;
|
|
7388
|
+
}
|
|
7389
|
+
|
|
7390
|
+
.muka-numberinput__field .muka-input__native {
|
|
7391
|
+
-moz-appearance: textfield;
|
|
7392
|
+
appearance: textfield;
|
|
7393
|
+
}
|
|
7394
|
+
|
|
7395
|
+
|
|
7174
7396
|
/* NavigationTransition */
|
|
7175
7397
|
/* NavigationTransition Component Styles */
|
|
7176
7398
|
|
|
@@ -8126,26 +8348,6 @@ li.muka-listitem {
|
|
|
8126
8348
|
}
|
|
8127
8349
|
|
|
8128
8350
|
|
|
8129
|
-
/* Form */
|
|
8130
|
-
.muka-form {
|
|
8131
|
-
display: flex;
|
|
8132
|
-
flex-direction: column;
|
|
8133
|
-
width: 100%;
|
|
8134
|
-
}
|
|
8135
|
-
|
|
8136
|
-
.muka-form--gap-sm {
|
|
8137
|
-
gap: var(--size-sm);
|
|
8138
|
-
}
|
|
8139
|
-
|
|
8140
|
-
.muka-form--gap-md {
|
|
8141
|
-
gap: var(--size-md);
|
|
8142
|
-
}
|
|
8143
|
-
|
|
8144
|
-
.muka-form--gap-lg {
|
|
8145
|
-
gap: var(--size-lg);
|
|
8146
|
-
}
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
8351
|
/* Icon */
|
|
8150
8352
|
/* Icon Component Styles - Using Muka Design Tokens */
|
|
8151
8353
|
|
|
@@ -8200,6 +8402,26 @@ li.muka-listitem {
|
|
|
8200
8402
|
}
|
|
8201
8403
|
|
|
8202
8404
|
|
|
8405
|
+
/* Form */
|
|
8406
|
+
.muka-form {
|
|
8407
|
+
display: flex;
|
|
8408
|
+
flex-direction: column;
|
|
8409
|
+
width: 100%;
|
|
8410
|
+
}
|
|
8411
|
+
|
|
8412
|
+
.muka-form--gap-sm {
|
|
8413
|
+
gap: var(--size-sm);
|
|
8414
|
+
}
|
|
8415
|
+
|
|
8416
|
+
.muka-form--gap-md {
|
|
8417
|
+
gap: var(--size-md);
|
|
8418
|
+
}
|
|
8419
|
+
|
|
8420
|
+
.muka-form--gap-lg {
|
|
8421
|
+
gap: var(--size-lg);
|
|
8422
|
+
}
|
|
8423
|
+
|
|
8424
|
+
|
|
8203
8425
|
/* FileUpload */
|
|
8204
8426
|
/* FileUpload Component Styles */
|
|
8205
8427
|
|
|
@@ -8744,6 +8966,28 @@ li.muka-listitem {
|
|
|
8744
8966
|
}
|
|
8745
8967
|
|
|
8746
8968
|
|
|
8969
|
+
/* EmojiPicker */
|
|
8970
|
+
/* EmojiPicker Component Styles */
|
|
8971
|
+
|
|
8972
|
+
.muka-emoji-picker {
|
|
8973
|
+
display: grid;
|
|
8974
|
+
grid-template-columns: repeat(8, 1fr);
|
|
8975
|
+
gap: var(--spacing-1);
|
|
8976
|
+
padding: var(--spacing-2);
|
|
8977
|
+
max-height: 12rem;
|
|
8978
|
+
overflow-y: auto;
|
|
8979
|
+
background: var(--color-surface-level2);
|
|
8980
|
+
border: var(--border-width-regular, 1px) solid var(--color-border-default);
|
|
8981
|
+
border-radius: var(--radius-lg);
|
|
8982
|
+
box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
|
|
8983
|
+
}
|
|
8984
|
+
|
|
8985
|
+
.muka-emoji-picker__glyph {
|
|
8986
|
+
font-size: 1.25rem;
|
|
8987
|
+
line-height: 1;
|
|
8988
|
+
}
|
|
8989
|
+
|
|
8990
|
+
|
|
8747
8991
|
/* Drawer */
|
|
8748
8992
|
/* Drawer Component Styles */
|
|
8749
8993
|
|
|
@@ -10120,6 +10364,19 @@ li.muka-listitem {
|
|
|
10120
10364
|
/* Combobox */
|
|
10121
10365
|
/* Combobox Component Styles */
|
|
10122
10366
|
|
|
10367
|
+
/* ─── Trigger group (positioning context for the trailing controls) ── */
|
|
10368
|
+
|
|
10369
|
+
/*
|
|
10370
|
+
* The clear control is a sibling of the trigger, not a child (a <button> may
|
|
10371
|
+
* not contain interactive content), so it is overlaid on the trigger's trailing
|
|
10372
|
+
* padding. The trigger reserves that space with padding-right below.
|
|
10373
|
+
*/
|
|
10374
|
+
.muka-combobox__trigger-group {
|
|
10375
|
+
position: relative;
|
|
10376
|
+
display: block;
|
|
10377
|
+
width: 100%;
|
|
10378
|
+
}
|
|
10379
|
+
|
|
10123
10380
|
/* ─── Trigger (looks like an Input field, behaves like a button) ── */
|
|
10124
10381
|
|
|
10125
10382
|
.muka-combobox {
|
|
@@ -10127,7 +10384,7 @@ li.muka-listitem {
|
|
|
10127
10384
|
align-items: center;
|
|
10128
10385
|
gap: var(--spacing-2);
|
|
10129
10386
|
width: 100%;
|
|
10130
|
-
padding: 0 var(--input-field-padding-x);
|
|
10387
|
+
padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
|
|
10131
10388
|
background-color: var(--input-field-color-default-background);
|
|
10132
10389
|
border: var(--border-width-regular) solid var(--input-field-color-default-border);
|
|
10133
10390
|
color: var(--color-text-default-default);
|
|
@@ -10139,6 +10396,19 @@ li.muka-listitem {
|
|
|
10139
10396
|
line-height: var(--text-body-md-regular-lineHeight);
|
|
10140
10397
|
-webkit-tap-highlight-color: transparent;
|
|
10141
10398
|
transition: border-color 0.12s ease;
|
|
10399
|
+
|
|
10400
|
+
/* Room for the chevron overlaid on the trailing edge. */
|
|
10401
|
+
--muka-combobox-trailing-space: calc(
|
|
10402
|
+
var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
|
|
10403
|
+
);
|
|
10404
|
+
}
|
|
10405
|
+
|
|
10406
|
+
/* …and for the clear button next to it, when one is rendered. */
|
|
10407
|
+
.muka-combobox--clearable {
|
|
10408
|
+
--muka-combobox-trailing-space: calc(
|
|
10409
|
+
var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
|
|
10410
|
+
var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
|
|
10411
|
+
);
|
|
10142
10412
|
}
|
|
10143
10413
|
|
|
10144
10414
|
.muka-combobox--sm {
|
|
@@ -10191,6 +10461,23 @@ li.muka-listitem {
|
|
|
10191
10461
|
text-overflow: ellipsis;
|
|
10192
10462
|
}
|
|
10193
10463
|
|
|
10464
|
+
/* ─── Trailing controls (clear + chevron) ─────────────── */
|
|
10465
|
+
|
|
10466
|
+
.muka-combobox__actions {
|
|
10467
|
+
position: absolute;
|
|
10468
|
+
top: 0;
|
|
10469
|
+
right: var(--input-field-padding-x);
|
|
10470
|
+
height: 100%;
|
|
10471
|
+
display: flex;
|
|
10472
|
+
align-items: center;
|
|
10473
|
+
gap: var(--spacing-2);
|
|
10474
|
+
/*
|
|
10475
|
+
* The strip sits on top of the trigger, so it must not swallow taps meant to
|
|
10476
|
+
* open the picker. Only the clear button takes pointer events back.
|
|
10477
|
+
*/
|
|
10478
|
+
pointer-events: none;
|
|
10479
|
+
}
|
|
10480
|
+
|
|
10194
10481
|
.muka-combobox__clear,
|
|
10195
10482
|
.muka-combobox__chevron {
|
|
10196
10483
|
display: inline-flex;
|
|
@@ -10201,9 +10488,13 @@ li.muka-listitem {
|
|
|
10201
10488
|
}
|
|
10202
10489
|
|
|
10203
10490
|
.muka-combobox__clear {
|
|
10491
|
+
pointer-events: auto;
|
|
10204
10492
|
cursor: pointer;
|
|
10205
10493
|
padding: var(--spacing-1);
|
|
10494
|
+
border: none;
|
|
10495
|
+
background: none;
|
|
10206
10496
|
border-radius: var(--radius-sm);
|
|
10497
|
+
-webkit-tap-highlight-color: transparent;
|
|
10207
10498
|
}
|
|
10208
10499
|
|
|
10209
10500
|
.muka-combobox__clear:hover {
|
|
@@ -10211,6 +10502,17 @@ li.muka-listitem {
|
|
|
10211
10502
|
background-color: var(--color-surface-level1);
|
|
10212
10503
|
}
|
|
10213
10504
|
|
|
10505
|
+
.muka-combobox__clear:focus-visible {
|
|
10506
|
+
outline: 2px solid var(--color-border-focus);
|
|
10507
|
+
outline-offset: 2px;
|
|
10508
|
+
color: var(--color-text-default-default);
|
|
10509
|
+
}
|
|
10510
|
+
|
|
10511
|
+
.muka-combobox--disabled ~ .muka-combobox__actions,
|
|
10512
|
+
.muka-combobox:disabled ~ .muka-combobox__actions {
|
|
10513
|
+
opacity: 0.5;
|
|
10514
|
+
}
|
|
10515
|
+
|
|
10214
10516
|
/* ─── Picker sheet body ───────────────────────────────── */
|
|
10215
10517
|
|
|
10216
10518
|
.muka-combobox__picker {
|
|
@@ -11020,7 +11322,7 @@ button.muka-chat-photo-grid__tile:focus-visible {
|
|
|
11020
11322
|
align-items: stretch;
|
|
11021
11323
|
gap: var(--spacing-8);
|
|
11022
11324
|
width: 100%;
|
|
11023
|
-
max-width: var(--
|
|
11325
|
+
max-width: var(--chat-column-max-width);
|
|
11024
11326
|
margin: 0 auto;
|
|
11025
11327
|
}
|
|
11026
11328
|
|
|
@@ -11106,7 +11408,13 @@ button.muka-chat-photo-grid__tile:focus-visible {
|
|
|
11106
11408
|
* no length measuring needed (Figma `Text length` on 5355:44091).
|
|
11107
11409
|
*/
|
|
11108
11410
|
width: fit-content;
|
|
11109
|
-
|
|
11411
|
+
/*
|
|
11412
|
+
* Stops short of the far edge at every width: the fixed cap once the
|
|
11413
|
+
* conversation column reaches its own cap, the ratio below that, where the
|
|
11414
|
+
* column runs full-bleed. Without that gap a long `own` bubble spans the
|
|
11415
|
+
* column and reads no differently from a `peer` one.
|
|
11416
|
+
*/
|
|
11417
|
+
max-width: min(var(--chatbubble-max-width), var(--chatbubble-max-width-ratio));
|
|
11110
11418
|
position: relative;
|
|
11111
11419
|
display: flex;
|
|
11112
11420
|
flex-direction: column;
|
|
@@ -12229,19 +12537,34 @@ button.muka-chat-photo-grid__tile:focus-visible {
|
|
|
12229
12537
|
|
|
12230
12538
|
.muka-bottombar--chat .muka-bottombar__content {
|
|
12231
12539
|
flex-direction: row;
|
|
12232
|
-
max-width: var(--bottombar-chat-max-width);
|
|
12233
12540
|
width: 100%;
|
|
12234
12541
|
margin: 0 auto;
|
|
12235
12542
|
}
|
|
12236
12543
|
|
|
12237
|
-
/*
|
|
12544
|
+
/*
|
|
12545
|
+
* `--bottombar-chat-max-width` is the conversation column (it derives from
|
|
12546
|
+
* `chat.column.max-width`, the same token `ChatMessageList` caps its column
|
|
12547
|
+
* with). The cap here carries the padding on top of it, so it is the
|
|
12548
|
+
* composer's own edges — not the padding around it — that land on the column.
|
|
12549
|
+
*/
|
|
12550
|
+
|
|
12551
|
+
/*
|
|
12552
|
+
* Docked chat pads its content; the floating card supplies its own padding.
|
|
12553
|
+
* The inline half is the section gutter `ChatMessageList` pads its scroller
|
|
12554
|
+
* with, so below the cap — where the column runs full-bleed — the composer
|
|
12555
|
+
* keeps to the same gutters as the messages.
|
|
12556
|
+
*/
|
|
12238
12557
|
.muka-bottombar--chat:not(.muka-bottombar--floating) .muka-bottombar__content {
|
|
12239
|
-
padding: var(--bottombar-chat-padding)
|
|
12558
|
+
padding: var(--bottombar-chat-padding)
|
|
12559
|
+
var(--section-padding-horizontal-default, var(--spacing-4));
|
|
12560
|
+
max-width: calc(
|
|
12561
|
+
var(--bottombar-chat-max-width) + 2 * var(--section-padding-horizontal-default, var(--spacing-4))
|
|
12562
|
+
);
|
|
12240
12563
|
}
|
|
12241
12564
|
|
|
12242
12565
|
/* Floating chat card widens to the chat cap (overrides the md default below). */
|
|
12243
12566
|
.muka-bottombar--chat.muka-bottombar--floating .muka-bottombar__content {
|
|
12244
|
-
max-width: var(--bottombar-chat-max-width);
|
|
12567
|
+
max-width: calc(var(--bottombar-chat-max-width) + 2 * var(--bottombar-floating-padding));
|
|
12245
12568
|
}
|
|
12246
12569
|
|
|
12247
12570
|
/* ─── Tab item ────────────────────────────────────────── */
|
|
@@ -35,6 +35,13 @@ export interface ChatComposerProps {
|
|
|
35
35
|
micLabel?: string;
|
|
36
36
|
/** Send button aria-label. Default: 'Send message' */
|
|
37
37
|
sendLabel?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Overrides the default send-enablement rule. By default the send button is
|
|
40
|
+
* enabled once the trimmed text is non-empty (or while `recording`). Set this
|
|
41
|
+
* to enable/disable send explicitly — e.g. a caption-less gallery send driven
|
|
42
|
+
* by staged attachments rather than text.
|
|
43
|
+
*/
|
|
44
|
+
canSubmit?: boolean;
|
|
38
45
|
/** When true, the composer switches to the voice-recording layout */
|
|
39
46
|
recording?: boolean;
|
|
40
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../components/ChatComposer/ChatComposer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEhC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,+
|
|
1
|
+
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../components/ChatComposer/ChatComposer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEhC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,+FAqNxB,CAAC;AAIF,eAAe,YAAY,CAAC"}
|
|
@@ -40,7 +40,10 @@ export interface ChatMessageProps {
|
|
|
40
40
|
/**
|
|
41
41
|
* Avatar rendered in the rail beside the bubble (left of `peer`/`agent`
|
|
42
42
|
* bubbles). Ignored for `own`, which never shows an avatar. Pass an
|
|
43
|
-
* `<Avatar
|
|
43
|
+
* `<Avatar size="sm" />`: the rail is exactly `chatbubble.avatar-size` wide
|
|
44
|
+
* (and half that below 1024px), so anything that carries a label of its own —
|
|
45
|
+
* a `<ProfileBadge />`, say — runs outside it. The author's name belongs in
|
|
46
|
+
* `author`, inside the bubble.
|
|
44
47
|
*/
|
|
45
48
|
avatar?: React.ReactNode;
|
|
46
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../../../components/ChatMessage/ChatMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAMpF,OAAO,mBAAmB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0CAAiD,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IAEX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEvB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAQD,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B
|
|
1
|
+
{"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../../../components/ChatMessage/ChatMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAMpF,OAAO,mBAAmB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0CAAiD,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IAEX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEvB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAQD,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAExB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAEhC,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IAEvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAElC,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqQlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -57,6 +57,13 @@ export interface ComboboxProps {
|
|
|
57
57
|
* by the underlying Vaul drawer's responsive behavior.
|
|
58
58
|
*
|
|
59
59
|
* For long lists, pass a custom `filter` to do fuzzy or async matching.
|
|
60
|
+
*
|
|
61
|
+
* @accessibility
|
|
62
|
+
* - Trigger is a native `<button>` with `aria-haspopup="listbox"`/`aria-expanded`
|
|
63
|
+
* - The `clearable` control is a sibling `<button>`, not nested in the trigger:
|
|
64
|
+
* it is in the tab order, operable with Enter/Space, and its label stays out
|
|
65
|
+
* of the trigger's accessible name
|
|
66
|
+
* - Clearing returns focus to the trigger, since the clear button unmounts
|
|
60
67
|
*/
|
|
61
68
|
export declare const Combobox: React.FC<ComboboxProps>;
|
|
62
69
|
export default Combobox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../components/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../components/Combobox/Combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEzC,6BAA6B;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAE5D,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,cAAc;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAsK5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './EmojiPicker.css';
|
|
3
|
+
/** A small default set of common Unicode emoji. Override via the `emoji` prop. */
|
|
4
|
+
export declare const DEFAULT_EMOJI: string[];
|
|
5
|
+
export interface EmojiPickerProps {
|
|
6
|
+
/** Whether the panel is shown. */
|
|
7
|
+
open: boolean;
|
|
8
|
+
/** Called when the panel requests to close (Escape / outside click). */
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
/** Called with the chosen emoji character. */
|
|
11
|
+
onSelect: (emoji: string) => void;
|
|
12
|
+
/** Accessible label for the panel. Default: 'Emoji'. */
|
|
13
|
+
title?: string;
|
|
14
|
+
/** Emoji to display. Defaults to a small built-in Unicode set. */
|
|
15
|
+
emoji?: string[];
|
|
16
|
+
/** Additional CSS classes */
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* EmojiPicker — a minimal panel of Unicode emoji that inserts into a composer.
|
|
21
|
+
*
|
|
22
|
+
* Optional and dependency-free: apps may ignore it and wire only
|
|
23
|
+
* `ChatComposer.onEmoji`. Emoji are plain text, so once inserted they render in
|
|
24
|
+
* sent bubbles for free. Closes on Escape or an outside click.
|
|
25
|
+
*/
|
|
26
|
+
export declare const EmojiPicker: React.FC<EmojiPickerProps>;
|
|
27
|
+
export default EmojiPicker;
|
|
28
|
+
//# sourceMappingURL=EmojiPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiPicker.d.ts","sourceRoot":"","sources":["../../../../components/EmojiPicker/EmojiPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,mBAAmB,CAAC;AAE3B,kFAAkF;AAClF,eAAO,MAAM,aAAa,EAAE,MAAM,EAMjC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IAEd,wEAAwE;IACxE,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqDlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/EmojiPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
|