@livelayer/react 0.10.0 → 0.10.2
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/dist/index.d.ts +16 -0
- package/dist/index.js +3 -3
- package/dist/index.mjs +1557 -1513
- package/dist/styles.css +70 -18
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -121,7 +121,18 @@
|
|
|
121
121
|
ancestor (translateZ, scale, etc.) capture the fixed chrome and
|
|
122
122
|
pin it to the slot rather than the viewport edge — that's what
|
|
123
123
|
made the side-tab and audio-waveform pill unreachable in EMBEDDED
|
|
124
|
-
pre-0.10.0. The .ll-widget base rules above apply unchanged.
|
|
124
|
+
pre-0.10.0. The .ll-widget base rules above apply unchanged.
|
|
125
|
+
|
|
126
|
+
The position rules INSIDE this container (HiddenLayout's
|
|
127
|
+
`position: fixed` on the side-tab) follow normal containing-block
|
|
128
|
+
rules: when the consumer scopes the portal to a specific element
|
|
129
|
+
via `floatingChromeContainer` (a fork-demo card, for example),
|
|
130
|
+
that element's `position: relative` becomes the containing block
|
|
131
|
+
if the chrome's positioning is `absolute` rather than `fixed`. We
|
|
132
|
+
leave HiddenLayout / MinimizedLayout's existing `position: fixed`
|
|
133
|
+
alone — consumers who pass a scoped container should mark it with
|
|
134
|
+
`transform: translateZ(0)` so `position: fixed` descendants
|
|
135
|
+
capture to the container instead of the viewport. */
|
|
125
136
|
.ll-widget--floating {
|
|
126
137
|
position: fixed;
|
|
127
138
|
pointer-events: none;
|
|
@@ -267,6 +278,19 @@
|
|
|
267
278
|
height: 80px;
|
|
268
279
|
}
|
|
269
280
|
|
|
281
|
+
/* Scoped variant — used when the package portals the tab to a host
|
|
282
|
+
container instead of document.body (e.g. a fork-demo card on a
|
|
283
|
+
marketing page). Drag-to-reposition is disabled in scoped mode
|
|
284
|
+
because a 260px-tall card has no room for it; the cursor reflects
|
|
285
|
+
that. CSS centering (top:50%/translateY(-50%)) handles vertical
|
|
286
|
+
placement against the container's bounds. */
|
|
287
|
+
.ll-widget .ll-hidden--scoped {
|
|
288
|
+
cursor: pointer;
|
|
289
|
+
}
|
|
290
|
+
.ll-widget .ll-hidden--scoped.is-dragging {
|
|
291
|
+
cursor: pointer;
|
|
292
|
+
}
|
|
293
|
+
|
|
270
294
|
.ll-widget .ll-hidden__chevron {
|
|
271
295
|
/* Centered visually inside the tab. The SVG's stroke handles color;
|
|
272
296
|
`display: block` prevents any baseline gap that would offset the
|
|
@@ -1040,19 +1064,22 @@
|
|
|
1040
1064
|
}
|
|
1041
1065
|
|
|
1042
1066
|
/* Captions affordance for deaf-friendly UX: when the latest transcript
|
|
1043
|
-
line is the AGENT's spoken output,
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1067
|
+
line is the AGENT's spoken output, render the pill in fully-saturated
|
|
1068
|
+
brand orange with crisp white text. The user's STT pill keeps the
|
|
1069
|
+
default dark styling so the two voices contrast immediately at a
|
|
1070
|
+
glance. Pre-0.10.1 the orange was rendered as a soft tint over a
|
|
1071
|
+
semi-transparent black backdrop, which compressed the color into
|
|
1072
|
+
a muddy brown — the user couldn't see "the agent is talking" at
|
|
1073
|
+
all. Now: solid #e06540 background, white 500-weight text, no
|
|
1074
|
+
blur (removed the dark backdrop-filter that was washing it out). */
|
|
1050
1075
|
.ll-expanded__transcript--agent {
|
|
1051
|
-
background:
|
|
1052
|
-
border-color: rgba(255,
|
|
1076
|
+
background: #e06540;
|
|
1077
|
+
border-color: rgba(255, 200, 160, 0.55);
|
|
1078
|
+
-webkit-backdrop-filter: none;
|
|
1079
|
+
backdrop-filter: none;
|
|
1053
1080
|
box-shadow:
|
|
1054
|
-
0 0
|
|
1055
|
-
inset 0 0 0 1px rgba(255,
|
|
1081
|
+
0 0 28px rgba(224, 101, 64, 0.5),
|
|
1082
|
+
inset 0 0 0 1px rgba(255, 215, 180, 0.3);
|
|
1056
1083
|
}
|
|
1057
1084
|
|
|
1058
1085
|
.ll-expanded__transcript--agent .ll-expanded__transcript-text {
|
|
@@ -1084,8 +1111,13 @@
|
|
|
1084
1111
|
display: flex;
|
|
1085
1112
|
align-items: center;
|
|
1086
1113
|
justify-content: center;
|
|
1087
|
-
gap:
|
|
1088
|
-
|
|
1114
|
+
gap: 2px;
|
|
1115
|
+
/* Toolbar must stay on one line. Wrapping produces a "4 buttons +
|
|
1116
|
+
red end-call below" layout in narrow slots (280px-wide marketing
|
|
1117
|
+
dock) — visually broken. Tight gap + slim split paddings below
|
|
1118
|
+
fit screen / camera-split / mic-split / speaker / end-call in
|
|
1119
|
+
~250px of usable width. */
|
|
1120
|
+
flex-wrap: nowrap;
|
|
1089
1121
|
}
|
|
1090
1122
|
|
|
1091
1123
|
.ll-tool {
|
|
@@ -1164,14 +1196,14 @@
|
|
|
1164
1196
|
}
|
|
1165
1197
|
|
|
1166
1198
|
.ll-tool-split .ll-tool--left {
|
|
1167
|
-
padding-left:
|
|
1168
|
-
padding-right:
|
|
1199
|
+
padding-left: 10px;
|
|
1200
|
+
padding-right: 2px;
|
|
1169
1201
|
width: auto;
|
|
1170
1202
|
}
|
|
1171
1203
|
|
|
1172
1204
|
.ll-tool-split .ll-tool--right {
|
|
1173
|
-
padding-left:
|
|
1174
|
-
padding-right:
|
|
1205
|
+
padding-left: 2px;
|
|
1206
|
+
padding-right: 8px;
|
|
1175
1207
|
width: auto;
|
|
1176
1208
|
color: rgba(255, 255, 255, 0.7);
|
|
1177
1209
|
}
|
|
@@ -1189,6 +1221,14 @@
|
|
|
1189
1221
|
/* ── Device selection menu (mic / camera) ───────────────── */
|
|
1190
1222
|
|
|
1191
1223
|
.ll-device-menu {
|
|
1224
|
+
/* Default = absolute (used inline within toolbar split). The
|
|
1225
|
+
ll-device-menu--floating modifier below overrides for the
|
|
1226
|
+
portaled variant rendered to document.body. The inline form
|
|
1227
|
+
was getting clipped by .ll-tool-split's overflow:hidden, which
|
|
1228
|
+
is why chevron clicks looked like no-ops — that's why
|
|
1229
|
+
ExpandedLayout now portals the menu by default. Keep the inline
|
|
1230
|
+
styles for backwards compatibility with consumers calling
|
|
1231
|
+
DeviceMenu directly. */
|
|
1192
1232
|
position: absolute;
|
|
1193
1233
|
bottom: calc(100% + 8px);
|
|
1194
1234
|
left: 50%;
|
|
@@ -1207,6 +1247,18 @@
|
|
|
1207
1247
|
gap: 2px;
|
|
1208
1248
|
}
|
|
1209
1249
|
|
|
1250
|
+
/* Portaled variant: rendered to document.body so it escapes any
|
|
1251
|
+
ancestor overflow:hidden / transform context. Position is set
|
|
1252
|
+
inline via getBoundingClientRect; reset the static defaults so
|
|
1253
|
+
they don't fight the inline styles. z-index matches the rest of
|
|
1254
|
+
the floating chrome (max-int) so we win over consumer overlays. */
|
|
1255
|
+
.ll-device-menu--floating {
|
|
1256
|
+
position: fixed;
|
|
1257
|
+
bottom: auto;
|
|
1258
|
+
left: auto;
|
|
1259
|
+
z-index: 2147483647;
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1210
1262
|
.ll-device-menu__label {
|
|
1211
1263
|
margin: 0;
|
|
1212
1264
|
padding: 6px 10px 4px;
|
package/package.json
CHANGED