@lumiastream/ui 0.5.4 → 0.5.6

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.js CHANGED
@@ -93,9 +93,6 @@ var LSInput = forwardRef(
93
93
  inputAfterText,
94
94
  maxWidth,
95
95
  className = "",
96
- InputProps: inputPropsProp,
97
- InputLabelProps: inputLabelPropsProp,
98
- inputProps: htmlInputPropsProp,
99
96
  slotProps: slotPropsProp,
100
97
  onChange,
101
98
  onChangeStart,
@@ -130,25 +127,11 @@ var LSInput = forwardRef(
130
127
  onChange?.(event, sanitizedValue);
131
128
  onChangeEnd?.(event, sanitizedValue);
132
129
  };
133
- const resolvedStartAdornment = inputPropsProp?.startAdornment ?? (startAdornment ? /* @__PURE__ */ jsx2(InputAdornment, { position: "start", children: startAdornment }) : inputBeforeText ? /* @__PURE__ */ jsx2(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx2("span", { className: "mui-ls-input-affix", children: inputBeforeText }) }) : void 0);
134
- const resolvedEndAdornment = inputPropsProp?.endAdornment ?? (endAdornment ? /* @__PURE__ */ jsx2(InputAdornment, { position: "end", children: endAdornment }) : inputAfterText ? /* @__PURE__ */ jsx2(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx2("span", { className: "mui-ls-input-affix", children: inputAfterText }) }) : void 0);
135
- const inputSlotProps = {
136
- ...inputPropsProp,
137
- startAdornment: resolvedStartAdornment,
138
- endAdornment: resolvedEndAdornment,
139
- readOnly: rest.readOnly ?? inputPropsProp?.readOnly,
140
- sx: {
141
- ...inputPropsProp?.sx ?? {},
142
- "& input, & textarea": {
143
- textAlign: centerText ? "center" : void 0,
144
- color: textColor ?? void 0
145
- }
146
- }
147
- };
148
- const inputLabelProps = {
149
- shrink: true,
150
- ...inputLabelPropsProp
151
- };
130
+ const callerInputSlot = slotPropsProp?.input ?? {};
131
+ const callerHtmlInputSlot = slotPropsProp?.htmlInput ?? {};
132
+ const callerInputLabelSlot = slotPropsProp?.inputLabel ?? {};
133
+ const resolvedStartAdornment = callerInputSlot.startAdornment ?? (startAdornment ? /* @__PURE__ */ jsx2(InputAdornment, { position: "start", children: startAdornment }) : inputBeforeText ? /* @__PURE__ */ jsx2(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx2("span", { className: "mui-ls-input-affix", children: inputBeforeText }) }) : void 0);
134
+ const resolvedEndAdornment = callerInputSlot.endAdornment ?? (endAdornment ? /* @__PURE__ */ jsx2(InputAdornment, { position: "end", children: endAdornment }) : inputAfterText ? /* @__PURE__ */ jsx2(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx2("span", { className: "mui-ls-input-affix", children: inputAfterText }) }) : void 0);
152
135
  const helperContent = helperText ?? (typeof error === "string" ? error : "");
153
136
  const hasError = typeof error === "string" ? true : Boolean(error);
154
137
  const resolvedMaxWidth = maxWidth ?? style?.maxWidth;
@@ -156,20 +139,24 @@ var LSInput = forwardRef(
156
139
  const slotProps = {
157
140
  ...slotPropsProp ?? {},
158
141
  input: {
159
- ...slotPropsProp?.input ?? {},
160
- ...inputSlotProps,
142
+ ...callerInputSlot,
143
+ startAdornment: resolvedStartAdornment,
144
+ endAdornment: resolvedEndAdornment,
145
+ readOnly: rest.readOnly ?? callerInputSlot.readOnly,
161
146
  sx: {
162
- ...slotPropsProp?.input?.sx ?? {},
163
- ...inputSlotProps.sx
147
+ ...callerInputSlot.sx ?? {},
148
+ "& input, & textarea": {
149
+ textAlign: centerText ? "center" : void 0,
150
+ color: textColor ?? void 0
151
+ }
164
152
  }
165
153
  },
166
154
  inputLabel: {
167
- ...slotPropsProp?.inputLabel ?? {},
168
- ...inputLabelProps
155
+ shrink: true,
156
+ ...callerInputLabelSlot
169
157
  },
170
158
  htmlInput: {
171
- ...slotPropsProp?.htmlInput ?? {},
172
- ...htmlInputPropsProp ?? {}
159
+ ...callerHtmlInputSlot
173
160
  }
174
161
  };
175
162
  const TextFieldComponent = TextField;
@@ -359,15 +346,15 @@ var LSSliderInput = ({
359
346
  onChange: (_event, nextValue) => handleInputChange({ target: { value: nextValue ?? "" } }),
360
347
  value: displayValue ?? "",
361
348
  inputAfterText,
362
- InputProps: {
363
- ...inputProps?.InputProps ?? {},
364
- name,
365
- type: "number",
366
- value: displayValue,
367
- min: displayMinimum,
368
- max: displayMaximum,
369
- step: displayStep,
370
- inputMode: stepPrecision > 0 ? "decimal" : "numeric"
349
+ slotProps: {
350
+ ...inputProps?.slotProps ?? {},
351
+ htmlInput: {
352
+ ...inputProps?.slotProps?.htmlInput ?? {},
353
+ min: displayMinimum,
354
+ max: displayMaximum,
355
+ step: displayStep,
356
+ inputMode: stepPrecision > 0 ? "decimal" : "numeric"
357
+ }
371
358
  },
372
359
  fullWidth: hideSlider ? fullWidth : false,
373
360
  $noMinHeight: false,
@@ -431,6 +418,16 @@ var LSSelect = ({
431
418
  border: "1px solid var(--neutralDark4)",
432
419
  borderRadius: "var(--radius, 1rem)",
433
420
  boxShadow: "0 16px 32px rgba(0, 0, 0, 0.32)",
421
+ "& .MuiList-root": {
422
+ backgroundColor: "var(--neutralDark2)"
423
+ },
424
+ "& .MuiListSubheader-root": {
425
+ backgroundColor: "var(--neutralDark1)",
426
+ color: "var(--neutralLight2)"
427
+ },
428
+ "& .MuiMenuItem-root": {
429
+ color: "var(--neutralLight1)"
430
+ },
434
431
  ...MenuProps?.slotProps?.paper?.sx
435
432
  }
436
433
  },
@@ -442,28 +439,6 @@ var LSSelect = ({
442
439
  ...MenuProps?.slotProps?.list?.sx
443
440
  }
444
441
  }
445
- },
446
- PaperProps: {
447
- ...MenuProps?.PaperProps ?? {},
448
- sx: {
449
- background: "var(--neutralDark2) !important",
450
- backgroundColor: "var(--neutralDark2)",
451
- color: "var(--neutralLight1)",
452
- border: "1px solid var(--neutralDark4)",
453
- borderRadius: "var(--radius, 1rem)",
454
- boxShadow: "0 16px 32px rgba(0, 0, 0, 0.32)",
455
- "& .MuiList-root": {
456
- backgroundColor: "var(--neutralDark2)"
457
- },
458
- "& .MuiListSubheader-root": {
459
- backgroundColor: "var(--neutralDark1)",
460
- color: "var(--neutralLight2)"
461
- },
462
- "& .MuiMenuItem-root": {
463
- color: "var(--neutralLight1)"
464
- },
465
- ...MenuProps?.PaperProps?.sx
466
- }
467
442
  }
468
443
  };
469
444
  return /* @__PURE__ */ jsxs2(
@@ -783,14 +758,7 @@ LSDatePicker.displayName = "LSDatePicker";
783
758
  import { KeyboardArrowDown } from "@mui/icons-material";
784
759
  import Autocomplete from "@mui/material/Autocomplete";
785
760
  import TextField2 from "@mui/material/TextField";
786
- import {
787
- memo,
788
- startTransition,
789
- useEffect as useEffect3,
790
- useMemo as useMemo2,
791
- useRef as useRef2,
792
- useState as useState3
793
- } from "react";
761
+ import { memo, startTransition, useEffect as useEffect3, useMemo as useMemo2, useRef as useRef2, useState as useState3 } from "react";
794
762
  import { jsx as jsx8 } from "react/jsx-runtime";
795
763
  var LSFontPicker = memo(function LSFontPicker2({
796
764
  value,
@@ -848,9 +816,7 @@ var LSFontPicker = memo(function LSFontPicker2({
848
816
  popupIcon: /* @__PURE__ */ jsx8(KeyboardArrowDown, {}),
849
817
  isOptionEqualToValue: (option, selectedValue) => option === selectedValue,
850
818
  onChange: (_event, newValue) => {
851
- handleValueChange(
852
- typeof newValue === "string" ? newValue : `${newValue ?? ""}`
853
- );
819
+ handleValueChange(typeof newValue === "string" ? newValue : `${newValue ?? ""}`);
854
820
  },
855
821
  onInputChange: (_event, newInputValue, reason) => {
856
822
  if (reason === "input" || reason === "clear") {
@@ -907,11 +873,7 @@ var LSFontPicker = memo(function LSFontPicker2({
907
873
  );
908
874
  },
909
875
  renderInput: (params) => {
910
- const {
911
- InputLabelProps: paramsInputLabelProps,
912
- InputProps: paramsInputProps,
913
- ...restParams
914
- } = params;
876
+ const { slotProps: paramsSlotProps = {}, ...restParams } = params;
915
877
  return /* @__PURE__ */ jsx8(
916
878
  TextFieldComponent,
917
879
  {
@@ -928,12 +890,16 @@ var LSFontPicker = memo(function LSFontPicker2({
928
890
  }
929
891
  },
930
892
  slotProps: {
893
+ ...paramsSlotProps,
931
894
  inputLabel: {
932
- shrink: true,
933
- ...paramsInputLabelProps ?? {}
895
+ ...paramsSlotProps.inputLabel ?? {},
896
+ shrink: true
934
897
  },
935
898
  input: {
936
- ...paramsInputProps ?? {}
899
+ ...paramsSlotProps.input ?? {}
900
+ },
901
+ htmlInput: {
902
+ ...paramsSlotProps.htmlInput ?? {}
937
903
  }
938
904
  }
939
905
  }
@@ -976,6 +942,12 @@ var LSMultiSelect = ({
976
942
  /* @__PURE__ */ jsx9("div", { className: "ls-multi-select-value__count", children: `(${selected.length})` })
977
943
  ] }),
978
944
  MenuProps: {
945
+ // The previous version of this also set `PaperProps` here — that
946
+ // prop was removed from Menu in @mui/material v9 and React warns
947
+ // "does not recognize the `PaperProps` prop on a DOM element"
948
+ // when Menu spreads it through. Folded the one unique selector
949
+ // (`& .MuiList-root`) into `slotProps.paper.sx` below; everything
950
+ // else was already duplicated there.
979
951
  slotProps: {
980
952
  paper: {
981
953
  sx: {
@@ -987,7 +959,10 @@ var LSMultiSelect = ({
987
959
  boxShadow: "0 16px 32px rgba(0, 0, 0, 0.32)",
988
960
  backdropFilter: "none",
989
961
  opacity: 1,
990
- maxHeight: "280px !important"
962
+ maxHeight: "280px !important",
963
+ "& .MuiList-root": {
964
+ backgroundColor: "var(--neutralDark2)"
965
+ }
991
966
  }
992
967
  },
993
968
  list: {
@@ -996,21 +971,6 @@ var LSMultiSelect = ({
996
971
  color: "var(--neutralLight1)"
997
972
  }
998
973
  }
999
- },
1000
- PaperProps: {
1001
- sx: {
1002
- background: "var(--neutralDark2) !important",
1003
- backgroundColor: "var(--neutralDark2)",
1004
- color: "var(--neutralLight1)",
1005
- backdropFilter: "none",
1006
- opacity: 1,
1007
- maxHeight: "280px !important",
1008
- border: "1px solid var(--neutralDark4)",
1009
- borderRadius: "var(--radius, 1rem)",
1010
- "& .MuiList-root": {
1011
- backgroundColor: "var(--neutralDark2)"
1012
- }
1013
- }
1014
974
  }
1015
975
  },
1016
976
  children: options.map((option) => /* @__PURE__ */ jsxs4(
@@ -1077,7 +1037,8 @@ import { forwardRef as forwardRef4 } from "react";
1077
1037
  import { jsx as jsx11 } from "react/jsx-runtime";
1078
1038
  var LSTextField = forwardRef4(
1079
1039
  (props, ref) => {
1080
- const { InputLabelProps, InputProps, slotProps, ...rest } = props;
1040
+ const { slotProps, ...rest } = props;
1041
+ const paramsInputLabel = slotProps?.inputLabel ?? {};
1081
1042
  return /* @__PURE__ */ jsx11(
1082
1043
  TextField3,
1083
1044
  {
@@ -1086,18 +1047,9 @@ var LSTextField = forwardRef4(
1086
1047
  className: "mui-ls-input",
1087
1048
  slotProps: {
1088
1049
  ...slotProps ?? {},
1089
- input: {
1090
- ...slotProps?.input ?? {},
1091
- ...InputProps ?? {},
1092
- sx: {
1093
- ...slotProps?.input?.sx ?? {},
1094
- ...InputProps?.sx ?? {}
1095
- }
1096
- },
1097
1050
  inputLabel: {
1098
- ...slotProps?.inputLabel ?? {},
1099
- shrink: true,
1100
- ...InputLabelProps ?? {}
1051
+ ...paramsInputLabel,
1052
+ shrink: true
1101
1053
  }
1102
1054
  },
1103
1055
  ref
@@ -2256,14 +2208,12 @@ var VariableInputTextField = forwardRef5(
2256
2208
  containerRef,
2257
2209
  showVariableIcon
2258
2210
  }, ref) => {
2259
- const inputPropsInputProps = inputProps?.InputProps ?? {};
2260
- const paramsInputProps = params?.InputProps ?? {};
2261
- const inputPropsSlotInputProps = inputProps?.slotProps?.input ?? {};
2262
- const paramsSlotInputProps = params?.slotProps?.input ?? {};
2211
+ const inputPropsSlotInput = inputProps?.slotProps?.input ?? {};
2212
+ const paramsSlotInput = params?.slotProps?.input ?? {};
2263
2213
  const explicitStartAdornment = inputProps?.startAdornment;
2264
2214
  const resolvedExplicitStartAdornment = explicitStartAdornment ? /* @__PURE__ */ jsx12(InputAdornment2, { position: "start", children: explicitStartAdornment }) : void 0;
2265
- const startAdornment = paramsInputProps.startAdornment ?? paramsSlotInputProps.startAdornment ?? inputPropsInputProps.startAdornment ?? inputPropsSlotInputProps.startAdornment ?? resolvedExplicitStartAdornment;
2266
- const endAdornment = paramsInputProps.endAdornment ?? paramsSlotInputProps.endAdornment ?? inputPropsInputProps.endAdornment ?? inputPropsSlotInputProps.endAdornment;
2215
+ const startAdornment = paramsSlotInput.startAdornment ?? inputPropsSlotInput.startAdornment ?? resolvedExplicitStartAdornment;
2216
+ const endAdornment = paramsSlotInput.endAdornment ?? inputPropsSlotInput.endAdornment;
2267
2217
  return /* @__PURE__ */ jsx12(
2268
2218
  LSTextField,
2269
2219
  {
@@ -2285,31 +2235,27 @@ var VariableInputTextField = forwardRef5(
2285
2235
  onChange: onChange ? (e) => onChange(e.target.value) : void 0,
2286
2236
  ...inputProps,
2287
2237
  ...params,
2288
- InputProps: {
2289
- ...inputPropsSlotInputProps,
2290
- ...inputPropsInputProps,
2291
- ...paramsSlotInputProps,
2292
- ...paramsInputProps,
2293
- startAdornment,
2294
- endAdornment: /* @__PURE__ */ jsxs5(Fragment3, { children: [
2295
- endAdornment ?? null,
2296
- showVariableIcon ? /* @__PURE__ */ jsx12(
2297
- Tooltip,
2298
- {
2299
- title: t("chatbot.allowed-variables", "Allowed Variables"),
2300
- children: /* @__PURE__ */ jsx12(
2301
- InputAdornment2,
2302
- {
2303
- position: "end",
2304
- onClick: clickedVariableIcon,
2305
- ref: containerRef,
2306
- className: "ls-variable-input-adornment",
2307
- children: "{}"
2308
- }
2309
- )
2310
- }
2311
- ) : null
2312
- ] })
2238
+ slotProps: {
2239
+ ...inputProps?.slotProps ?? {},
2240
+ ...params?.slotProps ?? {},
2241
+ input: {
2242
+ ...inputPropsSlotInput,
2243
+ ...paramsSlotInput,
2244
+ startAdornment,
2245
+ endAdornment: /* @__PURE__ */ jsxs5(Fragment3, { children: [
2246
+ endAdornment ?? null,
2247
+ showVariableIcon ? /* @__PURE__ */ jsx12(Tooltip, { title: t("chatbot.allowed-variables", "Allowed Variables"), children: /* @__PURE__ */ jsx12(
2248
+ InputAdornment2,
2249
+ {
2250
+ position: "end",
2251
+ onClick: clickedVariableIcon,
2252
+ ref: containerRef,
2253
+ className: "ls-variable-input-adornment",
2254
+ children: "{}"
2255
+ }
2256
+ ) }) : null
2257
+ ] })
2258
+ }
2313
2259
  },
2314
2260
  inputRef: ref
2315
2261
  }
@@ -4145,13 +4091,15 @@ function seExtraTextCss(seCss, scrolling) {
4145
4091
  extra.WebkitTextStrokeWidth = seCss["-webkit-text-stroke-width"];
4146
4092
  if (seCss["letter-spacing"] != null) extra.letterSpacing = seCss["letter-spacing"];
4147
4093
  if (seCss["word-spacing"] != null) extra.wordSpacing = seCss["word-spacing"];
4148
- if (scrolling?.enabled) {
4149
- extra.scroll = true;
4150
- const speed = Number(scrolling.speed);
4151
- if (Number.isFinite(speed) && speed > 0) extra.scrollSpeed = speed * 600;
4152
- }
4094
+ if (scrolling?.enabled) extra.scroll = true;
4153
4095
  return extra;
4154
4096
  }
4097
+ function seMarqueeSpeedPxPerSec(scrolling) {
4098
+ if (!scrolling?.enabled) return void 0;
4099
+ const speed = Number(scrolling.speed);
4100
+ if (!Number.isFinite(speed) || speed <= 0) return void 0;
4101
+ return speed * 12;
4102
+ }
4155
4103
  function mapText(widget, ctx) {
4156
4104
  const value = translateSeText(
4157
4105
  widget.text?.value ?? "",
@@ -4161,13 +4109,15 @@ function mapText(widget, ctx) {
4161
4109
  { context: "static" }
4162
4110
  );
4163
4111
  const seCss = widget.text?.css ?? {};
4112
+ const marqueeSpeed = seMarqueeSpeedPxPerSec(widget.text?.scrolling);
4164
4113
  return buildUnit(
4165
4114
  widget,
4166
4115
  "text",
4167
4116
  {
4168
4117
  content: {
4169
4118
  value,
4170
- highlightColor: "inherit"
4119
+ highlightColor: "inherit",
4120
+ ...marqueeSpeed != null ? { marqueeSpeed } : {}
4171
4121
  },
4172
4122
  css: {
4173
4123
  fontSize: seCss["font-size"] ?? 24,
@@ -4184,25 +4134,41 @@ function mapText(widget, ctx) {
4184
4134
  ctx
4185
4135
  );
4186
4136
  }
4137
+ function seInnerAutoFit(widget, innerCss, mode) {
4138
+ const isInnerAutoWidth = innerCss?.width === "auto";
4139
+ const isInnerAutoHeight = innerCss?.height === "auto";
4140
+ if (mode === "width-drives-both") {
4141
+ if (!isInnerAutoWidth) return {};
4142
+ return { objectFit: "contain", autoWidth: true, autoHeight: true };
4143
+ }
4144
+ if (!isInnerAutoWidth && !isInnerAutoHeight) return {};
4145
+ const result = { objectFit: "contain" };
4146
+ if (isInnerAutoWidth && !isExplicitPxSize(widget.css?.width))
4147
+ result.autoWidth = true;
4148
+ if (isInnerAutoHeight && !isExplicitPxSize(widget.css?.height))
4149
+ result.autoHeight = true;
4150
+ return result;
4151
+ }
4152
+ function applySeAutoFitBounds(unit, fit) {
4153
+ const bounds = unit.layer.bounds;
4154
+ if (fit.autoWidth) bounds.autoWidth = true;
4155
+ if (fit.autoHeight) bounds.autoHeight = true;
4156
+ }
4187
4157
  function mapImage(widget, ctx) {
4158
+ const fit = seInnerAutoFit(widget, widget.image?.css, "inner-axis-gated");
4188
4159
  const unit = buildUnit(
4189
4160
  widget,
4190
4161
  "image",
4191
4162
  {
4192
4163
  content: {
4193
4164
  src: widget.image?.src ?? "",
4194
- loop: true
4165
+ loop: true,
4166
+ ...fit.objectFit ? { objectFit: fit.objectFit } : {}
4195
4167
  }
4196
4168
  },
4197
4169
  ctx
4198
4170
  );
4199
- const innerWidth = widget.image?.css?.width;
4200
- const innerHeight = widget.image?.css?.height;
4201
- const outerWidthExplicit = isExplicitPxSize(widget.css?.width);
4202
- const outerHeightExplicit = isExplicitPxSize(widget.css?.height);
4203
- const bounds = unit.layer.bounds;
4204
- if (innerWidth === "auto" && !outerWidthExplicit) bounds.autoWidth = true;
4205
- if (innerHeight === "auto" && !outerHeightExplicit) bounds.autoHeight = true;
4171
+ applySeAutoFitBounds(unit, fit);
4206
4172
  return unit;
4207
4173
  }
4208
4174
  function isExplicitPxSize(value) {
@@ -4216,8 +4182,7 @@ function isExplicitPxSize(value) {
4216
4182
  return Number.isFinite(parsed) && parsed > 0;
4217
4183
  }
4218
4184
  function mapVideo(widget, ctx) {
4219
- const innerWidth = widget.video?.css?.width;
4220
- const isInnerAutoWidth = innerWidth === "auto";
4185
+ const fit = seInnerAutoFit(widget, widget.video?.css, "width-drives-both");
4221
4186
  const unit = buildUnit(
4222
4187
  widget,
4223
4188
  "video",
@@ -4226,19 +4191,13 @@ function mapVideo(widget, ctx) {
4226
4191
  src: widget.video?.src ?? "",
4227
4192
  volume: widget.video?.volume ?? 0.5,
4228
4193
  loop: true,
4229
- muted: false,
4230
- ...isInnerAutoWidth ? { objectFit: "contain" } : {}
4194
+ muted: false
4231
4195
  }
4232
4196
  },
4233
4197
  ctx
4234
4198
  );
4235
- const bounds = unit.layer.bounds;
4236
- if (isInnerAutoWidth) {
4237
- bounds.autoWidth = true;
4238
- bounds.autoHeight = true;
4239
- } else {
4240
- bounds.autoHeight = true;
4241
- }
4199
+ applySeAutoFitBounds(unit, fit);
4200
+ unit.layer.bounds.autoHeight = true;
4242
4201
  return unit;
4243
4202
  }
4244
4203
  var LUMIA_SNOW_WEBM = "https://storage.lumiastream.com/overlays/global/seasonal/snow.webm";
@@ -4269,11 +4228,16 @@ function mapReadout(widget, fallbackVar, ctx) {
4269
4228
  context: "static"
4270
4229
  }) : `{{${variable}}}`;
4271
4230
  const seCss = widget.text?.css ?? {};
4231
+ const marqueeSpeed = seMarqueeSpeedPxPerSec(widget.text?.scrolling);
4272
4232
  return buildUnit(
4273
4233
  widget,
4274
4234
  "text",
4275
4235
  {
4276
- content: { value, highlightColor: "inherit" },
4236
+ content: {
4237
+ value,
4238
+ highlightColor: "inherit",
4239
+ ...marqueeSpeed != null ? { marqueeSpeed } : {}
4240
+ },
4277
4241
  css: {
4278
4242
  fontSize: seCss["font-size"] ?? 28,
4279
4243
  textAlign: seCss["text-align"] ?? "center",
@@ -5437,7 +5401,11 @@ function mapEventList(widget, ctx) {
5437
5401
  ...isMarquee ? { marqueeItemGap: 24 } : {},
5438
5402
  showAlertIcon: !isMarquee,
5439
5403
  showSiteIcon: !isMarquee,
5440
- showUserAvatar: true,
5404
+ // SE event lists are text-only (`{name}: {amount}` rows for tip-recent,
5405
+ // follower-recent, etc.) — no avatar column. Mirror that on import so
5406
+ // the streamer's layout matches what they had in SE; they can re-enable
5407
+ // avatars from the Eventlist settings panel if they want.
5408
+ showUserAvatar: false,
5441
5409
  showDetailedText: false,
5442
5410
  hideAlertMessage: false
5443
5411
  }