@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
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
/* Combobox Component Styles */
|
|
2
2
|
|
|
3
|
+
/* ─── Trigger group (positioning context for the trailing controls) ── */
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* The clear control is a sibling of the trigger, not a child (a <button> may
|
|
7
|
+
* not contain interactive content), so it is overlaid on the trigger's trailing
|
|
8
|
+
* padding. The trigger reserves that space with padding-right below.
|
|
9
|
+
*/
|
|
10
|
+
.muka-combobox__trigger-group {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: block;
|
|
13
|
+
width: 100%;
|
|
14
|
+
}
|
|
15
|
+
|
|
3
16
|
/* ─── Trigger (looks like an Input field, behaves like a button) ── */
|
|
4
17
|
|
|
5
18
|
.muka-combobox {
|
|
@@ -7,7 +20,7 @@
|
|
|
7
20
|
align-items: center;
|
|
8
21
|
gap: var(--spacing-2);
|
|
9
22
|
width: 100%;
|
|
10
|
-
padding: 0 var(--input-field-padding-x);
|
|
23
|
+
padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
|
|
11
24
|
background-color: var(--input-field-color-default-background);
|
|
12
25
|
border: var(--border-width-regular) solid var(--input-field-color-default-border);
|
|
13
26
|
color: var(--color-text-default-default);
|
|
@@ -19,6 +32,19 @@
|
|
|
19
32
|
line-height: var(--text-body-md-regular-lineHeight);
|
|
20
33
|
-webkit-tap-highlight-color: transparent;
|
|
21
34
|
transition: border-color 0.12s ease;
|
|
35
|
+
|
|
36
|
+
/* Room for the chevron overlaid on the trailing edge. */
|
|
37
|
+
--muka-combobox-trailing-space: calc(
|
|
38
|
+
var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* …and for the clear button next to it, when one is rendered. */
|
|
43
|
+
.muka-combobox--clearable {
|
|
44
|
+
--muka-combobox-trailing-space: calc(
|
|
45
|
+
var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
|
|
46
|
+
var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
|
|
47
|
+
);
|
|
22
48
|
}
|
|
23
49
|
|
|
24
50
|
.muka-combobox--sm {
|
|
@@ -71,6 +97,23 @@
|
|
|
71
97
|
text-overflow: ellipsis;
|
|
72
98
|
}
|
|
73
99
|
|
|
100
|
+
/* ─── Trailing controls (clear + chevron) ─────────────── */
|
|
101
|
+
|
|
102
|
+
.muka-combobox__actions {
|
|
103
|
+
position: absolute;
|
|
104
|
+
top: 0;
|
|
105
|
+
right: var(--input-field-padding-x);
|
|
106
|
+
height: 100%;
|
|
107
|
+
display: flex;
|
|
108
|
+
align-items: center;
|
|
109
|
+
gap: var(--spacing-2);
|
|
110
|
+
/*
|
|
111
|
+
* The strip sits on top of the trigger, so it must not swallow taps meant to
|
|
112
|
+
* open the picker. Only the clear button takes pointer events back.
|
|
113
|
+
*/
|
|
114
|
+
pointer-events: none;
|
|
115
|
+
}
|
|
116
|
+
|
|
74
117
|
.muka-combobox__clear,
|
|
75
118
|
.muka-combobox__chevron {
|
|
76
119
|
display: inline-flex;
|
|
@@ -81,9 +124,13 @@
|
|
|
81
124
|
}
|
|
82
125
|
|
|
83
126
|
.muka-combobox__clear {
|
|
127
|
+
pointer-events: auto;
|
|
84
128
|
cursor: pointer;
|
|
85
129
|
padding: var(--spacing-1);
|
|
130
|
+
border: none;
|
|
131
|
+
background: none;
|
|
86
132
|
border-radius: var(--radius-sm);
|
|
133
|
+
-webkit-tap-highlight-color: transparent;
|
|
87
134
|
}
|
|
88
135
|
|
|
89
136
|
.muka-combobox__clear:hover {
|
|
@@ -91,6 +138,17 @@
|
|
|
91
138
|
background-color: var(--color-surface-level1);
|
|
92
139
|
}
|
|
93
140
|
|
|
141
|
+
.muka-combobox__clear:focus-visible {
|
|
142
|
+
outline: 2px solid var(--color-border-focus);
|
|
143
|
+
outline-offset: 2px;
|
|
144
|
+
color: var(--color-text-default-default);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.muka-combobox--disabled ~ .muka-combobox__actions,
|
|
148
|
+
.muka-combobox:disabled ~ .muka-combobox__actions {
|
|
149
|
+
opacity: 0.5;
|
|
150
|
+
}
|
|
151
|
+
|
|
94
152
|
/* ─── Picker sheet body ───────────────────────────────── */
|
|
95
153
|
|
|
96
154
|
.muka-combobox__picker {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* EmojiPicker Component Styles */
|
|
2
|
+
|
|
3
|
+
.muka-emoji-picker {
|
|
4
|
+
display: grid;
|
|
5
|
+
grid-template-columns: repeat(8, 1fr);
|
|
6
|
+
gap: var(--spacing-1);
|
|
7
|
+
padding: var(--spacing-2);
|
|
8
|
+
max-height: 12rem;
|
|
9
|
+
overflow-y: auto;
|
|
10
|
+
background: var(--color-surface-level2);
|
|
11
|
+
border: var(--border-width-regular, 1px) solid var(--color-border-default);
|
|
12
|
+
border-radius: var(--radius-lg);
|
|
13
|
+
box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.muka-emoji-picker__glyph {
|
|
17
|
+
font-size: 1.25rem;
|
|
18
|
+
line-height: 1;
|
|
19
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* PhotoDraftStrip Component Styles */
|
|
2
|
+
|
|
3
|
+
.muka-photo-draft-strip {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: var(--spacing-3);
|
|
7
|
+
width: 100%;
|
|
8
|
+
padding: var(--spacing-2) 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.muka-photo-draft-strip__track {
|
|
12
|
+
display: flex;
|
|
13
|
+
gap: var(--spacing-2);
|
|
14
|
+
flex: 1 1 auto;
|
|
15
|
+
min-width: 0;
|
|
16
|
+
overflow-x: auto;
|
|
17
|
+
scroll-behavior: smooth;
|
|
18
|
+
scrollbar-width: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.muka-photo-draft-strip__track::-webkit-scrollbar {
|
|
22
|
+
display: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.muka-photo-draft-strip__item {
|
|
26
|
+
flex: 0 0 auto;
|
|
27
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* RecordingBar Component Styles */
|
|
2
|
+
|
|
3
|
+
.muka-recording-bar {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: var(--spacing-3);
|
|
7
|
+
width: 100%;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.muka-recording-bar__dot {
|
|
12
|
+
flex: 0 0 auto;
|
|
13
|
+
width: 0.625rem;
|
|
14
|
+
height: 0.625rem;
|
|
15
|
+
border-radius: var(--radius-full, 9999px);
|
|
16
|
+
background: var(--alert-color-error-accent, var(--color-text-default-default));
|
|
17
|
+
animation: muka-recording-bar-pulse 1s ease-in-out infinite;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.muka-recording-bar__time {
|
|
21
|
+
flex: 0 0 auto;
|
|
22
|
+
font-size: var(--text-label-sm-fontSize, 0.75rem);
|
|
23
|
+
line-height: var(--text-label-sm-lineHeight, 1);
|
|
24
|
+
font-variant-numeric: tabular-nums;
|
|
25
|
+
color: var(--color-text-default-default);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.muka-recording-bar__wave {
|
|
29
|
+
flex: 1 1 auto;
|
|
30
|
+
min-width: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@keyframes muka-recording-bar-pulse {
|
|
34
|
+
0%,
|
|
35
|
+
100% {
|
|
36
|
+
opacity: 1;
|
|
37
|
+
}
|
|
38
|
+
50% {
|
|
39
|
+
opacity: 0.3;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@media (prefers-reduced-motion: reduce) {
|
|
44
|
+
.muka-recording-bar__dot {
|
|
45
|
+
animation: none;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* TextLink Component Styles - Using Muka Design Tokens */
|
|
2
|
+
|
|
3
|
+
.muka-text-link {
|
|
4
|
+
display: inline;
|
|
5
|
+
cursor: pointer;
|
|
6
|
+
text-decoration: underline;
|
|
7
|
+
/* Nudge the rule clear of descenders; the Figma underline sits off baseline. */
|
|
8
|
+
text-underline-offset: 0.2em;
|
|
9
|
+
text-decoration-thickness: from-font;
|
|
10
|
+
/* Rounds the focus ring's corners; the link itself has no visible box. */
|
|
11
|
+
border-radius: var(--border-radius-sm);
|
|
12
|
+
transition: color var(--motion-duration-micro, 0.15s) var(--motion-easing-enter, ease);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* ─── Sizes ───────────────────────────────────────────────
|
|
16
|
+
Mirrors the body text scale so a link matches the copy it sits in. */
|
|
17
|
+
.muka-text-link--sm {
|
|
18
|
+
font-family: var(--text-body-sm-regular-fontFamily);
|
|
19
|
+
font-weight: var(--text-body-sm-regular-fontWeight);
|
|
20
|
+
font-size: var(--text-body-sm-regular-fontSize);
|
|
21
|
+
line-height: var(--text-body-sm-regular-lineHeight);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.muka-text-link--base {
|
|
25
|
+
font-family: var(--text-body-base-regular-fontFamily);
|
|
26
|
+
font-weight: var(--text-body-base-regular-fontWeight);
|
|
27
|
+
font-size: var(--text-body-base-regular-fontSize);
|
|
28
|
+
line-height: var(--text-body-base-regular-lineHeight);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.muka-text-link--lg {
|
|
32
|
+
font-family: var(--text-body-lg-regular-fontFamily);
|
|
33
|
+
font-weight: var(--text-body-lg-regular-fontWeight);
|
|
34
|
+
font-size: var(--text-body-lg-regular-fontSize);
|
|
35
|
+
line-height: var(--text-body-lg-regular-lineHeight);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* ─── Variant: default (accent) ───────────────────────────
|
|
39
|
+
Visited repeats the default colour on purpose: the design treats visited and
|
|
40
|
+
default the same, and pinning it stops the browser's purple from showing. */
|
|
41
|
+
.muka-text-link--default,
|
|
42
|
+
.muka-text-link--default:visited {
|
|
43
|
+
color: var(--color-text-action-default);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.muka-text-link--default:hover,
|
|
47
|
+
.muka-text-link--default:focus-visible {
|
|
48
|
+
color: var(--color-text-action-hover);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.muka-text-link--default:active {
|
|
52
|
+
color: var(--color-text-action-pressed);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* ─── Variant: subtle (neutral) ───────────────────────────
|
|
56
|
+
Hover, focus and pressed all darken to the default text colour. */
|
|
57
|
+
.muka-text-link--subtle,
|
|
58
|
+
.muka-text-link--subtle:visited {
|
|
59
|
+
color: var(--color-text-subtle-default);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.muka-text-link--subtle:hover,
|
|
63
|
+
.muka-text-link--subtle:focus-visible,
|
|
64
|
+
.muka-text-link--subtle:active {
|
|
65
|
+
color: var(--color-text-default-default);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* ─── Focus ───────────────────────────────────────────────
|
|
69
|
+
Same ring as every other focusable Muka component. */
|
|
70
|
+
.muka-text-link:focus-visible {
|
|
71
|
+
outline: 2px solid var(--color-border-focus);
|
|
72
|
+
outline-offset: 2px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@media (prefers-reduced-motion: reduce) {
|
|
76
|
+
.muka-text-link {
|
|
77
|
+
transition: none;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* VoiceMessage Component Styles */
|
|
2
|
+
|
|
3
|
+
.muka-voice-message {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: var(--spacing-3);
|
|
7
|
+
width: 100%;
|
|
8
|
+
min-width: min(16rem, 60vw);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.muka-voice-message__wave {
|
|
12
|
+
flex: 1 1 auto;
|
|
13
|
+
min-width: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.muka-voice-message__time {
|
|
17
|
+
flex: 0 0 auto;
|
|
18
|
+
white-space: nowrap;
|
|
19
|
+
font-size: var(--text-label-sm-fontSize, 0.75rem);
|
|
20
|
+
line-height: var(--text-label-sm-lineHeight, 1);
|
|
21
|
+
font-variant-numeric: tabular-nums;
|
|
22
|
+
color: var(--color-text-subtle-default);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* On the tinted own bubble the surface is the action color, so the timer flips
|
|
26
|
+
* to the inverse text token for contrast. */
|
|
27
|
+
.muka-voice-message--own .muka-voice-message__time {
|
|
28
|
+
color: var(--color-text-default-inverse);
|
|
29
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* Waveform Component Styles */
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* A row of amplitude bars. Muka ships no audio/waveform primitive; this is
|
|
5
|
+
* drawn from color + spacing tokens only. Bar height (per-peak magnitude) and
|
|
6
|
+
* the played/unplayed color split are data-driven, so they arrive as inline
|
|
7
|
+
* styles from the component; everything else is tokenized here.
|
|
8
|
+
*/
|
|
9
|
+
.muka-waveform {
|
|
10
|
+
display: flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
gap: var(--spacing-05, 2px);
|
|
13
|
+
width: 100%;
|
|
14
|
+
min-width: 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.muka-waveform__bar {
|
|
18
|
+
flex: 1 1 0;
|
|
19
|
+
min-width: 2px;
|
|
20
|
+
max-width: 4px;
|
|
21
|
+
border-radius: var(--radius-full, 9999px);
|
|
22
|
+
background: var(--color-border-contrast);
|
|
23
|
+
}
|