@uzum-tech/ui 2.2.1 → 2.3.1

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.
Files changed (91) hide show
  1. package/dist/index.js +1359 -625
  2. package/dist/index.mjs +1352 -626
  3. package/dist/index.prod.js +2 -2
  4. package/dist/index.prod.mjs +2 -2
  5. package/es/chat/index.d.ts +2 -0
  6. package/es/chat/index.mjs +1 -0
  7. package/es/chat/src/Chat.d.ts +22008 -158
  8. package/es/chat/src/Chat.mjs +1 -1
  9. package/es/chat/src/ChatListItems.d.ts +360 -0
  10. package/es/chat/src/ChatMainArea.d.ts +10109 -0
  11. package/es/chat/src/{ChatParts/MainArea.mjs → ChatMainArea.mjs} +410 -75
  12. package/es/chat/src/ChatMessages.d.ts +361 -33
  13. package/es/chat/src/ChatMessages.mjs +106 -167
  14. package/es/chat/src/ChatParts/Sidebar.d.ts +78 -0
  15. package/es/chat/src/interface.d.ts +17 -12
  16. package/es/chat/src/interface.mjs +7 -1
  17. package/es/chat/src/styles/index.cssr.mjs +4 -1
  18. package/es/chat/styles/dark.d.ts +27 -0
  19. package/es/chat/styles/dark.mjs +2 -0
  20. package/es/chat/styles/light.d.ts +27 -0
  21. package/es/chat/styles/light.mjs +2 -0
  22. package/es/components.d.ts +30865 -513
  23. package/es/components.mjs +6 -1
  24. package/es/config-provider/src/internal-interface.d.ts +4 -0
  25. package/es/message-bubble/index.d.ts +3 -0
  26. package/es/message-bubble/index.mjs +2 -0
  27. package/es/message-bubble/src/MessageBubble.d.ts +304 -0
  28. package/es/message-bubble/src/MessageBubble.mjs +340 -0
  29. package/es/message-bubble/src/interface.d.ts +206 -0
  30. package/es/message-bubble/src/interface.mjs +92 -0
  31. package/es/message-bubble/src/styles/index.cssr.d.ts +2 -0
  32. package/es/message-bubble/src/styles/index.cssr.mjs +131 -0
  33. package/es/message-bubble/styles/dark.d.ts +29 -0
  34. package/es/message-bubble/styles/dark.mjs +13 -0
  35. package/es/message-bubble/styles/index.d.ts +3 -0
  36. package/es/message-bubble/styles/index.mjs +2 -0
  37. package/es/message-bubble/styles/light.d.ts +49 -0
  38. package/es/message-bubble/styles/light.mjs +44 -0
  39. package/es/styles.d.ts +1 -0
  40. package/es/styles.mjs +1 -0
  41. package/es/themes/dark.mjs +2 -0
  42. package/es/themes/light.mjs +2 -0
  43. package/es/upload/src/Upload.d.ts +1 -1
  44. package/es/version.d.ts +1 -1
  45. package/es/version.mjs +1 -1
  46. package/lib/chat/index.d.ts +2 -0
  47. package/lib/chat/index.js +3 -1
  48. package/lib/chat/src/Chat.d.ts +22008 -158
  49. package/lib/chat/src/Chat.js +2 -2
  50. package/lib/chat/src/ChatListItems.d.ts +360 -0
  51. package/lib/chat/src/ChatMainArea.d.ts +10109 -0
  52. package/lib/chat/src/{ChatParts/MainArea.js → ChatMainArea.js} +300 -30
  53. package/lib/chat/src/ChatMessages.d.ts +361 -33
  54. package/lib/chat/src/ChatMessages.js +68 -158
  55. package/lib/chat/src/ChatParts/Sidebar.d.ts +78 -0
  56. package/lib/chat/src/interface.d.ts +17 -12
  57. package/lib/chat/src/interface.js +7 -1
  58. package/lib/chat/src/styles/index.cssr.js +4 -1
  59. package/lib/chat/styles/dark.d.ts +27 -0
  60. package/lib/chat/styles/dark.js +6 -4
  61. package/lib/chat/styles/light.d.ts +27 -0
  62. package/lib/chat/styles/light.js +6 -4
  63. package/lib/components.d.ts +30865 -513
  64. package/lib/components.js +18 -8
  65. package/lib/config-provider/src/internal-interface.d.ts +4 -0
  66. package/lib/message-bubble/index.d.ts +3 -0
  67. package/lib/message-bubble/index.js +14 -0
  68. package/lib/message-bubble/src/MessageBubble.d.ts +304 -0
  69. package/lib/message-bubble/src/MessageBubble.js +280 -0
  70. package/lib/message-bubble/src/interface.d.ts +206 -0
  71. package/lib/message-bubble/src/interface.js +80 -0
  72. package/lib/message-bubble/src/styles/index.cssr.d.ts +2 -0
  73. package/lib/message-bubble/src/styles/index.cssr.js +136 -0
  74. package/lib/message-bubble/styles/dark.d.ts +29 -0
  75. package/lib/message-bubble/styles/dark.js +15 -0
  76. package/lib/message-bubble/styles/index.d.ts +3 -0
  77. package/lib/message-bubble/styles/index.js +10 -0
  78. package/lib/message-bubble/styles/light.d.ts +49 -0
  79. package/lib/message-bubble/styles/light.js +36 -0
  80. package/lib/styles.d.ts +1 -0
  81. package/lib/styles.js +84 -82
  82. package/lib/themes/dark.js +78 -76
  83. package/lib/themes/light.js +76 -74
  84. package/lib/upload/src/Upload.d.ts +1 -1
  85. package/lib/version.d.ts +1 -1
  86. package/lib/version.js +1 -1
  87. package/package.json +2 -2
  88. package/volar.d.ts +2 -0
  89. package/web-types.json +177 -14
  90. package/es/chat/src/ChatParts/MainArea.d.ts +0 -20
  91. package/lib/chat/src/ChatParts/MainArea.d.ts +0 -20
package/dist/index.js CHANGED
@@ -3412,7 +3412,7 @@
3412
3412
  }
3413
3413
 
3414
3414
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
3415
- const style$1Z = c([c('.v-binder-follower-container', {
3415
+ const style$1_ = c([c('.v-binder-follower-container', {
3416
3416
  position: 'absolute',
3417
3417
  left: '0',
3418
3418
  right: '0',
@@ -3491,7 +3491,7 @@
3491
3491
  }
3492
3492
  });
3493
3493
  const ssrAdapter = useSsrAdapter();
3494
- style$1Z.mount({
3494
+ style$1_.mount({
3495
3495
  id: 'vueuc/binder',
3496
3496
  head: true,
3497
3497
  anchorMetaName: cssrAnchorMetaName$1,
@@ -4951,7 +4951,7 @@
4951
4951
 
4952
4952
  /* eslint-disable @typescript-eslint/strict-boolean-expressions */
4953
4953
  const hiddenAttr = 'v-hidden';
4954
- const style$1Y = c('[v-hidden]', {
4954
+ const style$1Z = c('[v-hidden]', {
4955
4955
  display: 'none!important'
4956
4956
  });
4957
4957
  var VOverflow = vue.defineComponent({
@@ -5064,7 +5064,7 @@
5064
5064
  }
5065
5065
  }
5066
5066
  const ssrAdapter = useSsrAdapter();
5067
- style$1Y.mount({
5067
+ style$1Z.mount({
5068
5068
  id: 'vueuc/overflow',
5069
5069
  head: true,
5070
5070
  anchorMetaName: cssrAnchorMetaName$1,
@@ -14084,7 +14084,7 @@
14084
14084
  builtinThemeOverrides: Object
14085
14085
  };
14086
14086
 
14087
- var style$1X = cB("base-icon", `
14087
+ var style$1Y = cB("base-icon", `
14088
14088
  height: 1em;
14089
14089
  width: 1em;
14090
14090
  line-height: 1em;
@@ -14120,7 +14120,7 @@
14120
14120
  onMouseup: Function
14121
14121
  },
14122
14122
  setup(props) {
14123
- useStyle("-base-icon", style$1X, vue.toRef(props, "clsPrefix"));
14123
+ useStyle("-base-icon", style$1Y, vue.toRef(props, "clsPrefix"));
14124
14124
  },
14125
14125
  render() {
14126
14126
  return /* @__PURE__ */ vue.h(
@@ -14155,7 +14155,7 @@
14155
14155
  onClick: Function
14156
14156
  };
14157
14157
 
14158
- var style$1W = cB("icon", `
14158
+ var style$1X = cB("icon", `
14159
14159
  height: 1em;
14160
14160
  width: 1em;
14161
14161
  line-height: 1em;
@@ -14341,7 +14341,7 @@
14341
14341
  boxShadow2: "0px 20px 80px 0px rgba(0, 0, 0, 0.07)"
14342
14342
  };
14343
14343
 
14344
- function self$1D(vars) {
14344
+ function self$1E(vars) {
14345
14345
  const {
14346
14346
  elementsPrimary
14347
14347
  } = vars;
@@ -14357,13 +14357,13 @@
14357
14357
  const iconLight = {
14358
14358
  name: "Icon",
14359
14359
  common: derived,
14360
- self: self$1D
14360
+ self: self$1E
14361
14361
  };
14362
14362
 
14363
14363
  const iconDark$1 = {
14364
14364
  name: "Icon",
14365
14365
  common: derived$1,
14366
- self: self$1D
14366
+ self: self$1E
14367
14367
  };
14368
14368
 
14369
14369
  const FALLBACK_ICON = "&#65533";
@@ -14377,7 +14377,7 @@
14377
14377
  mergedIconPacksRef,
14378
14378
  inlineThemeDisabled
14379
14379
  } = useConfig(props);
14380
- const themeRef = useTheme("Icon", "-icon", style$1W, iconLight, props, mergedClsPrefixRef);
14380
+ const themeRef = useTheme("Icon", "-icon", style$1X, iconLight, props, mergedClsPrefixRef);
14381
14381
  const cssVarsRef = vue.computed(() => {
14382
14382
  const {
14383
14383
  depth
@@ -14518,7 +14518,7 @@
14518
14518
  avatarSize: "16px"
14519
14519
  };
14520
14520
 
14521
- function self$1C(vars) {
14521
+ function self$1D(vars) {
14522
14522
  const {
14523
14523
  heightHuge,
14524
14524
  fontBodyLarge,
@@ -14548,16 +14548,16 @@
14548
14548
  const accountOptionLight = {
14549
14549
  name: "AccountOption",
14550
14550
  common: derived,
14551
- self: self$1C
14551
+ self: self$1D
14552
14552
  };
14553
14553
 
14554
14554
  const accountOptionDark = {
14555
14555
  name: "AccountOption",
14556
14556
  common: derived$1,
14557
- self: self$1C
14557
+ self: self$1D
14558
14558
  };
14559
14559
 
14560
- var style$1V = cB("base-account-option", `
14560
+ var style$1W = cB("base-account-option", `
14561
14561
  display: flex;
14562
14562
  align-items: center;
14563
14563
  position: relative;
@@ -14612,7 +14612,7 @@
14612
14612
  const themeRef = useTheme(
14613
14613
  "AccountOption",
14614
14614
  "-base-account-option",
14615
- style$1V,
14615
+ style$1W,
14616
14616
  accountOptionLight,
14617
14617
  props,
14618
14618
  mergedClsPrefixRef
@@ -16092,7 +16092,7 @@
16092
16092
  })];
16093
16093
  }
16094
16094
 
16095
- var style$1U = cB("base-clear", `
16095
+ var style$1V = cB("base-clear", `
16096
16096
  flex-shrink: 0;
16097
16097
  height: 1em;
16098
16098
  width: 1em;
@@ -16133,7 +16133,7 @@
16133
16133
  onClear: Function
16134
16134
  },
16135
16135
  setup(props) {
16136
- useStyle("-base-clear", style$1U, vue.toRef(props, "clsPrefix"));
16136
+ useStyle("-base-clear", style$1V, vue.toRef(props, "clsPrefix"));
16137
16137
  return {
16138
16138
  handleMouseDown(e) {
16139
16139
  e.preventDefault();
@@ -16164,7 +16164,7 @@
16164
16164
  }
16165
16165
  });
16166
16166
 
16167
- var style$1T = cB("base-close", `
16167
+ var style$1U = cB("base-close", `
16168
16168
  display: flex;
16169
16169
  align-items: center;
16170
16170
  justify-content: center;
@@ -16236,7 +16236,7 @@
16236
16236
  absolute: Boolean
16237
16237
  },
16238
16238
  setup(props) {
16239
- useStyle("-base-close", style$1T, vue.toRef(props, "clsPrefix"));
16239
+ useStyle("-base-close", style$1U, vue.toRef(props, "clsPrefix"));
16240
16240
  return () => {
16241
16241
  const { clsPrefix, disabled, absolute, round, isButtonTag } = props;
16242
16242
  const Tag = isButtonTag ? "button" : "div";
@@ -16395,7 +16395,7 @@
16395
16395
  }
16396
16396
  });
16397
16397
 
16398
- var style$1S = c$1([c$1("@keyframes loading-container-rotate", `
16398
+ var style$1T = c$1([c$1("@keyframes loading-container-rotate", `
16399
16399
  to {
16400
16400
  -webkit-transform: rotate(360deg);
16401
16401
  transform: rotate(360deg);
@@ -16565,7 +16565,7 @@
16565
16565
  ...exposedLoadingProps
16566
16566
  },
16567
16567
  setup(props) {
16568
- useStyle("-base-loading", style$1S, vue.toRef(props, "clsPrefix"));
16568
+ useStyle("-base-loading", style$1T, vue.toRef(props, "clsPrefix"));
16569
16569
  },
16570
16570
  render() {
16571
16571
  const { clsPrefix, radius, strokeWidth, stroke, scale } = this;
@@ -16695,7 +16695,7 @@
16695
16695
  })];
16696
16696
  }
16697
16697
 
16698
- var style$1R = cB("base-menu-mask", `
16698
+ var style$1S = cB("base-menu-mask", `
16699
16699
  position: absolute;
16700
16700
  left: 0;
16701
16701
  right: 0;
@@ -16718,7 +16718,7 @@
16718
16718
  }
16719
16719
  },
16720
16720
  setup(props) {
16721
- useStyle("-base-menu-mask", style$1R, vue.toRef(props, "clsPrefix"));
16721
+ useStyle("-base-menu-mask", style$1S, vue.toRef(props, "clsPrefix"));
16722
16722
  const messageRef = vue.ref(null);
16723
16723
  let timerId = null;
16724
16724
  const uncontrolledShowRef = vue.ref(false);
@@ -16906,7 +16906,7 @@
16906
16906
  railColor: "transparent"
16907
16907
  };
16908
16908
 
16909
- function self$1B(vars) {
16909
+ function self$1C(vars) {
16910
16910
  const {
16911
16911
  scrollbarColor,
16912
16912
  scrollbarColorHover,
@@ -16926,13 +16926,13 @@
16926
16926
  const safeTopScrollbarLight = {
16927
16927
  name: "SafeTopScrollbar",
16928
16928
  common: derived,
16929
- self: self$1B
16929
+ self: self$1C
16930
16930
  };
16931
16931
 
16932
16932
  const safeTopScrollbarDark = {
16933
16933
  name: "SafeTopScrollbar",
16934
16934
  common: derived$1,
16935
- self: self$1B
16935
+ self: self$1C
16936
16936
  };
16937
16937
 
16938
16938
  cB("scrollbar", [cM("rtl", `
@@ -16945,7 +16945,7 @@
16945
16945
  right: unset;
16946
16946
  `)])])])]);
16947
16947
 
16948
- var style$1Q = cB("safe-top-scrollbar", `
16948
+ var style$1R = cB("safe-top-scrollbar", `
16949
16949
  overflow: hidden;
16950
16950
  position: relative;
16951
16951
  z-index: auto;
@@ -17094,7 +17094,7 @@
17094
17094
  const themeRef = useTheme(
17095
17095
  "SafeTopScrollbar",
17096
17096
  "-safe-top-scrollbar",
17097
- style$1Q,
17097
+ style$1R,
17098
17098
  safeTopScrollbarLight,
17099
17099
  props,
17100
17100
  mergedClsPrefixRef
@@ -17828,7 +17828,7 @@
17828
17828
  railColor: "transparent"
17829
17829
  };
17830
17830
 
17831
- function self$1A(vars) {
17831
+ function self$1B(vars) {
17832
17832
  const {
17833
17833
  scrollbarColor,
17834
17834
  scrollbarColorHover,
@@ -17848,13 +17848,13 @@
17848
17848
  const scrollbarLight = {
17849
17849
  name: "Scrollbar",
17850
17850
  common: derived,
17851
- self: self$1A
17851
+ self: self$1B
17852
17852
  };
17853
17853
 
17854
17854
  const scrollbarDark = {
17855
17855
  name: "Scrollbar",
17856
17856
  common: derived$1,
17857
- self: self$1A
17857
+ self: self$1B
17858
17858
  };
17859
17859
 
17860
17860
  var rtlStyle$t = cB("scrollbar", [cM("rtl", `
@@ -17872,7 +17872,7 @@
17872
17872
  style: rtlStyle$t
17873
17873
  };
17874
17874
 
17875
- var style$1P = cB("scrollbar", `
17875
+ var style$1Q = cB("scrollbar", `
17876
17876
  overflow: hidden;
17877
17877
  position: relative;
17878
17878
  z-index: auto;
@@ -18015,7 +18015,7 @@
18015
18015
  const themeRef = useTheme(
18016
18016
  "Scrollbar",
18017
18017
  "-scrollbar",
18018
- style$1P,
18018
+ style$1Q,
18019
18019
  scrollbarLight,
18020
18020
  props,
18021
18021
  mergedClsPrefixRef
@@ -19387,7 +19387,7 @@
19387
19387
  return treemate;
19388
19388
  }
19389
19389
 
19390
- function self$1z(vars) {
19390
+ function self$1A(vars) {
19391
19391
  const {
19392
19392
  fontBodyMedium,
19393
19393
  fontTitleLarge,
@@ -19419,16 +19419,16 @@
19419
19419
  const emptyLight = {
19420
19420
  name: "Empty",
19421
19421
  common: derived,
19422
- self: self$1z
19422
+ self: self$1A
19423
19423
  };
19424
19424
 
19425
19425
  const emptyDark$1 = {
19426
19426
  name: "Empty",
19427
19427
  common: derived$1,
19428
- self: self$1z
19428
+ self: self$1A
19429
19429
  };
19430
19430
 
19431
- var style$1O = cB("empty", `
19431
+ var style$1P = cB("empty", `
19432
19432
  display: flex;
19433
19433
  flex-direction: column;
19434
19434
  align-items: center;
@@ -19506,7 +19506,7 @@
19506
19506
  const themeRef = useTheme(
19507
19507
  "Empty",
19508
19508
  "-empty",
19509
- style$1O,
19509
+ style$1P,
19510
19510
  emptyLight,
19511
19511
  props,
19512
19512
  mergedClsPrefixRef
@@ -19594,7 +19594,7 @@
19594
19594
  }
19595
19595
  });
19596
19596
 
19597
- function self$1y(vars) {
19597
+ function self$1z(vars) {
19598
19598
  const {
19599
19599
  borderRadius,
19600
19600
  iconMedium,
@@ -19651,7 +19651,7 @@
19651
19651
  Scrollbar: scrollbarLight,
19652
19652
  Empty: emptyLight
19653
19653
  },
19654
- self: self$1y
19654
+ self: self$1z
19655
19655
  });
19656
19656
 
19657
19657
  const internalSelectMenuDark = {
@@ -19661,7 +19661,7 @@
19661
19661
  Scrollbar: scrollbarDark,
19662
19662
  Empty: emptyDark$1
19663
19663
  },
19664
- self: self$1y
19664
+ self: self$1z
19665
19665
  };
19666
19666
 
19667
19667
  cB("base-select-menu", [cM("rtl", `
@@ -19902,7 +19902,7 @@
19902
19902
  })];
19903
19903
  }
19904
19904
 
19905
- var style$1N = cB("base-select-menu", `
19905
+ var style$1O = cB("base-select-menu", `
19906
19906
  line-height: 1.5;
19907
19907
  outline: none;
19908
19908
  z-index: 0;
@@ -20090,7 +20090,7 @@
20090
20090
  const themeRef = useTheme(
20091
20091
  "InternalSelectMenu",
20092
20092
  "-internal-select-menu",
20093
- style$1N,
20093
+ style$1O,
20094
20094
  internalSelectMenuLight,
20095
20095
  props,
20096
20096
  vue.toRef(props, "clsPrefix")
@@ -20558,7 +20558,7 @@
20558
20558
  }
20559
20559
  });
20560
20560
 
20561
- function self$1x(vars) {
20561
+ function self$1y(vars) {
20562
20562
  const {
20563
20563
  fontBodyMedium,
20564
20564
  containerPrimary,
@@ -20585,13 +20585,13 @@
20585
20585
  const popoverLight = {
20586
20586
  name: "Popover",
20587
20587
  common: derived,
20588
- self: self$1x
20588
+ self: self$1y
20589
20589
  };
20590
20590
 
20591
20591
  const popoverDark = {
20592
20592
  name: "Popover",
20593
20593
  common: derived$1,
20594
- self: self$1x
20594
+ self: self$1y
20595
20595
  };
20596
20596
 
20597
20597
  cB("popover", [cM("rtl", `
@@ -20606,7 +20606,7 @@
20606
20606
  right: "left"
20607
20607
  };
20608
20608
  const arrowSize = "var(--u-arrow-height) * 1.414";
20609
- var style$1M = c$1([cB("popover", `
20609
+ var style$1N = c$1([cB("popover", `
20610
20610
  transition:
20611
20611
  box-shadow .3s var(--u-bezier),
20612
20612
  background-color .3s var(--u-bezier),
@@ -20825,7 +20825,7 @@
20825
20825
  const themeRef = useTheme(
20826
20826
  "Popover",
20827
20827
  "-popover",
20828
- style$1M,
20828
+ style$1N,
20829
20829
  popoverLight,
20830
20830
  props,
20831
20831
  mergedClsPrefixRef
@@ -21655,7 +21655,7 @@
21655
21655
  }
21656
21656
  });
21657
21657
 
21658
- function self$1w(vars) {
21658
+ function self$1x(vars) {
21659
21659
  const {
21660
21660
  opacityDisabled,
21661
21661
  borderRadiusSmall: borderRadius,
@@ -21753,13 +21753,13 @@
21753
21753
  const tagLight = {
21754
21754
  name: "Tag",
21755
21755
  common: derived,
21756
- self: self$1w
21756
+ self: self$1x
21757
21757
  };
21758
21758
 
21759
21759
  const tagDark = {
21760
21760
  name: "Tag",
21761
21761
  common: derived$1,
21762
- self: self$1w
21762
+ self: self$1x
21763
21763
  };
21764
21764
 
21765
21765
  var rtlStyle$s = cB("tag", [cM("rtl", `
@@ -21806,7 +21806,7 @@
21806
21806
  }
21807
21807
  };
21808
21808
 
21809
- var style$1L = cB("tag", `
21809
+ var style$1M = cB("tag", `
21810
21810
  white-space: nowrap;
21811
21811
  position: relative;
21812
21812
  box-sizing: border-box;
@@ -21973,7 +21973,7 @@
21973
21973
  const themeRef = useTheme(
21974
21974
  "Tag",
21975
21975
  "-tag",
21976
- style$1L,
21976
+ style$1M,
21977
21977
  tagLight,
21978
21978
  props,
21979
21979
  mergedClsPrefixRef
@@ -22337,7 +22337,7 @@
22337
22337
  }
22338
22338
  });
22339
22339
 
22340
- function self$1v(vars) {
22340
+ function self$1w(vars) {
22341
22341
  const {
22342
22342
  heightSmall,
22343
22343
  heightMedium,
@@ -22357,10 +22357,10 @@
22357
22357
  }
22358
22358
  const skeletonLight$1 = {
22359
22359
  common: derived,
22360
- self: self$1v
22360
+ self: self$1w
22361
22361
  };
22362
22362
 
22363
- var style$1K = c$1([cB("skeleton", `
22363
+ var style$1L = c$1([cB("skeleton", `
22364
22364
  height: 1em;
22365
22365
  width: 100%;
22366
22366
  transition: background-color .3s var(--u-bezier);
@@ -22416,7 +22416,7 @@
22416
22416
  const themeRef = useTheme(
22417
22417
  "Skeleton",
22418
22418
  "-skeleton",
22419
- style$1K,
22419
+ style$1L,
22420
22420
  skeletonLight$1,
22421
22421
  props,
22422
22422
  mergedClsPrefixRef
@@ -22532,7 +22532,7 @@
22532
22532
  }
22533
22533
  });
22534
22534
 
22535
- function self$1u(vars) {
22535
+ function self$1v(vars) {
22536
22536
  const {
22537
22537
  borderRadius,
22538
22538
  iconMedium,
@@ -22690,7 +22690,7 @@
22690
22690
  peers: {
22691
22691
  Popover: popoverLight
22692
22692
  },
22693
- self: self$1u
22693
+ self: self$1v
22694
22694
  });
22695
22695
 
22696
22696
  const internalSelectionDark = {
@@ -22699,7 +22699,7 @@
22699
22699
  peers: {
22700
22700
  Popover: popoverDark
22701
22701
  },
22702
- self: self$1u
22702
+ self: self$1v
22703
22703
  };
22704
22704
 
22705
22705
  cB("base-selection", [cM("rtl", `
@@ -22732,7 +22732,7 @@
22732
22732
  color: var(--u-arrow-color${state}-secondary);
22733
22733
  `)])];
22734
22734
  }
22735
- var style$1J = c$1([cB("base-selection", `
22735
+ var style$1K = c$1([cB("base-selection", `
22736
22736
  position: relative;
22737
22737
  z-index: auto;
22738
22738
  box-shadow: none;
@@ -23083,7 +23083,7 @@
23083
23083
  const themeRef = useTheme(
23084
23084
  "InternalSelection",
23085
23085
  "-internal-selection",
23086
- style$1J,
23086
+ style$1K,
23087
23087
  internalSelectionLight,
23088
23088
  props,
23089
23089
  vue.toRef(props, "clsPrefix")
@@ -24164,7 +24164,7 @@
24164
24164
  })];
24165
24165
  }
24166
24166
 
24167
- var style$1I = c$1([c$1("@keyframes u-base-slot-machine-fade-up-in", `
24167
+ var style$1J = c$1([c$1("@keyframes u-base-slot-machine-fade-up-in", `
24168
24168
  from {
24169
24169
  transform: translateY(60%);
24170
24170
  opacity: 0;
@@ -24283,7 +24283,7 @@
24283
24283
  }
24284
24284
  },
24285
24285
  setup(props) {
24286
- useStyle("-base-slot-machine", style$1I, vue.toRef(props, "clsPrefix"));
24286
+ useStyle("-base-slot-machine", style$1J, vue.toRef(props, "clsPrefix"));
24287
24287
  const oldValueRef = vue.ref();
24288
24288
  const newValueRef = vue.ref();
24289
24289
  const numbersRef = vue.computed(() => {
@@ -24338,7 +24338,7 @@
24338
24338
  }
24339
24339
  });
24340
24340
 
24341
- function self$1t(vars) {
24341
+ function self$1u(vars) {
24342
24342
  const {
24343
24343
  borderRadiusSmall,
24344
24344
  brandPrimary500,
@@ -24374,10 +24374,10 @@
24374
24374
  }
24375
24375
  const typographyLight$1 = {
24376
24376
  common: derived,
24377
- self: self$1t
24377
+ self: self$1u
24378
24378
  };
24379
24379
 
24380
- var style$1H = cB("text", `
24380
+ var style$1I = cB("text", `
24381
24381
  transition: color .3s var(--u-bezier);
24382
24382
  color: var(--u-text-color);
24383
24383
  margin: 0;
@@ -24685,7 +24685,7 @@
24685
24685
  const themeRef = useTheme(
24686
24686
  "Typography",
24687
24687
  "-text",
24688
- style$1H,
24688
+ style$1I,
24689
24689
  typographyLight$1,
24690
24690
  props,
24691
24691
  mergedClsPrefixRef
@@ -24773,7 +24773,7 @@
24773
24773
  }
24774
24774
  });
24775
24775
 
24776
- var style$1G = cB("base-wave", `
24776
+ var style$1H = cB("base-wave", `
24777
24777
  position: absolute;
24778
24778
  left: 0;
24779
24779
  right: 0;
@@ -24791,7 +24791,7 @@
24791
24791
  }
24792
24792
  },
24793
24793
  setup(props) {
24794
- useStyle("-base-wave", style$1G, vue.toRef(props, "clsPrefix"));
24794
+ useStyle("-base-wave", style$1H, vue.toRef(props, "clsPrefix"));
24795
24795
  const selfRef = vue.ref(null);
24796
24796
  const activeRef = vue.ref(false);
24797
24797
  let animationTimerId = null;
@@ -24836,7 +24836,7 @@
24836
24836
  }
24837
24837
  });
24838
24838
 
24839
- function self$1s(vars) {
24839
+ function self$1t(vars) {
24840
24840
  const {
24841
24841
  borderRadius,
24842
24842
  fontBodyMedium,
@@ -24873,7 +24873,7 @@
24873
24873
  peers: {
24874
24874
  Popover: popoverLight
24875
24875
  },
24876
- self: self$1s
24876
+ self: self$1t
24877
24877
  });
24878
24878
 
24879
24879
  const tooltipDark = {
@@ -24882,10 +24882,10 @@
24882
24882
  peers: {
24883
24883
  Popover: popoverDark
24884
24884
  },
24885
- self: self$1s
24885
+ self: self$1t
24886
24886
  };
24887
24887
 
24888
- var style$1F = cB("tooltip", "", [cE("content", `
24888
+ var style$1G = cB("tooltip", "", [cE("content", `
24889
24889
  display: flex;
24890
24890
  align-items: flex-start;
24891
24891
  `), cE("icon", `
@@ -25011,7 +25011,7 @@
25011
25011
  const themeRef = useTheme(
25012
25012
  "Tooltip",
25013
25013
  "-tooltip",
25014
- props.variant === "plain" ? void 0 : style$1F,
25014
+ props.variant === "plain" ? void 0 : style$1G,
25015
25015
  tooltipLight,
25016
25016
  props,
25017
25017
  mergedClsPrefixRef
@@ -25141,7 +25141,7 @@
25141
25141
  }
25142
25142
  });
25143
25143
 
25144
- var style$1E = cB("ellipsis", {
25144
+ var style$1F = cB("ellipsis", {
25145
25145
  overflow: "hidden"
25146
25146
  }, [cNotM("line-clamp", `
25147
25147
  white-space: nowrap;
@@ -25179,7 +25179,7 @@
25179
25179
  const mergedTheme = useTheme(
25180
25180
  "Ellipsis",
25181
25181
  "-ellipsis",
25182
- style$1E,
25182
+ style$1F,
25183
25183
  ellipsisLight,
25184
25184
  props,
25185
25185
  mergedClsPrefixRef
@@ -25336,7 +25336,7 @@
25336
25336
  setup(props, { attrs, slots }) {
25337
25337
  const mouseEnteredRef = vue.ref(false);
25338
25338
  const mergedClsPrefixRef = useMergedClsPrefix();
25339
- useStyle("-ellipsis", style$1E, mergedClsPrefixRef);
25339
+ useStyle("-ellipsis", style$1F, mergedClsPrefixRef);
25340
25340
  const renderTrigger = () => {
25341
25341
  const { lineClamp } = props;
25342
25342
  const mergedClsPrefix = mergedClsPrefixRef.value;
@@ -25376,7 +25376,7 @@
25376
25376
  }
25377
25377
  });
25378
25378
 
25379
- function self$1r(vars) {
25379
+ function self$1s(vars) {
25380
25380
  const {
25381
25381
  borderRadiusLarge,
25382
25382
  elementsQuaternary,
@@ -25418,21 +25418,21 @@
25418
25418
  const actionCardLight = {
25419
25419
  name: "ActionCard",
25420
25420
  common: derived,
25421
- self: self$1r
25421
+ self: self$1s
25422
25422
  };
25423
25423
 
25424
25424
  const actionCardDark = {
25425
25425
  name: "ActionCard",
25426
25426
  common: derived$1,
25427
25427
  self: vars => {
25428
- const lightVars = self$1r(vars);
25428
+ const lightVars = self$1s(vars);
25429
25429
  return {
25430
25430
  ...lightVars
25431
25431
  };
25432
25432
  }
25433
25433
  };
25434
25434
 
25435
- var style$1D = cB("action-card", `
25435
+ var style$1E = cB("action-card", `
25436
25436
  position: relative;
25437
25437
  width: var(--u-width);
25438
25438
  min-height: var(--u-min-height);
@@ -25553,7 +25553,7 @@
25553
25553
  const themeRef = useTheme(
25554
25554
  "ActionCard",
25555
25555
  "-action-card",
25556
- style$1D,
25556
+ style$1E,
25557
25557
  actionCardLight,
25558
25558
  props,
25559
25559
  mergedClsPrefixRef
@@ -25684,7 +25684,7 @@
25684
25684
  }
25685
25685
  });
25686
25686
 
25687
- var style$1C = cB("affix", [cM("affixed", {
25687
+ var style$1D = cB("affix", [cM("affixed", {
25688
25688
  position: "fixed"
25689
25689
  }, [cM("absolute-positioned", {
25690
25690
  position: "absolute"
@@ -25754,7 +25754,7 @@
25754
25754
  props: affixProps,
25755
25755
  setup(props) {
25756
25756
  const { mergedClsPrefixRef } = useConfig(props);
25757
- useStyle("-affix", style$1C, mergedClsPrefixRef);
25757
+ useStyle("-affix", style$1D, mergedClsPrefixRef);
25758
25758
  let scrollTarget = null;
25759
25759
  const stickToTopRef = vue.ref(false);
25760
25760
  const stickToBottomRef = vue.ref(false);
@@ -25890,7 +25890,7 @@
25890
25890
  descriptionSpaceBanner: "24px"
25891
25891
  };
25892
25892
 
25893
- function self$1q(vars) {
25893
+ function self$1r(vars) {
25894
25894
  const {
25895
25895
  iconMedium,
25896
25896
  closeMedium,
@@ -25999,13 +25999,13 @@
25999
25999
  const alertLight = {
26000
26000
  name: "Alert",
26001
26001
  common: derived,
26002
- self: self$1q
26002
+ self: self$1r
26003
26003
  };
26004
26004
 
26005
26005
  const alertDark = {
26006
26006
  name: "Alert",
26007
26007
  common: derived$1,
26008
- self: self$1q
26008
+ self: self$1r
26009
26009
  };
26010
26010
 
26011
26011
  var rtlStyle$r = cB("alert", [cM("rtl", `
@@ -26081,7 +26081,7 @@
26081
26081
  `)];
26082
26082
  }
26083
26083
 
26084
- var style$1B = cB("alert", `
26084
+ var style$1C = cB("alert", `
26085
26085
  line-height: var(--u-line-height);
26086
26086
  position: relative;
26087
26087
  transition: background-color .3s var(--u-bezier);
@@ -26260,7 +26260,7 @@
26260
26260
  const themeRef = useTheme(
26261
26261
  "Alert",
26262
26262
  "-alert",
26263
- style$1B,
26263
+ style$1C,
26264
26264
  alertLight,
26265
26265
  props,
26266
26266
  mergedClsPrefixRef
@@ -26401,7 +26401,7 @@
26401
26401
  }
26402
26402
  });
26403
26403
 
26404
- function self$1p(vars) {
26404
+ function self$1q(vars) {
26405
26405
  const {
26406
26406
  borderRadius,
26407
26407
  fontBodyMedium,
@@ -26431,13 +26431,13 @@
26431
26431
  const anchorLight = {
26432
26432
  name: "Anchor",
26433
26433
  common: derived,
26434
- self: self$1p
26434
+ self: self$1q
26435
26435
  };
26436
26436
 
26437
26437
  const anchorDark = {
26438
26438
  name: "Anchor",
26439
26439
  common: derived$1,
26440
- self: self$1p
26440
+ self: self$1q
26441
26441
  };
26442
26442
 
26443
26443
  const anchorInjectionKey = createInjectionKey("u-anchor");
@@ -26776,7 +26776,7 @@
26776
26776
  }
26777
26777
  });
26778
26778
 
26779
- var style$1A = cB("anchor", `
26779
+ var style$1B = cB("anchor", `
26780
26780
  position: relative;
26781
26781
  `, [cNotM("block", `
26782
26782
  padding-left: var(--u-rail-width);
@@ -26866,7 +26866,7 @@
26866
26866
  const themeRef = useTheme(
26867
26867
  "Anchor",
26868
26868
  "-anchor",
26869
- style$1A,
26869
+ style$1B,
26870
26870
  anchorLight,
26871
26871
  props,
26872
26872
  mergedClsPrefixRef
@@ -26946,7 +26946,7 @@
26946
26946
  isBrowser$1 && navigator.userAgent.includes("Firefox");
26947
26947
  const isSafari = isBrowser$1 && navigator.userAgent.includes("Safari") && !isChrome;
26948
26948
 
26949
- function self$1o(vars) {
26949
+ function self$1p(vars) {
26950
26950
  const {
26951
26951
  iconMedium,
26952
26952
  textSecondary,
@@ -27057,13 +27057,13 @@
27057
27057
  const inputLight = {
27058
27058
  name: "Input",
27059
27059
  common: derived,
27060
- self: self$1o
27060
+ self: self$1p
27061
27061
  };
27062
27062
 
27063
27063
  const inputDark = {
27064
27064
  name: "Input",
27065
27065
  common: derived$1,
27066
- self: self$1o
27066
+ self: self$1p
27067
27067
  };
27068
27068
 
27069
27069
  var rtlStyle$q = cB("input", [cM("rtl", `
@@ -27089,7 +27089,7 @@
27089
27089
 
27090
27090
  const inputInjectionKey = createInjectionKey("u-input");
27091
27091
 
27092
- var style$1z = cB("input", `
27092
+ var style$1A = cB("input", `
27093
27093
  max-width: 100%;
27094
27094
  cursor: text;
27095
27095
  line-height: 1.5;
@@ -27637,7 +27637,7 @@
27637
27637
  rippleDuration: ".6s"
27638
27638
  };
27639
27639
 
27640
- function self$1n(vars) {
27640
+ function self$1o(vars) {
27641
27641
  const {
27642
27642
  heightMini,
27643
27643
  heightTiny,
@@ -27893,13 +27893,13 @@
27893
27893
  const buttonLight = {
27894
27894
  name: "Button",
27895
27895
  common: derived,
27896
- self: self$1n
27896
+ self: self$1o
27897
27897
  };
27898
27898
 
27899
27899
  const buttonDark = {
27900
27900
  name: "Button",
27901
27901
  common: derived$1,
27902
- self: self$1n
27902
+ self: self$1o
27903
27903
  };
27904
27904
 
27905
27905
  var rtlStyle$p = cB("button", [cM("rtl", `
@@ -27917,7 +27917,7 @@
27917
27917
  style: rtlStyle$p
27918
27918
  };
27919
27919
 
27920
- var style$1y = c$1([cB("button", `
27920
+ var style$1z = c$1([cB("button", `
27921
27921
  margin: 0;
27922
27922
  font-weight: var(--u-font-weight);
27923
27923
  line-height: 1;
@@ -28248,7 +28248,7 @@
28248
28248
  const themeRef = useTheme(
28249
28249
  "Button",
28250
28250
  "-button",
28251
- style$1y,
28251
+ style$1z,
28252
28252
  buttonLight,
28253
28253
  props,
28254
28254
  mergedClsPrefixRef
@@ -28682,7 +28682,7 @@
28682
28682
  iconMargin: "0 16px 0 0"
28683
28683
  };
28684
28684
 
28685
- function self$1m(vars) {
28685
+ function self$1n(vars) {
28686
28686
  const {
28687
28687
  closeMedium,
28688
28688
  iconMedium,
@@ -28767,13 +28767,13 @@
28767
28767
  const messageLight = {
28768
28768
  name: "Message",
28769
28769
  common: derived,
28770
- self: self$1m
28770
+ self: self$1n
28771
28771
  };
28772
28772
 
28773
28773
  const messageDark = {
28774
28774
  name: "Message",
28775
28775
  common: derived$1,
28776
- self: self$1m
28776
+ self: self$1n
28777
28777
  };
28778
28778
 
28779
28779
  var rtlStyle$o = cB("message", [cM("rtl", `
@@ -28808,7 +28808,7 @@
28808
28808
  onMouseleave: Function
28809
28809
  };
28810
28810
 
28811
- var style$1x = c$1([cB("message-wrapper", `
28811
+ var style$1y = c$1([cB("message-wrapper", `
28812
28812
  margin: var(--u-margin);
28813
28813
  z-index: 0;
28814
28814
  transform-origin: top center;
@@ -28929,7 +28929,7 @@
28929
28929
  const themeRef = useTheme(
28930
28930
  "Message",
28931
28931
  "-message",
28932
- style$1x,
28932
+ style$1y,
28933
28933
  messageLight,
28934
28934
  messageProviderProps,
28935
28935
  mergedClsPrefixRef
@@ -29608,7 +29608,7 @@
29608
29608
  const themeRef = useTheme(
29609
29609
  "Input",
29610
29610
  "-input",
29611
- style$1z,
29611
+ style$1A,
29612
29612
  inputLight,
29613
29613
  props,
29614
29614
  mergedClsPrefixRef
@@ -30697,7 +30697,7 @@
30697
30697
  }
30698
30698
  });
30699
30699
 
30700
- var style$1w = cB("input-group", `
30700
+ var style$1x = cB("input-group", `
30701
30701
  display: inline-flex;
30702
30702
  width: 100%;
30703
30703
  flex-wrap: nowrap;
@@ -30760,7 +30760,7 @@
30760
30760
  props: inputGroupProps,
30761
30761
  setup(props) {
30762
30762
  const { mergedClsPrefixRef } = useConfig(props);
30763
- useStyle("-input-group", style$1w, mergedClsPrefixRef);
30763
+ useStyle("-input-group", style$1x, mergedClsPrefixRef);
30764
30764
  return {
30765
30765
  mergedClsPrefix: mergedClsPrefixRef
30766
30766
  };
@@ -30771,7 +30771,7 @@
30771
30771
  }
30772
30772
  });
30773
30773
 
30774
- var style$1v = cB("input-group-label", `
30774
+ var style$1w = cB("input-group-label", `
30775
30775
  position: relative;
30776
30776
  user-select: none;
30777
30777
  -webkit-user-select: none;
@@ -30819,7 +30819,7 @@
30819
30819
  const themeRef = useTheme(
30820
30820
  "Input",
30821
30821
  "-input-group-label",
30822
- style$1v,
30822
+ style$1w,
30823
30823
  inputLight,
30824
30824
  props,
30825
30825
  mergedClsPrefixRef
@@ -30945,7 +30945,7 @@
30945
30945
  return valOptMap;
30946
30946
  }
30947
30947
 
30948
- function self$1l(vars) {
30948
+ function self$1m(vars) {
30949
30949
  const {
30950
30950
  shadowDepth2
30951
30951
  } = vars;
@@ -30960,7 +30960,7 @@
30960
30960
  InternalSelectMenu: internalSelectMenuLight,
30961
30961
  Input: inputLight
30962
30962
  },
30963
- self: self$1l
30963
+ self: self$1m
30964
30964
  });
30965
30965
 
30966
30966
  const autoCompleteDark = {
@@ -30970,10 +30970,10 @@
30970
30970
  InternalSelectMenu: internalSelectMenuDark,
30971
30971
  Input: inputDark
30972
30972
  },
30973
- self: self$1l
30973
+ self: self$1m
30974
30974
  };
30975
30975
 
30976
- var style$1u = c$1([cB("auto-complete", `
30976
+ var style$1v = c$1([cB("auto-complete", `
30977
30977
  z-index: auto;
30978
30978
  position: relative;
30979
30979
  display: inline-flex;
@@ -31103,7 +31103,7 @@
31103
31103
  const themeRef = useTheme(
31104
31104
  "AutoComplete",
31105
31105
  "-auto-complete",
31106
- style$1u,
31106
+ style$1v,
31107
31107
  autoCompleteLight,
31108
31108
  props,
31109
31109
  mergedClsPrefixRef
@@ -31500,7 +31500,7 @@
31500
31500
  return unobserve;
31501
31501
  };
31502
31502
 
31503
- function self$1k(vars) {
31503
+ function self$1l(vars) {
31504
31504
  const {
31505
31505
  heightSmall,
31506
31506
  heightMedium,
@@ -31521,16 +31521,16 @@
31521
31521
  const skeletonLight = {
31522
31522
  name: "Skeleton",
31523
31523
  common: derived,
31524
- self: self$1k
31524
+ self: self$1l
31525
31525
  };
31526
31526
 
31527
31527
  const skeletonDark = {
31528
31528
  name: "Skeleton",
31529
31529
  common: derived$1,
31530
- self: self$1k
31530
+ self: self$1l
31531
31531
  };
31532
31532
 
31533
- var style$1t = c$1([cB("skeleton", `
31533
+ var style$1u = c$1([cB("skeleton", `
31534
31534
  height: 1em;
31535
31535
  width: 100%;
31536
31536
  transition: background-color .3s var(--u-bezier);
@@ -31589,7 +31589,7 @@
31589
31589
  const themeRef = useTheme(
31590
31590
  "Skeleton",
31591
31591
  "-skeleton",
31592
- style$1t,
31592
+ style$1u,
31593
31593
  skeletonLight,
31594
31594
  props,
31595
31595
  mergedClsPrefixRef
@@ -31644,7 +31644,7 @@
31644
31644
  }
31645
31645
  });
31646
31646
 
31647
- function self$1j(vars) {
31647
+ function self$1k(vars) {
31648
31648
  const {
31649
31649
  borderRadius,
31650
31650
  heightSmall,
@@ -31676,18 +31676,18 @@
31676
31676
  const avatarLight = {
31677
31677
  name: "Avatar",
31678
31678
  common: derived,
31679
- self: self$1j
31679
+ self: self$1k
31680
31680
  };
31681
31681
 
31682
31682
  const avatarDark = {
31683
31683
  name: "Avatar",
31684
31684
  common: derived$1,
31685
- self: self$1j
31685
+ self: self$1k
31686
31686
  };
31687
31687
 
31688
31688
  const avatarGroupInjectionKey = createInjectionKey("u-avatar-group");
31689
31689
 
31690
- var style$1s = cB("avatar", `
31690
+ var style$1t = cB("avatar", `
31691
31691
  width: var(--u-merged-size);
31692
31692
  height: var(--u-merged-size);
31693
31693
  color: var(--u-text-color);
@@ -31799,7 +31799,7 @@
31799
31799
  const themeRef = useTheme(
31800
31800
  "Avatar",
31801
31801
  "-avatar",
31802
- style$1s,
31802
+ style$1t,
31803
31803
  avatarLight,
31804
31804
  props,
31805
31805
  mergedClsPrefixRef
@@ -32010,7 +32010,7 @@
32010
32010
  }
32011
32011
  });
32012
32012
 
32013
- function self$1i() {
32013
+ function self$1j() {
32014
32014
  return {
32015
32015
  gap: "-12px"
32016
32016
  };
@@ -32021,7 +32021,7 @@
32021
32021
  peers: {
32022
32022
  Avatar: avatarLight
32023
32023
  },
32024
- self: self$1i
32024
+ self: self$1j
32025
32025
  });
32026
32026
 
32027
32027
  const avatarGroupDark = {
@@ -32030,7 +32030,7 @@
32030
32030
  peers: {
32031
32031
  Avatar: avatarDark
32032
32032
  },
32033
- self: self$1i
32033
+ self: self$1j
32034
32034
  };
32035
32035
 
32036
32036
  var rtlStyle$n = cB("avatar-group", [cM("rtl", `
@@ -32047,7 +32047,7 @@
32047
32047
  style: rtlStyle$n
32048
32048
  };
32049
32049
 
32050
- var style$1r = cB("avatar-group", `
32050
+ var style$1s = cB("avatar-group", `
32051
32051
  flex-wrap: nowrap;
32052
32052
  display: inline-flex;
32053
32053
  position: relative;
@@ -32082,7 +32082,7 @@
32082
32082
  const mergedThemeRef = useTheme(
32083
32083
  "AvatarGroup",
32084
32084
  "-avatar-group",
32085
- style$1r,
32085
+ style$1s,
32086
32086
  avatarGroupLight,
32087
32087
  props,
32088
32088
  mergedClsPrefixRef
@@ -32171,7 +32171,7 @@
32171
32171
  }
32172
32172
  });
32173
32173
 
32174
- function self$1h(vars) {
32174
+ function self$1i(vars) {
32175
32175
  const {
32176
32176
  heightLarge,
32177
32177
  iconMedium,
@@ -32196,13 +32196,13 @@
32196
32196
  const backTopLight = {
32197
32197
  name: "BackTop",
32198
32198
  common: derived,
32199
- self: self$1h
32199
+ self: self$1i
32200
32200
  };
32201
32201
 
32202
32202
  const backTopDark = {
32203
32203
  name: "BackTop",
32204
32204
  common: derived$1,
32205
- self: self$1h
32205
+ self: self$1i
32206
32206
  };
32207
32207
 
32208
32208
  var BackTopIcon = /* @__PURE__ */ vue.h(
@@ -32216,7 +32216,7 @@
32216
32216
  /* @__PURE__ */ vue.h("g", { stroke: "none", "stroke-width": "1", "fill-rule": "evenodd" }, /* @__PURE__ */ vue.h("g", { transform: "translate(-139.000000, -4423.000000)", "fill-rule": "nonzero" }, /* @__PURE__ */ vue.h("g", { transform: "translate(120.000000, 4285.000000)" }, /* @__PURE__ */ vue.h("g", { transform: "translate(7.000000, 126.000000)" }, /* @__PURE__ */ vue.h("g", { transform: "translate(24.000000, 24.000000) scale(1, -1) translate(-24.000000, -24.000000) translate(12.000000, 12.000000)" }, /* @__PURE__ */ vue.h("g", { transform: "translate(4.000000, 2.000000)" }, /* @__PURE__ */ vue.h("path", { d: "M8,0 C8.51283584,0 8.93550716,0.38604019 8.99327227,0.883378875 L9,1 L9,10.584 L12.2928932,7.29289322 C12.6834175,6.90236893 13.3165825,6.90236893 13.7071068,7.29289322 C14.0675907,7.65337718 14.0953203,8.22060824 13.7902954,8.61289944 L13.7071068,8.70710678 L8.70710678,13.7071068 L8.62544899,13.7803112 L8.618,13.784 L8.59530661,13.8036654 L8.4840621,13.8753288 L8.37133602,13.9287745 L8.22929083,13.9735893 L8.14346259,13.9897165 L8.03324678,13.9994506 L7.9137692,13.9962979 L7.77070917,13.9735893 L7.6583843,13.9401293 L7.57677845,13.9063266 L7.47929125,13.8540045 L7.4048407,13.8036865 L7.38131006,13.7856883 C7.35030318,13.7612383 7.32077858,13.7349921 7.29289322,13.7071068 L2.29289322,8.70710678 L2.20970461,8.61289944 C1.90467972,8.22060824 1.93240926,7.65337718 2.29289322,7.29289322 C2.65337718,6.93240926 3.22060824,6.90467972 3.61289944,7.20970461 L3.70710678,7.29289322 L7,10.585 L7,1 L7.00672773,0.883378875 C7.06449284,0.38604019 7.48716416,0 8,0 Z" }), /* @__PURE__ */ vue.h("path", { d: "M14.9333333,15.9994506 C15.5224371,15.9994506 16,16.4471659 16,16.9994506 C16,17.5122865 15.5882238,17.9349578 15.0577292,17.9927229 L14.9333333,17.9994506 L1.06666667,17.9994506 C0.477562934,17.9994506 0,17.5517354 0,16.9994506 C0,16.4866148 0.411776203,16.0639435 0.9422708,16.0061783 L1.06666667,15.9994506 L14.9333333,15.9994506 Z" })))))))
32217
32217
  );
32218
32218
 
32219
- var style$1q = cB("back-top", `
32219
+ var style$1r = cB("back-top", `
32220
32220
  position: fixed;
32221
32221
  right: 40px;
32222
32222
  bottom: 40px;
@@ -32355,7 +32355,7 @@
32355
32355
  const themeRef = useTheme(
32356
32356
  "BackTop",
32357
32357
  "-back-top",
32358
- style$1q,
32358
+ style$1r,
32359
32359
  backTopLight,
32360
32360
  props,
32361
32361
  mergedClsPrefixRef
@@ -32506,7 +32506,7 @@
32506
32506
  }
32507
32507
  });
32508
32508
 
32509
- function self$1g(vars) {
32509
+ function self$1h(vars) {
32510
32510
  const {
32511
32511
  brandQuaternary500,
32512
32512
  elementsPrimary,
@@ -32539,13 +32539,13 @@
32539
32539
  const badgeLight = {
32540
32540
  name: "Badge",
32541
32541
  common: derived,
32542
- self: self$1g
32542
+ self: self$1h
32543
32543
  };
32544
32544
 
32545
32545
  const badgeDark = {
32546
32546
  name: "Badge",
32547
32547
  common: derived$1,
32548
- self: self$1g
32548
+ self: self$1h
32549
32549
  };
32550
32550
 
32551
32551
  var rtlStyle$m = cB("badge", [cM("rtl", `
@@ -32562,7 +32562,7 @@
32562
32562
  style: rtlStyle$m
32563
32563
  };
32564
32564
 
32565
- var style$1p = c$1([c$1("@keyframes badge-wave-spread", {
32565
+ var style$1q = c$1([c$1("@keyframes badge-wave-spread", {
32566
32566
  from: {
32567
32567
  boxShadow: "0 0 0.5px 0px var(--u-ripple-color)",
32568
32568
  opacity: 0.6
@@ -32676,7 +32676,7 @@
32676
32676
  const themeRef = useTheme(
32677
32677
  "Badge",
32678
32678
  "-badge",
32679
- style$1p,
32679
+ style$1q,
32680
32680
  badgeLight,
32681
32681
  props,
32682
32682
  mergedClsPrefixRef
@@ -32812,7 +32812,7 @@
32812
32812
  }
32813
32813
  });
32814
32814
 
32815
- function self$1f(vars) {
32815
+ function self$1g(vars) {
32816
32816
  const {
32817
32817
  fontWeightStrong,
32818
32818
  fontBodyMedium,
@@ -32835,16 +32835,16 @@
32835
32835
  const breadcrumbLight = {
32836
32836
  name: "Breadcrumb",
32837
32837
  common: derived,
32838
- self: self$1f
32838
+ self: self$1g
32839
32839
  };
32840
32840
 
32841
32841
  const breadcrumbDark = {
32842
32842
  name: "Breadcrumb",
32843
32843
  common: derived$1,
32844
- self: self$1f
32844
+ self: self$1g
32845
32845
  };
32846
32846
 
32847
- var style$1o = cB("breadcrumb", `
32847
+ var style$1p = cB("breadcrumb", `
32848
32848
  white-space: nowrap;
32849
32849
  cursor: default;
32850
32850
  line-height: var(--u-item-line-height);
@@ -32914,7 +32914,7 @@
32914
32914
  const themeRef = useTheme(
32915
32915
  "Breadcrumb",
32916
32916
  "-breadcrumb",
32917
- style$1o,
32917
+ style$1p,
32918
32918
  breadcrumbLight,
32919
32919
  props,
32920
32920
  mergedClsPrefixRef
@@ -33099,7 +33099,7 @@
33099
33099
  top: n1
33100
33100
  })])])])]);
33101
33101
  }
33102
- var style$1n = cB("button-group", `
33102
+ var style$1o = cB("button-group", `
33103
33103
  flex-wrap: nowrap;
33104
33104
  display: inline-flex;
33105
33105
  position: relative;
@@ -33148,7 +33148,7 @@
33148
33148
  props: buttonGroupProps,
33149
33149
  setup(props) {
33150
33150
  const { mergedClsPrefixRef, mergedRtlRef } = useConfig(props);
33151
- useStyle("-button-group", style$1n, mergedClsPrefixRef);
33151
+ useStyle("-button-group", style$1o, mergedClsPrefixRef);
33152
33152
  vue.provide(buttonGroupInjectionKey, props);
33153
33153
  const rtlEnabledRef = useRtl(
33154
33154
  "ButtonGroup",
@@ -39092,7 +39092,7 @@
39092
39092
  return resultDate.getTime();
39093
39093
  }
39094
39094
 
39095
- function self$1e(vars) {
39095
+ function self$1f(vars) {
39096
39096
  const {
39097
39097
  borderRadius,
39098
39098
  fontWeightStrong,
@@ -39136,7 +39136,7 @@
39136
39136
  peers: {
39137
39137
  Button: buttonLight
39138
39138
  },
39139
- self: self$1e
39139
+ self: self$1f
39140
39140
  });
39141
39141
 
39142
39142
  const calendarDark = {
@@ -39145,10 +39145,10 @@
39145
39145
  peers: {
39146
39146
  Button: buttonDark
39147
39147
  },
39148
- self: self$1e
39148
+ self: self$1f
39149
39149
  };
39150
39150
 
39151
- var style$1m = c$1([cB("calendar", `
39151
+ var style$1n = c$1([cB("calendar", `
39152
39152
  line-height: var(--u-line-height);
39153
39153
  font-size: var(--u-font-size);
39154
39154
  color: var(--u-text-color);
@@ -39287,7 +39287,7 @@
39287
39287
  const themeRef = useTheme(
39288
39288
  "Calendar",
39289
39289
  "-calendar",
39290
- style$1m,
39290
+ style$1n,
39291
39291
  calendarLight,
39292
39292
  props,
39293
39293
  mergedClsPrefixRef
@@ -39575,7 +39575,7 @@
39575
39575
  paddingHuge: "27px 40px 28px"
39576
39576
  };
39577
39577
 
39578
- function self$1d(vars) {
39578
+ function self$1e(vars) {
39579
39579
  const {
39580
39580
  borderRadius,
39581
39581
  fontWeight,
@@ -39641,13 +39641,13 @@
39641
39641
  const cardLight = {
39642
39642
  name: "Card",
39643
39643
  common: derived,
39644
- self: self$1d
39644
+ self: self$1e
39645
39645
  };
39646
39646
 
39647
39647
  const cardDark$1 = {
39648
39648
  name: "Card",
39649
39649
  common: derived$1,
39650
- self: self$1d
39650
+ self: self$1e
39651
39651
  };
39652
39652
 
39653
39653
  var rtlStyle$l = cB("card", [cM("rtl", `
@@ -39670,7 +39670,7 @@
39670
39670
  `, [c$1("&:first-child", {
39671
39671
  paddingTop: "var(--u-padding-bottom)"
39672
39672
  })]);
39673
- var style$1l = c$1([cB("card", `
39673
+ var style$1m = c$1([cB("card", `
39674
39674
  font-size: var(--u-font-size);
39675
39675
  line-height: var(--u-line-height);
39676
39676
  font-weight: var(--u-font-weight);
@@ -39853,7 +39853,7 @@
39853
39853
  const themeRef = useTheme(
39854
39854
  "Card",
39855
39855
  "-card",
39856
- style$1l,
39856
+ style$1m,
39857
39857
  cardLight,
39858
39858
  props,
39859
39859
  mergedClsPrefixRef
@@ -40436,7 +40436,7 @@
40436
40436
  }
40437
40437
  });
40438
40438
 
40439
- function self$1c(vars) {
40439
+ function self$1d(vars) {
40440
40440
  const {
40441
40441
  textSecondary,
40442
40442
  textPrimary,
@@ -40471,10 +40471,10 @@
40471
40471
  const cardListLight = {
40472
40472
  name: "CardList",
40473
40473
  common: derived,
40474
- self: self$1c
40474
+ self: self$1d
40475
40475
  };
40476
40476
 
40477
- var style$1k = cB("card-list-item", [c$1("&", {
40477
+ var style$1l = cB("card-list-item", [c$1("&", {
40478
40478
  padding: "16px",
40479
40479
  borderRadius: "var(--u-border-radius)",
40480
40480
  display: "flex",
@@ -40595,7 +40595,7 @@
40595
40595
  props: cardListItemProps,
40596
40596
  setup(props, { slots }) {
40597
40597
  const { mergedClsPrefixRef } = useConfig(props);
40598
- useStyle("-card-list-item", style$1k, mergedClsPrefixRef);
40598
+ useStyle("-card-list-item", style$1l, mergedClsPrefixRef);
40599
40599
  const isOpen = vue.ref(false);
40600
40600
  const toggle = () => {
40601
40601
  isOpen.value = !isOpen.value;
@@ -40726,7 +40726,7 @@
40726
40726
  const themeRef = useTheme(
40727
40727
  "CardList",
40728
40728
  "-card-list",
40729
- style$1k,
40729
+ style$1l,
40730
40730
  cardListLight,
40731
40731
  props,
40732
40732
  mergedClsPrefixRef
@@ -40823,7 +40823,7 @@
40823
40823
  }
40824
40824
  });
40825
40825
 
40826
- function self$1b() {
40826
+ function self$1c() {
40827
40827
  return {
40828
40828
  dotSize: "8px",
40829
40829
  dotColor: "rgba(255, 255, 255, .3)",
@@ -40837,13 +40837,13 @@
40837
40837
  const carouselLight = {
40838
40838
  name: "Carousel",
40839
40839
  common: derived,
40840
- self: self$1b
40840
+ self: self$1c
40841
40841
  };
40842
40842
 
40843
40843
  const carouselDark = {
40844
40844
  name: "Carousel",
40845
40845
  common: derived$1,
40846
- self: self$1b
40846
+ self: self$1c
40847
40847
  };
40848
40848
 
40849
40849
  const carouselMethodsInjectionKey = createInjectionKey("u-carousel-methods");
@@ -41127,7 +41127,7 @@
41127
41127
  }
41128
41128
  });
41129
41129
 
41130
- var style$1j = cB("carousel", `
41130
+ var style$1k = cB("carousel", `
41131
41131
  position: relative;
41132
41132
  width: 100%;
41133
41133
  height: 100%;
@@ -42129,7 +42129,7 @@
42129
42129
  const themeRef = useTheme(
42130
42130
  "Carousel",
42131
42131
  "-carousel",
42132
- style$1j,
42132
+ style$1k,
42133
42133
  carouselLight,
42134
42134
  props,
42135
42135
  mergedClsPrefixRef
@@ -42289,7 +42289,7 @@
42289
42289
  labelPadding: "0 16px"
42290
42290
  };
42291
42291
 
42292
- function self$1a(vars) {
42292
+ function self$1b(vars) {
42293
42293
  const {
42294
42294
  lineHeightBodyLarge,
42295
42295
  fontBodyLarge,
@@ -42365,13 +42365,13 @@
42365
42365
  const checkboxLight = {
42366
42366
  name: "Checkbox",
42367
42367
  common: derived,
42368
- self: self$1a
42368
+ self: self$1b
42369
42369
  };
42370
42370
 
42371
42371
  const checkboxDark = {
42372
42372
  name: "Checkbox",
42373
42373
  common: derived$1,
42374
- self: self$1a
42374
+ self: self$1b
42375
42375
  };
42376
42376
 
42377
42377
  var rtlStyle$k = cB("checkbox", [cM("rtl", `
@@ -42383,7 +42383,7 @@
42383
42383
  style: rtlStyle$k
42384
42384
  };
42385
42385
 
42386
- function self$19(vars) {
42386
+ function self$1a(vars) {
42387
42387
  const {
42388
42388
  borderRadius,
42389
42389
  heightMedium,
@@ -42424,7 +42424,7 @@
42424
42424
  Checkbox: checkboxLight,
42425
42425
  Empty: emptyLight
42426
42426
  },
42427
- self: self$19
42427
+ self: self$1a
42428
42428
  });
42429
42429
 
42430
42430
  const cascaderDark = {
@@ -42437,14 +42437,14 @@
42437
42437
  Checkbox: checkboxDark,
42438
42438
  Empty: emptyLight
42439
42439
  },
42440
- self: self$19
42440
+ self: self$1a
42441
42441
  };
42442
42442
 
42443
42443
  var CheckMark = /* @__PURE__ */ vue.h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", class: "check-icon" }, /* @__PURE__ */ vue.h("path", { d: "M7.95833 14.6458C7.84722 14.6458 7.74306 14.6283 7.64583 14.5933C7.54861 14.5589 7.45833 14.5 7.375 14.4166L3.79167 10.8333C3.63889 10.6805 3.56583 10.4825 3.5725 10.2391C3.57972 9.99637 3.65972 9.79859 3.8125 9.64581C3.96528 9.49304 4.15972 9.41665 4.39583 9.41665C4.63195 9.41665 4.82639 9.49304 4.97917 9.64581L7.95833 12.625L15.0208 5.56248C15.1736 5.4097 15.3717 5.33331 15.615 5.33331C15.8578 5.33331 16.0556 5.4097 16.2083 5.56248C16.3611 5.71526 16.4375 5.91304 16.4375 6.15581C16.4375 6.39915 16.3611 6.5972 16.2083 6.74998L8.54167 14.4166C8.45833 14.5 8.36806 14.5589 8.27083 14.5933C8.17361 14.6283 8.06945 14.6458 7.95833 14.6458Z" }));
42444
42444
 
42445
42445
  var LineMark = /* @__PURE__ */ vue.h("svg", { width: "22", height: "24", viewBox: "0 0 22 24", class: "line-icon" }, /* @__PURE__ */ vue.h("path", { d: "M5.49998 13C5.24026 13 5.0224 12.904 4.8464 12.712C4.67101 12.5207 4.58331 12.2833 4.58331 12C4.58331 11.7167 4.67101 11.479 4.8464 11.287C5.0224 11.0957 5.24026 11 5.49998 11H16.5C16.7597 11 16.9773 11.0957 17.1526 11.287C17.3286 11.479 17.4166 11.7167 17.4166 12C17.4166 12.2833 17.3286 12.5207 17.1526 12.712C16.9773 12.904 16.7597 13 16.5 13H5.49998Z" }));
42446
42446
 
42447
- var style$1i = c$1([iconSwitchTransition(), c$1("@keyframes ripple", {
42447
+ var style$1j = c$1([iconSwitchTransition(), c$1("@keyframes ripple", {
42448
42448
  from: {
42449
42449
  transform: "scale(0)"
42450
42450
  },
@@ -42658,7 +42658,7 @@
42658
42658
  const themeRef = useTheme(
42659
42659
  "Checkbox",
42660
42660
  "-checkbox",
42661
- style$1i,
42661
+ style$1j,
42662
42662
  checkboxLight,
42663
42663
  props,
42664
42664
  mergedClsPrefixRef
@@ -43732,7 +43732,7 @@
43732
43732
  }
43733
43733
  });
43734
43734
 
43735
- var style$1h = c$1([cB("cascader-menu", `
43735
+ var style$1i = c$1([cB("cascader-menu", `
43736
43736
  outline: none;
43737
43737
  position: relative;
43738
43738
  margin: 4px 0;
@@ -43974,7 +43974,7 @@
43974
43974
  const themeRef = useTheme(
43975
43975
  "Cascader",
43976
43976
  "-cascader",
43977
- style$1h,
43977
+ style$1i,
43978
43978
  cascaderLight,
43979
43979
  props,
43980
43980
  mergedClsPrefixRef
@@ -44906,12 +44906,12 @@
44906
44906
  }
44907
44907
  };
44908
44908
 
44909
- function self$18() {
44909
+ function self$19() {
44910
44910
  return commonVars$7;
44911
44911
  }
44912
44912
  const flexLight = {
44913
44913
  name: "Flex",
44914
- self: self$18
44914
+ self: self$19
44915
44915
  };
44916
44916
 
44917
44917
  cB("space", [cM("rtl", `
@@ -45029,7 +45029,7 @@
45029
45029
  }
45030
45030
  });
45031
45031
 
45032
- function self$17(vars) {
45032
+ function self$18(vars) {
45033
45033
  const {
45034
45034
  borderRadius,
45035
45035
  borderRadiusMedium,
@@ -45073,13 +45073,13 @@
45073
45073
  const listLight = {
45074
45074
  name: "List",
45075
45075
  common: derived,
45076
- self: self$17
45076
+ self: self$18
45077
45077
  };
45078
45078
 
45079
45079
  const listDark$1 = {
45080
45080
  name: "List",
45081
45081
  common: derived$1,
45082
- self: self$17
45082
+ self: self$18
45083
45083
  };
45084
45084
 
45085
45085
  var rtlStyle$j = cB("list", [cM("rtl", `
@@ -45098,6 +45098,58 @@
45098
45098
  style: rtlStyle$j
45099
45099
  };
45100
45100
 
45101
+ function self$17(vars) {
45102
+ const {
45103
+ borderRadiusLarge,
45104
+ elementsSecondary,
45105
+ elementsTertiary,
45106
+ textPrimary,
45107
+ textSecondary,
45108
+ textTertiary,
45109
+ brandPrimary400,
45110
+ staticGreen,
45111
+ staticRed,
45112
+ staticWhite
45113
+ } = vars;
45114
+ return {
45115
+ messageBubbleBackgroundColorOwn: elementsTertiary,
45116
+ messageBubbleBackgroundColorOther: elementsTertiary,
45117
+ messageBubbleTextColorOwn: textPrimary,
45118
+ messageBubbleTextColorOther: textPrimary,
45119
+ messageTimeColor: textTertiary,
45120
+ messageStatusReadColor: brandPrimary400,
45121
+ messageStatusSuccessColor: staticGreen,
45122
+ attachmentBackgroundColorOwn: staticWhite,
45123
+ attachmentBackgroundColorOther: staticWhite,
45124
+ messageErrorColor: staticRed,
45125
+ messageBorderRadius: borderRadiusLarge,
45126
+ unreadNotificationBackgroundColor: brandPrimary400,
45127
+ unreadNotificationTextColor: elementsSecondary,
45128
+ serviceMessageTextColor: textSecondary,
45129
+ serviceMessageBackgroundColor: "transparent",
45130
+ messageTitleColor: textPrimary
45131
+ };
45132
+ }
45133
+ const messageBubbleLight = createTheme$1({
45134
+ name: "MessageBubble",
45135
+ common: derived,
45136
+ peers: {
45137
+ StatusIcon: iconLight
45138
+ },
45139
+ self: self$17
45140
+ });
45141
+
45142
+ const messageBubbleDark = createTheme$1({
45143
+ name: "MessageBubble",
45144
+ common: derived$1,
45145
+ peers: {
45146
+ StatusIcon: iconDark$1
45147
+ },
45148
+ self: vars => ({
45149
+ ...self$17(vars)
45150
+ })
45151
+ });
45152
+
45101
45153
  function self$16(vars) {
45102
45154
  const {
45103
45155
  shadowDepth2
@@ -45236,7 +45288,7 @@
45236
45288
  const chatInputLight = {
45237
45289
  ...inputLight,
45238
45290
  self(vars) {
45239
- const originalInputSelf = self$1o(vars);
45291
+ const originalInputSelf = self$1p(vars);
45240
45292
  const {
45241
45293
  elementsTertiary
45242
45294
  } = vars;
@@ -45256,7 +45308,7 @@
45256
45308
  const chatBadgeLight = {
45257
45309
  ...badgeLight,
45258
45310
  self(vars) {
45259
- const originalBadgeSelf = self$1g(vars);
45311
+ const originalBadgeSelf = self$1h(vars);
45260
45312
  const {
45261
45313
  brandPrimary400,
45262
45314
  elementsSecondary
@@ -45335,6 +45387,7 @@
45335
45387
  Button: buttonLight,
45336
45388
  List: listLight,
45337
45389
  Typography: typographyLight,
45390
+ MessageBubble: messageBubbleLight,
45338
45391
  StatusIcon: iconLight,
45339
45392
  FooterAttachIcon: iconLight,
45340
45393
  FooterSuffixIcon: iconLight,
@@ -45356,6 +45409,7 @@
45356
45409
  Button: buttonDark,
45357
45410
  List: listDark$1,
45358
45411
  Typography: typographyDark,
45412
+ MessageBubble: messageBubbleDark,
45359
45413
  StatusIcon: iconDark$1,
45360
45414
  FooterAttachIcon: iconDark$1,
45361
45415
  FooterSuffixIcon: iconDark$1,
@@ -45471,7 +45525,7 @@
45471
45525
  };
45472
45526
  const listInjectionKey = createInjectionKey("u-list");
45473
45527
 
45474
- var style$1g = c$1([cB("align-start", `
45528
+ var style$1h = c$1([cB("align-start", `
45475
45529
  align-self: self-start;
45476
45530
  `), cB("align-center", `
45477
45531
  align-self: center;
@@ -45604,7 +45658,7 @@
45604
45658
  const themeRef = useTheme(
45605
45659
  "List",
45606
45660
  "-list",
45607
- style$1g,
45661
+ style$1h,
45608
45662
  listLight,
45609
45663
  props,
45610
45664
  mergedClsPrefixRef
@@ -46086,7 +46140,7 @@
46086
46140
  }
46087
46141
  });
46088
46142
 
46089
- var style$1f = cB("a", `
46143
+ var style$1g = cB("a", `
46090
46144
  cursor: pointer;
46091
46145
  transition:
46092
46146
  color .3s var(--u-bezier),
@@ -46109,7 +46163,7 @@
46109
46163
  const themeRef = useTheme(
46110
46164
  "Typography",
46111
46165
  "-a",
46112
- style$1f,
46166
+ style$1g,
46113
46167
  typographyLight,
46114
46168
  props,
46115
46169
  mergedClsPrefixRef
@@ -46145,7 +46199,7 @@
46145
46199
  }
46146
46200
  });
46147
46201
 
46148
- var style$1e = cB("blockquote", `
46202
+ var style$1f = cB("blockquote", `
46149
46203
  font-size: var(--u-font-size);
46150
46204
  line-height: var(--u-line-height);
46151
46205
  margin: 0;
@@ -46184,7 +46238,7 @@
46184
46238
  const themeRef = useTheme(
46185
46239
  "Typography",
46186
46240
  "-blockquote",
46187
- style$1e,
46241
+ style$1f,
46188
46242
  typographyLight,
46189
46243
  props,
46190
46244
  mergedClsPrefixRef
@@ -46233,7 +46287,7 @@
46233
46287
  }
46234
46288
  });
46235
46289
 
46236
- var style$1d = cB("h", `
46290
+ var style$1e = cB("h", `
46237
46291
  font-size: var(--u-font-size);
46238
46292
  font-weight: var(--u-font-weight);
46239
46293
  margin: var(--u-margin);
@@ -46278,7 +46332,7 @@
46278
46332
  mergedClsPrefixRef,
46279
46333
  inlineThemeDisabled
46280
46334
  } = useConfig(props);
46281
- const themeRef = useTheme("Typography", "-h", style$1d, typographyLight, props, mergedClsPrefixRef);
46335
+ const themeRef = useTheme("Typography", "-h", style$1e, typographyLight, props, mergedClsPrefixRef);
46282
46336
  const cssVarsRef = vue.computed(() => {
46283
46337
  const {
46284
46338
  type
@@ -46342,7 +46396,7 @@
46342
46396
  const UH5$1 = createHeader("5");
46343
46397
  const UH6$1 = createHeader("6");
46344
46398
 
46345
- var style$1c = cB("hr", `
46399
+ var style$1d = cB("hr", `
46346
46400
  margin: 12px 0;
46347
46401
  transition: border-color .3s var(--u-bezier);
46348
46402
  border-left: none;
@@ -46367,7 +46421,7 @@
46367
46421
  const themeRef = useTheme(
46368
46422
  "Typography",
46369
46423
  "-hr",
46370
- style$1c,
46424
+ style$1d,
46371
46425
  typographyLight,
46372
46426
  props,
46373
46427
  mergedClsPrefixRef
@@ -46421,7 +46475,7 @@
46421
46475
  `), c$1("&:last-child", `
46422
46476
  margin-bottom: 0;
46423
46477
  `)];
46424
- var style$1b = c$1([cB("ol", {
46478
+ var style$1c = c$1([cB("ol", {
46425
46479
  fontSize: "var(--u-font-size)",
46426
46480
  padding: "var(--u-ol-padding)"
46427
46481
  }, [cM("align-text", {
@@ -46445,7 +46499,7 @@
46445
46499
  const themeRef = useTheme(
46446
46500
  "Typography",
46447
46501
  "-xl",
46448
- style$1b,
46502
+ style$1c,
46449
46503
  typographyLight,
46450
46504
  props,
46451
46505
  mergedClsPrefixRef
@@ -46498,7 +46552,7 @@
46498
46552
  }
46499
46553
  });
46500
46554
 
46501
- var style$1a = cB("p", `
46555
+ var style$1b = cB("p", `
46502
46556
  box-sizing: border-box;
46503
46557
  transition: color .3s var(--u-bezier);
46504
46558
  margin: var(--u-margin);
@@ -46519,7 +46573,7 @@
46519
46573
  const themeRef = useTheme(
46520
46574
  "Typography",
46521
46575
  "-p",
46522
- style$1a,
46576
+ style$1b,
46523
46577
  typographyLight,
46524
46578
  props,
46525
46579
  mergedClsPrefixRef
@@ -46659,7 +46713,7 @@
46659
46713
  const themeRef = useTheme(
46660
46714
  "Typography",
46661
46715
  "-xl",
46662
- style$1b,
46716
+ style$1c,
46663
46717
  typographyLight,
46664
46718
  props,
46665
46719
  mergedClsPrefixRef
@@ -46844,7 +46898,7 @@
46844
46898
 
46845
46899
  const uploadInjectionKey = createInjectionKey("u-upload");
46846
46900
 
46847
- var style$19 = c$1([cB("upload", "width: var(--u-upload-width)", [cM("dragger-inside", [cB("upload-trigger", `
46901
+ var style$1a = c$1([cB("upload", "width: var(--u-upload-width)", [cM("dragger-inside", [cB("upload-trigger", `
46848
46902
  display: block;
46849
46903
  `)]), cM("drag-over", [cB("upload-dragger", `
46850
46904
  border: var(--u-dragger-border-hover);
@@ -47305,7 +47359,7 @@
47305
47359
  const cardDark = {
47306
47360
  name: "CardList",
47307
47361
  common: derived$1,
47308
- self: self$1c
47362
+ self: self$1d
47309
47363
  };
47310
47364
 
47311
47365
  function self$11(vars) {
@@ -50573,7 +50627,7 @@
50573
50627
  };
50574
50628
  const imageContextKey = createInjectionKey("u-image");
50575
50629
 
50576
- var style$18 = c$1([c$1("body >", [cB("image-container", "position: fixed;")]), cB("image-preview-container", `
50630
+ var style$19 = c$1([c$1("body >", [cB("image-container", "position: fixed;")]), cB("image-preview-container", `
50577
50631
  position: fixed;
50578
50632
  left: 0;
50579
50633
  right: 0;
@@ -50657,7 +50711,7 @@
50657
50711
  const themeRef = useTheme(
50658
50712
  "Image",
50659
50713
  "-image",
50660
- style$18,
50714
+ style$19,
50661
50715
  imageLight,
50662
50716
  props,
50663
50717
  mergedClsPrefixRef
@@ -51588,7 +51642,7 @@
51588
51642
  }
51589
51643
  });
51590
51644
 
51591
- var style$17 = c$1([c$1("@keyframes spin-rotate", `
51645
+ var style$18 = c$1([c$1("@keyframes spin-rotate", `
51592
51646
  from {
51593
51647
  transform: rotate(0);
51594
51648
  }
@@ -51692,7 +51746,7 @@
51692
51746
  const themeRef = useTheme(
51693
51747
  "Spin",
51694
51748
  "-spin",
51695
- style$17,
51749
+ style$18,
51696
51750
  spinLight,
51697
51751
  props,
51698
51752
  mergedClsPrefixRef
@@ -52949,7 +53003,7 @@
52949
53003
  const themeRef = useTheme(
52950
53004
  "Upload",
52951
53005
  "-upload",
52952
- style$19,
53006
+ style$1a,
52953
53007
  uploadLight,
52954
53008
  props,
52955
53009
  mergedClsPrefixRef
@@ -53364,6 +53418,98 @@
53364
53418
  }
53365
53419
  });
53366
53420
 
53421
+ var MessageBubbleType = /* @__PURE__ */(MessageBubbleType2 => {
53422
+ MessageBubbleType2["MESSAGE"] = "message";
53423
+ MessageBubbleType2["SERVICE"] = "service";
53424
+ return MessageBubbleType2;
53425
+ })(MessageBubbleType || {});
53426
+ var MessageBubbleServiceVariant = /* @__PURE__ */(MessageBubbleServiceVariant2 => {
53427
+ MessageBubbleServiceVariant2["UNREAD"] = "unread";
53428
+ MessageBubbleServiceVariant2["SYSTEM"] = "system";
53429
+ MessageBubbleServiceVariant2["EVENT"] = "event";
53430
+ MessageBubbleServiceVariant2["DIVIDER"] = "divider";
53431
+ return MessageBubbleServiceVariant2;
53432
+ })(MessageBubbleServiceVariant || {});
53433
+ var MessageBubbleStatus = /* @__PURE__ */(MessageBubbleStatus2 => {
53434
+ MessageBubbleStatus2["READ"] = "read";
53435
+ MessageBubbleStatus2["UNREAD"] = "unread";
53436
+ MessageBubbleStatus2["PENDING"] = "pending";
53437
+ MessageBubbleStatus2["RETRY"] = "retry";
53438
+ return MessageBubbleStatus2;
53439
+ })(MessageBubbleStatus || {});
53440
+ var MessageBubbleAttachmentStatus = /* @__PURE__ */(MessageBubbleAttachmentStatus2 => {
53441
+ MessageBubbleAttachmentStatus2["PENDING"] = "pending";
53442
+ MessageBubbleAttachmentStatus2["UPLOADING"] = "uploading";
53443
+ MessageBubbleAttachmentStatus2["FINISHED"] = "finished";
53444
+ MessageBubbleAttachmentStatus2["ERROR"] = "error";
53445
+ return MessageBubbleAttachmentStatus2;
53446
+ })(MessageBubbleAttachmentStatus || {});
53447
+ const statusIconMapper$1 = {
53448
+ ["read" /* READ */]: CheckmarkDoneSharp,
53449
+ ["pending" /* PENDING */]: MdTime,
53450
+ ["retry" /* RETRY */]: Refresh,
53451
+ ["unread" /* UNREAD */]: CheckmarkDoneSharp
53452
+ };
53453
+ const messageBubbleProps = {
53454
+ ...useTheme.props,
53455
+ type: {
53456
+ type: String,
53457
+ default: "message" /* MESSAGE */
53458
+ },
53459
+ serviceVariant: {
53460
+ type: String,
53461
+ default: "system" /* SYSTEM */
53462
+ },
53463
+ id: {
53464
+ type: [String, Number, Symbol],
53465
+ default: void 0
53466
+ },
53467
+ isOwn: {
53468
+ type: Boolean,
53469
+ default: false
53470
+ },
53471
+ title: {
53472
+ type: [String, Function],
53473
+ default: void 0
53474
+ },
53475
+ content: {
53476
+ type: [String, Function],
53477
+ default: void 0
53478
+ },
53479
+ timestamp: {
53480
+ type: [String, Number, Date, Function],
53481
+ default: void 0
53482
+ },
53483
+ status: {
53484
+ type: String,
53485
+ default: void 0
53486
+ },
53487
+ attachments: {
53488
+ type: [Array, Object],
53489
+ default: void 0
53490
+ },
53491
+ uploadProps: {
53492
+ type: Object,
53493
+ default: void 0
53494
+ },
53495
+ actions: {
53496
+ type: Array,
53497
+ default: void 0
53498
+ },
53499
+ retryText: {
53500
+ type: String,
53501
+ default: void 0
53502
+ },
53503
+ onRetry: {
53504
+ type: Function,
53505
+ default: void 0
53506
+ },
53507
+ onAttachmentDownload: {
53508
+ type: Function,
53509
+ default: void 0
53510
+ }
53511
+ };
53512
+
53367
53513
  const dropdownMenuInjectionKey = createInjectionKey("u-dropdown-menu");
53368
53514
  const dropdownInjectionKey = createInjectionKey("u-dropdown");
53369
53515
  const dropdownOptionInjectionKey = createInjectionKey("u-dropdown-option");
@@ -53973,7 +54119,7 @@
53973
54119
  }
53974
54120
  });
53975
54121
 
53976
- var style$16 = cB("dropdown-menu", `
54122
+ var style$17 = cB("dropdown-menu", `
53977
54123
  transform-origin: var(--v-transform-origin);
53978
54124
  background-color: var(--u-color);
53979
54125
  border-radius: var(--u-border-radius);
@@ -54220,7 +54366,7 @@
54220
54366
  const themeRef = useTheme(
54221
54367
  "Dropdown",
54222
54368
  "-dropdown",
54223
- style$16,
54369
+ style$17,
54224
54370
  dropdownLight,
54225
54371
  props,
54226
54372
  mergedClsPrefixRef
@@ -54472,93 +54618,264 @@
54472
54618
  }
54473
54619
  });
54474
54620
 
54475
- var MessageStatus = /* @__PURE__ */(MessageStatus2 => {
54476
- MessageStatus2["READ"] = "read";
54477
- MessageStatus2["UNREAD"] = "unread";
54478
- MessageStatus2["PENDING"] = "pending";
54479
- MessageStatus2["RETRY"] = "retry";
54480
- MessageStatus2["INCOME"] = "income";
54481
- return MessageStatus2;
54482
- })(MessageStatus || {});
54483
- var ChatMessageType = /* @__PURE__ */(ChatMessageType2 => {
54484
- ChatMessageType2["TEXT"] = "text";
54485
- ChatMessageType2["FILE"] = "file";
54486
- ChatMessageType2["MARK"] = "mark";
54487
- return ChatMessageType2;
54488
- })(ChatMessageType || {});
54489
- var ChatAttachmentStatus = /* @__PURE__ */(ChatAttachmentStatus2 => {
54490
- ChatAttachmentStatus2["PENDING"] = "pending";
54491
- ChatAttachmentStatus2["UPLOADING"] = "uploading";
54492
- ChatAttachmentStatus2["FINISHED"] = "finished";
54493
- ChatAttachmentStatus2["ERROR"] = "error";
54494
- return ChatAttachmentStatus2;
54495
- })(ChatAttachmentStatus || {});
54496
- var ChatMarkType = /* @__PURE__ */(ChatMarkType2 => {
54497
- ChatMarkType2["SYSTEM"] = "system";
54498
- ChatMarkType2["EVENT"] = "event";
54499
- ChatMarkType2["DIVIDER"] = "divider";
54500
- return ChatMarkType2;
54501
- })(ChatMarkType || {});
54502
- var ChatBubbleActionKey = /* @__PURE__ */(ChatBubbleActionKey2 => {
54503
- ChatBubbleActionKey2["EDIT"] = "edit";
54504
- ChatBubbleActionKey2["COPY"] = "copy";
54505
- ChatBubbleActionKey2["DELETE"] = "delete";
54506
- return ChatBubbleActionKey2;
54507
- })(ChatBubbleActionKey || {});
54508
- const chatInjectionKey = createInjectionKey("chat");
54621
+ var style$16 = cB("message-bubble", `
54622
+ box-sizing: border-box;
54623
+ width: 100%;
54624
+ `, [cE("message", `
54625
+ display: flex;
54626
+ margin-bottom: 8px;
54627
+ flex-shrink: 0;
54628
+ width: 100%;
54629
+ `, [cM("own", `
54630
+ justify-content: flex-end;
54631
+ `), cM("other", `
54632
+ justify-content: flex-start;
54633
+ `)]), cE("message-wrapper", `
54634
+ max-width: 70%;
54635
+ display: flex;
54636
+ flex-direction: column;
54637
+ gap: 4px;
54638
+ flex-shrink: 0;
54639
+ `, [cM("own", `
54640
+ align-items: flex-end;
54641
+ `), cM("other", `
54642
+ align-items: flex-start;
54643
+ `)]), cE("bubble", `
54644
+ border-radius: var(--u-message-bubble-border-radius);
54645
+ font-size: 14px;
54646
+ line-height: 20px;
54647
+ word-wrap: break-word;
54648
+ background-color: var(--u-message-bubble-background-color-other);
54649
+ color: var(--u-message-bubble-text-color-other);
54650
+ border-bottom-left-radius: 6px;
54651
+ width: fit-content;
54652
+ display: flex;
54653
+ flex-direction: column;
54654
+ padding: 12px;
54655
+ gap: 12px;
54656
+ `, [cM("own", `
54657
+ background-color: var(--u-message-bubble-background-color-own);
54658
+ color: var(--u-message-bubble-text-color-own);
54659
+ border-bottom-left-radius: var(--u-message-bubble-border-radius);
54660
+ border-bottom-right-radius: 6px;
54661
+ `)]), cE("title", `
54662
+ color: var(--u-message-bubble-title-color);
54663
+ white-space: pre-wrap;
54664
+ `), cE("text", `
54665
+ white-space: pre-wrap;
54666
+ `), cE("after-content", `
54667
+ white-space: normal;
54668
+ `), cE("meta", `
54669
+ display: flex;
54670
+ align-items: center;
54671
+ gap: 4px;
54672
+ font-size: 11px;
54673
+ color: var(--u-message-bubble-time-color);
54674
+ margin-top: 2px;
54675
+ `, [cM("own", `
54676
+ justify-content: flex-end;
54677
+ `), cM("other", `
54678
+ justify-content: flex-start;
54679
+ `)]), cE("time", `
54680
+ font-size: 11px;
54681
+ color: var(--u-message-bubble-time-color);
54682
+ `), cE("status", `
54683
+ color: var(--u-message-bubble-status-success-color);
54684
+ display: flex;
54685
+ align-items: center;
54686
+ `), cE("status-icon", `
54687
+ color: var(--u-message-bubble-time-color);
54688
+ `, [cM("read", `
54689
+ color: var(--u-message-bubble-status-read-color);
54690
+ `), cM("retry", `
54691
+ color: var(--u-message-bubble-error-color);
54692
+ `)]), cE("retry", `
54693
+ display: flex;
54694
+ align-items: center;
54695
+ gap: 4px;
54696
+ cursor: pointer;
54697
+ `), cE("retry-icon", `
54698
+ color: var(--u-message-bubble-error-color);
54699
+ `), cE("retry-text", `
54700
+ color: var(--u-message-bubble-error-color);
54701
+ font-size: 11px;
54702
+ font-weight: 500;
54703
+ `), cE("service", `
54704
+ display: flex;
54705
+ justify-content: center;
54706
+ width: 100%;
54707
+ margin: 12px 0;
54708
+ `, [c$1("span", `
54709
+ padding: 6px 12px;
54710
+ border-radius: 8px;
54711
+ color: var(--u-message-bubble-service-text-color);
54712
+ background-color: var(--u-message-bubble-service-background-color);
54713
+ text-align: center;
54714
+ `), cM("unread", `
54715
+ background-color: var(--u-message-bubble-unread-background-color);
54716
+ color: var(--u-message-bubble-unread-text-color);
54717
+ padding: 6px 12px;
54718
+ margin: 8px 0;
54719
+ `, [c$1("span", `
54720
+ display: inline-block;
54721
+ white-space: nowrap;
54722
+ padding: 0;
54723
+ border-radius: 0;
54724
+ background-color: transparent;
54725
+ color: inherit;
54726
+ `)])]), c$1(".u-message-bubble__bubble--own .u-upload-file", `
54727
+ background-color: var(--u-message-bubble-attachment-background-color-own);
54728
+ `), c$1(".u-message-bubble__bubble--other .u-upload-file", `
54729
+ background-color: var(--u-message-bubble-attachment-background-color-other);
54730
+ `), c$1(".u-upload-file-list .u-upload-file.u-upload-file--text-type", `
54731
+ margin-bottom: 0px;
54732
+ `)]);
54509
54733
 
54510
- var ChatAttachmentComponent = vue.defineComponent({
54511
- name: "ChatAttachment",
54512
- props: {
54513
- message: {
54514
- type: Object,
54515
- required: true
54516
- },
54517
- attachments: {
54518
- type: Array,
54519
- required: true
54520
- },
54521
- uploadProps: {
54522
- type: Object,
54523
- default: void 0
54524
- },
54525
- withPadding: {
54526
- type: Boolean,
54527
- default: false
54528
- }
54529
- },
54734
+ var _UMessageBubble = vue.defineComponent({
54735
+ name: "MessageBubble",
54736
+ props: messageBubbleProps,
54737
+ slots: Object,
54530
54738
  setup(props, { slots }) {
54531
- const UChat = vue.inject(chatInjectionKey, null);
54532
- const onAttachmentDownload = UChat?.onAttachmentDownload;
54739
+ const { mergedClsPrefixRef, inlineThemeDisabled } = useConfig(props);
54740
+ const themeRef = useTheme(
54741
+ "MessageBubble",
54742
+ "-message-bubble",
54743
+ style$16,
54744
+ messageBubbleLight,
54745
+ props,
54746
+ mergedClsPrefixRef
54747
+ );
54748
+ const contextMenuShow = vue.ref(false);
54749
+ const mergedRetryTextRef = vue.computed(
54750
+ () => props.retryText ?? "Retry"
54751
+ );
54752
+ const normalizedAttachmentsRef = vue.computed(() => {
54753
+ if (!props.attachments)
54754
+ return [];
54755
+ return Array.isArray(props.attachments) ? props.attachments : [props.attachments];
54756
+ });
54757
+ const messagePayloadRef = vue.computed(() => ({
54758
+ id: props.id,
54759
+ isOwn: props.isOwn,
54760
+ title: props.title,
54761
+ content: props.content,
54762
+ timestamp: props.timestamp,
54763
+ status: props.status,
54764
+ attachments: normalizedAttachmentsRef.value
54765
+ }));
54766
+ const cssVarsRef = vue.computed(() => {
54767
+ const {
54768
+ common: { cubicBezierEaseInOut },
54769
+ self: {
54770
+ messageBubbleBackgroundColorOwn,
54771
+ messageBubbleBackgroundColorOther,
54772
+ messageBubbleTextColorOwn,
54773
+ messageBubbleTextColorOther,
54774
+ messageTimeColor,
54775
+ messageStatusReadColor,
54776
+ messageStatusSuccessColor,
54777
+ attachmentBackgroundColorOwn,
54778
+ attachmentBackgroundColorOther,
54779
+ messageErrorColor,
54780
+ messageBorderRadius,
54781
+ unreadNotificationBackgroundColor,
54782
+ unreadNotificationTextColor,
54783
+ serviceMessageTextColor,
54784
+ serviceMessageBackgroundColor,
54785
+ messageTitleColor
54786
+ }
54787
+ } = themeRef.value;
54788
+ return {
54789
+ "--u-bezier": cubicBezierEaseInOut,
54790
+ "--u-message-bubble-background-color-own": messageBubbleBackgroundColorOwn,
54791
+ "--u-message-bubble-background-color-other": messageBubbleBackgroundColorOther,
54792
+ "--u-message-bubble-text-color-own": messageBubbleTextColorOwn,
54793
+ "--u-message-bubble-text-color-other": messageBubbleTextColorOther,
54794
+ "--u-message-bubble-time-color": messageTimeColor,
54795
+ "--u-message-bubble-status-read-color": messageStatusReadColor,
54796
+ "--u-message-bubble-status-success-color": messageStatusSuccessColor,
54797
+ "--u-message-bubble-attachment-background-color-own": attachmentBackgroundColorOwn,
54798
+ "--u-message-bubble-attachment-background-color-other": attachmentBackgroundColorOther,
54799
+ "--u-message-bubble-error-color": messageErrorColor,
54800
+ "--u-message-bubble-border-radius": messageBorderRadius,
54801
+ "--u-message-bubble-unread-background-color": unreadNotificationBackgroundColor,
54802
+ "--u-message-bubble-unread-text-color": unreadNotificationTextColor,
54803
+ "--u-message-bubble-service-text-color": serviceMessageTextColor,
54804
+ "--u-message-bubble-service-background-color": serviceMessageBackgroundColor,
54805
+ "--u-message-bubble-title-color": messageTitleColor
54806
+ };
54807
+ });
54808
+ const themeClassHandle = inlineThemeDisabled ? useThemeClass("message-bubble", void 0, cssVarsRef, props) : void 0;
54809
+ const messageContextMenuOptions = vue.computed(() => {
54810
+ if (!props.actions || props.actions.length === 0) {
54811
+ return [];
54812
+ }
54813
+ const result = [];
54814
+ for (const action of props.actions) {
54815
+ if (action.visible && !action.visible(messagePayloadRef.value)) {
54816
+ continue;
54817
+ }
54818
+ result.push({
54819
+ key: action.key,
54820
+ label: typeof action.label === "function" ? action.label() : action.label
54821
+ });
54822
+ }
54823
+ return result;
54824
+ });
54825
+ const resolveRenderContent = (content) => {
54826
+ if (typeof content === "function") {
54827
+ return content();
54828
+ }
54829
+ if (content instanceof Date) {
54830
+ return content.toString();
54831
+ }
54832
+ return content;
54833
+ };
54533
54834
  const getThumbnailUrl = (attachment) => {
54534
54835
  const url = [attachment.preview, attachment.thumbnail].find(
54535
54836
  (value) => typeof value === "string"
54536
54837
  );
54537
54838
  return url ?? null;
54538
54839
  };
54539
- const handleDownload = async (file) => {
54540
- if (onAttachmentDownload?.value) {
54541
- const attachment = props.attachments.find(
54542
- (att) => att.name === file.name
54840
+ const handleAttachmentDownload = async (file) => {
54841
+ if (props.onAttachmentDownload) {
54842
+ const attachment = normalizedAttachmentsRef.value.find(
54843
+ (item) => item.name === file.name
54543
54844
  );
54544
54845
  if (attachment) {
54545
54846
  try {
54546
- await onAttachmentDownload.value(attachment);
54847
+ await props.onAttachmentDownload(attachment);
54547
54848
  return false;
54548
- } catch (error) {
54549
- console.error("Download failed:", error);
54849
+ } catch {
54550
54850
  return false;
54551
54851
  }
54552
54852
  }
54553
54853
  }
54554
54854
  return true;
54555
54855
  };
54556
- const renderAttachment = () => {
54557
- const fileList = props.attachments.map(
54856
+ const handleRetryClick = () => {
54857
+ props.onRetry?.(messagePayloadRef.value);
54858
+ };
54859
+ const handleContextMenuSelect = (key) => {
54860
+ if (!props.actions || props.actions.length === 0) {
54861
+ contextMenuShow.value = false;
54862
+ return;
54863
+ }
54864
+ const action = props.actions.find((action2) => action2.key === key);
54865
+ if (action) {
54866
+ action.handler(messagePayloadRef.value);
54867
+ }
54868
+ contextMenuShow.value = false;
54869
+ };
54870
+ const renderAttachment = (withPadding = false) => {
54871
+ if (slots.messageAttachment) {
54872
+ return slots.messageAttachment(messagePayloadRef.value);
54873
+ }
54874
+ const fileList = normalizedAttachmentsRef.value.map(
54558
54875
  (attachment) => ({
54559
- id: `${String(attachment.id)}`,
54876
+ id: String(attachment.id),
54560
54877
  name: attachment.name,
54561
- status: attachment.status || ChatAttachmentStatus.FINISHED,
54878
+ status: attachment.status || MessageBubbleAttachmentStatus.FINISHED,
54562
54879
  percentage: attachment.percentage ?? null,
54563
54880
  url: attachment.url ?? null,
54564
54881
  thumbnailUrl: getThumbnailUrl(attachment),
@@ -54572,48 +54889,274 @@
54572
54889
  {
54573
54890
  abstract: true,
54574
54891
  fileList,
54575
- fileListStyle: props.withPadding ? {
54892
+ fileListStyle: withPadding ? {
54576
54893
  display: "flex",
54577
54894
  flexDirection: "column",
54578
54895
  gap: "2px",
54579
54896
  marginTop: "0"
54580
54897
  } : void 0,
54581
54898
  showRemoveButton: false,
54582
- showDownloadButton: props.attachments.some(
54583
- (attachment) => attachment.status === ChatAttachmentStatus.FINISHED && attachment.url && attachment.url !== "#"
54899
+ showDownloadButton: normalizedAttachmentsRef.value.some(
54900
+ (attachment) => attachment.status === MessageBubbleAttachmentStatus.FINISHED && attachment.url && attachment.url !== "#"
54584
54901
  ),
54585
- showRetryButton: props.attachments.some(
54586
- (attachment) => attachment.status === ChatAttachmentStatus.ERROR
54902
+ showRetryButton: normalizedAttachmentsRef.value.some(
54903
+ (attachment) => attachment.status === MessageBubbleAttachmentStatus.ERROR
54587
54904
  ),
54588
- onDownload: handleDownload,
54905
+ onDownload: handleAttachmentDownload,
54589
54906
  ...props.uploadProps
54590
54907
  },
54591
54908
  {
54592
54909
  default: () => /* @__PURE__ */ vue.h(_UUploadFileList, null, {
54593
54910
  "upload-file-title": slots["upload-file-title"] ? ({ file }) => slots["upload-file-title"]?.(file) : void 0,
54594
54911
  "upload-file-subtitle": slots["upload-file-subtitle"] ? ({ file }) => slots["upload-file-subtitle"]?.(file) : ({ file }) => {
54595
- const attachment = props.attachments.find(
54596
- (attachment2) => attachment2.name === file.name
54912
+ const attachment = normalizedAttachmentsRef.value.find(
54913
+ (item) => item.name === file.name
54597
54914
  );
54598
54915
  return /* @__PURE__ */ vue.h("span", { style: { fontSize: "12px", color: "#999" } }, attachment?.size || file.file?.size);
54599
54916
  }
54600
54917
  })
54601
54918
  }
54602
54919
  );
54603
- if (props.withPadding) {
54920
+ if (withPadding) {
54604
54921
  return /* @__PURE__ */ vue.h("div", { style: { padding: "2px" } }, uploadComponent);
54605
54922
  }
54606
54923
  return uploadComponent;
54607
54924
  };
54608
- return () => {
54609
- if (slots.default) {
54610
- return slots.default(props.message);
54925
+ const renderMessage = () => {
54926
+ const hasBubbleActionsSlot = slots.bubbleActions !== void 0;
54927
+ const hasBubbleActionsConfig = Boolean(
54928
+ props.actions && props.actions.length > 0
54929
+ );
54930
+ const hasTitle = Boolean(props.title || slots.title);
54931
+ const afterContentSlot = slots.afterContent || slots["after-content"];
54932
+ const hasAfterContent = Boolean(afterContentSlot);
54933
+ const hasContentInsideBubble = Boolean(
54934
+ props.content || slots.default || hasAfterContent || hasTitle || normalizedAttachmentsRef.value.length > 1
54935
+ );
54936
+ const messageBubbleContent = hasContentInsideBubble ? /* @__PURE__ */ vue.h(
54937
+ "div",
54938
+ {
54939
+ class: [
54940
+ `${mergedClsPrefixRef.value}-message-bubble__bubble`,
54941
+ props.isOwn ? `${mergedClsPrefixRef.value}-message-bubble__bubble--own` : `${mergedClsPrefixRef.value}-message-bubble__bubble--other`
54942
+ ]
54943
+ },
54944
+ hasTitle && /* @__PURE__ */ vue.h(
54945
+ _UText,
54946
+ {
54947
+ class: `${mergedClsPrefixRef.value}-message-bubble__title`,
54948
+ variant: "body-l-semi-bold"
54949
+ },
54950
+ slots.title ? slots.title(messagePayloadRef.value) : resolveRenderContent(props.title)
54951
+ ),
54952
+ normalizedAttachmentsRef.value.length > 0 && renderAttachment(true),
54953
+ (props.content || slots.default) && /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-message-bubble__text` }, slots.default ? slots.default(messagePayloadRef.value) : resolveRenderContent(props.content)),
54954
+ hasAfterContent && /* @__PURE__ */ vue.h(
54955
+ "div",
54956
+ {
54957
+ class: `${mergedClsPrefixRef.value}-message-bubble__after-content`
54958
+ },
54959
+ afterContentSlot?.(messagePayloadRef.value)
54960
+ )
54961
+ ) : normalizedAttachmentsRef.value.length === 1 ? renderAttachment() : null;
54962
+ return /* @__PURE__ */ vue.h(
54963
+ "div",
54964
+ {
54965
+ class: [
54966
+ `${mergedClsPrefixRef.value}-message-bubble__message`,
54967
+ props.isOwn ? `${mergedClsPrefixRef.value}-message-bubble__message--own` : `${mergedClsPrefixRef.value}-message-bubble__message--other`
54968
+ ]
54969
+ },
54970
+ /* @__PURE__ */ vue.h(
54971
+ "div",
54972
+ {
54973
+ class: [
54974
+ `${mergedClsPrefixRef.value}-message-bubble__message-wrapper`,
54975
+ props.isOwn ? `${mergedClsPrefixRef.value}-message-bubble__message-wrapper--own` : `${mergedClsPrefixRef.value}-message-bubble__message-wrapper--other`
54976
+ ]
54977
+ },
54978
+ hasBubbleActionsSlot ? /* @__PURE__ */ vue.h(
54979
+ "div",
54980
+ {
54981
+ onContextmenu: (event) => {
54982
+ event.preventDefault();
54983
+ contextMenuShow.value = false;
54984
+ void vue.nextTick().then(() => {
54985
+ contextMenuShow.value = true;
54986
+ });
54987
+ }
54988
+ },
54989
+ slots.bubbleActions?.(messagePayloadRef.value),
54990
+ messageBubbleContent
54991
+ ) : hasBubbleActionsConfig ? /* @__PURE__ */ vue.h(
54992
+ _UDropdown,
54993
+ {
54994
+ show: contextMenuShow.value,
54995
+ trigger: "manual",
54996
+ placement: "bottom-start",
54997
+ options: messageContextMenuOptions.value,
54998
+ onSelect: handleContextMenuSelect,
54999
+ onUpdateShow: (show) => {
55000
+ contextMenuShow.value = show;
55001
+ },
55002
+ onClickoutside: () => {
55003
+ contextMenuShow.value = false;
55004
+ }
55005
+ },
55006
+ {
55007
+ default: () => /* @__PURE__ */ vue.h(
55008
+ "div",
55009
+ {
55010
+ onContextmenu: (event) => {
55011
+ event.preventDefault();
55012
+ contextMenuShow.value = false;
55013
+ void vue.nextTick().then(() => {
55014
+ contextMenuShow.value = true;
55015
+ });
55016
+ }
55017
+ },
55018
+ messageBubbleContent
55019
+ )
55020
+ }
55021
+ ) : messageBubbleContent,
55022
+ /* @__PURE__ */ vue.h(
55023
+ "div",
55024
+ {
55025
+ class: [
55026
+ `${mergedClsPrefixRef.value}-message-bubble__meta`,
55027
+ props.isOwn ? `${mergedClsPrefixRef.value}-message-bubble__meta--own` : `${mergedClsPrefixRef.value}-message-bubble__meta--other`
55028
+ ]
55029
+ },
55030
+ props.status === MessageBubbleStatus.RETRY ? /* @__PURE__ */ vue.h(
55031
+ "div",
55032
+ {
55033
+ class: `${mergedClsPrefixRef.value}-message-bubble__retry`,
55034
+ onClick: handleRetryClick
55035
+ },
55036
+ /* @__PURE__ */ vue.h(
55037
+ UIcon$1,
55038
+ {
55039
+ size: 16,
55040
+ component: statusIconMapper$1[MessageBubbleStatus.RETRY],
55041
+ class: `${mergedClsPrefixRef.value}-message-bubble__retry-icon`,
55042
+ theme: themeRef.value.peers.StatusIcon,
55043
+ themeOverrides: themeRef.value.peerOverrides.StatusIcon
55044
+ }
55045
+ ),
55046
+ /* @__PURE__ */ vue.h(
55047
+ "span",
55048
+ {
55049
+ class: `${mergedClsPrefixRef.value}-message-bubble__retry-text`
55050
+ },
55051
+ mergedRetryTextRef.value
55052
+ )
55053
+ ) : /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(
55054
+ "span",
55055
+ {
55056
+ class: `${mergedClsPrefixRef.value}-message-bubble__time`
55057
+ },
55058
+ resolveRenderContent(props.timestamp)
55059
+ ), props.isOwn && props.status && /* @__PURE__ */ vue.h(
55060
+ "div",
55061
+ {
55062
+ class: `${mergedClsPrefixRef.value}-message-bubble__status`
55063
+ },
55064
+ slots.messageStatus ? slots.messageStatus(messagePayloadRef.value) : statusIconMapper$1[props.status] && /* @__PURE__ */ vue.h(
55065
+ UIcon$1,
55066
+ {
55067
+ size: 16,
55068
+ component: statusIconMapper$1[props.status],
55069
+ class: [
55070
+ `${mergedClsPrefixRef.value}-message-bubble__status-icon`,
55071
+ `${mergedClsPrefixRef.value}-message-bubble__status-icon--${String(props.status)}`
55072
+ ],
55073
+ theme: themeRef.value.peers.StatusIcon,
55074
+ themeOverrides: themeRef.value.peerOverrides.StatusIcon
55075
+ }
55076
+ )
55077
+ ))
55078
+ )
55079
+ )
55080
+ );
55081
+ };
55082
+ const renderService = () => {
55083
+ if (slots.service) {
55084
+ return slots.service(props.serviceVariant);
54611
55085
  }
54612
- return renderAttachment();
55086
+ return /* @__PURE__ */ vue.h(
55087
+ "div",
55088
+ {
55089
+ class: [
55090
+ `${mergedClsPrefixRef.value}-message-bubble__service`,
55091
+ `${mergedClsPrefixRef.value}-message-bubble__service--${props.serviceVariant}`
55092
+ ]
55093
+ },
55094
+ props.content && /* @__PURE__ */ vue.h("span", null, resolveRenderContent(props.content))
55095
+ );
55096
+ };
55097
+ return {
55098
+ mergedClsPrefixRef,
55099
+ inlineThemeDisabled,
55100
+ cssVars: cssVarsRef,
55101
+ themeClass: themeClassHandle?.themeClass,
55102
+ onRender: themeClassHandle?.onRender,
55103
+ renderMessage,
55104
+ renderService
54613
55105
  };
55106
+ },
55107
+ render() {
55108
+ this.onRender?.();
55109
+ return /* @__PURE__ */ vue.h(
55110
+ "div",
55111
+ {
55112
+ class: [`${this.mergedClsPrefixRef}-message-bubble`, this.themeClass],
55113
+ style: this.inlineThemeDisabled ? void 0 : this.cssVars
55114
+ },
55115
+ this.type === MessageBubbleType.SERVICE ? this.renderService() : this.renderMessage()
55116
+ );
54614
55117
  }
54615
55118
  });
54616
55119
 
55120
+ var MessageStatus = /* @__PURE__ */(MessageStatus2 => {
55121
+ MessageStatus2["READ"] = "read";
55122
+ MessageStatus2["UNREAD"] = "unread";
55123
+ MessageStatus2["PENDING"] = "pending";
55124
+ MessageStatus2["RETRY"] = "retry";
55125
+ MessageStatus2["INCOME"] = "income";
55126
+ return MessageStatus2;
55127
+ })(MessageStatus || {});
55128
+ var ChatMessageType = /* @__PURE__ */(ChatMessageType2 => {
55129
+ ChatMessageType2["TEXT"] = "text";
55130
+ ChatMessageType2["FILE"] = "file";
55131
+ ChatMessageType2["MARK"] = "mark";
55132
+ return ChatMessageType2;
55133
+ })(ChatMessageType || {});
55134
+ var ChatAttachmentStatus = /* @__PURE__ */(ChatAttachmentStatus2 => {
55135
+ ChatAttachmentStatus2["PENDING"] = "pending";
55136
+ ChatAttachmentStatus2["UPLOADING"] = "uploading";
55137
+ ChatAttachmentStatus2["FINISHED"] = "finished";
55138
+ ChatAttachmentStatus2["ERROR"] = "error";
55139
+ return ChatAttachmentStatus2;
55140
+ })(ChatAttachmentStatus || {});
55141
+ var ChatMarkType = /* @__PURE__ */(ChatMarkType2 => {
55142
+ ChatMarkType2["SYSTEM"] = "system";
55143
+ ChatMarkType2["EVENT"] = "event";
55144
+ ChatMarkType2["DIVIDER"] = "divider";
55145
+ return ChatMarkType2;
55146
+ })(ChatMarkType || {});
55147
+ var ChatBubbleActionKey = /* @__PURE__ */(ChatBubbleActionKey2 => {
55148
+ ChatBubbleActionKey2["EDIT"] = "edit";
55149
+ ChatBubbleActionKey2["COPY"] = "copy";
55150
+ ChatBubbleActionKey2["DELETE"] = "delete";
55151
+ return ChatBubbleActionKey2;
55152
+ })(ChatBubbleActionKey || {});
55153
+ const chatInjectionKey = createInjectionKey("chat");
55154
+ const markTypeToServiceVariantMap = {
55155
+ ["system" /* SYSTEM */]: MessageBubbleServiceVariant.SYSTEM,
55156
+ ["event" /* EVENT */]: MessageBubbleServiceVariant.EVENT,
55157
+ ["divider" /* DIVIDER */]: MessageBubbleServiceVariant.DIVIDER
55158
+ };
55159
+
54617
55160
  var style$15 = cB("chat", `
54618
55161
  height: 100%;
54619
55162
  background-color: transparent;
@@ -54744,7 +55287,10 @@
54744
55287
  height: 100%;
54745
55288
  max-height: 100%;
54746
55289
  min-height: 0;
54747
- `, [cE("header", `
55290
+ `, [cM("standalone", `
55291
+ border: none;
55292
+ border-radius: 0;
55293
+ `), cE("header", `
54748
55294
  border-bottom: 1px solid var(--u-border-color);
54749
55295
  width: 100%;
54750
55296
  padding: 24px 20px 10px 24px;
@@ -54994,12 +55540,6 @@
54994
55540
  background-color: var(--u-attachment-background-color-other);
54995
55541
  `)]);
54996
55542
 
54997
- const statusIconMapper$1 = {
54998
- [MessageStatus.READ]: CheckmarkDoneSharp,
54999
- [MessageStatus.PENDING]: MdTime,
55000
- [MessageStatus.RETRY]: Refresh,
55001
- [MessageStatus.UNREAD]: CheckmarkDoneSharp
55002
- };
55003
55543
  const chatMessagesProps = {
55004
55544
  ...useTheme.props,
55005
55545
  messages: {
@@ -55059,8 +55599,21 @@
55059
55599
  const { mergedClsPrefixRef } = useConfig(props);
55060
55600
  const themeRef = UChat?.mergedThemeRef ?? useTheme("Chat", "-chat", style$15, chatLight, props, mergedClsPrefixRef);
55061
55601
  const { localeRef } = useLocale("Chat");
55062
- const contextMenuShow = vue.ref(false);
55063
- const contextMenuMessage = vue.ref();
55602
+ const messageBubbleThemeOverridesRef = vue.computed(() => {
55603
+ const { self, peerOverrides } = themeRef.value;
55604
+ return {
55605
+ messageBubbleBackgroundColorOwn: self.messageBubbleBackgroundColorOwn,
55606
+ messageBubbleBackgroundColorOther: self.messageBubbleBackgroundColorOther,
55607
+ messageBubbleTextColorOwn: self.messageBubbleTextColorOwn,
55608
+ messageBubbleTextColorOther: self.messageBubbleTextColorOther,
55609
+ messageTimeColor: self.messageTimeColor,
55610
+ attachmentBackgroundColorOwn: self.attachmentBackgroundColorOwn,
55611
+ attachmentBackgroundColorOther: self.attachmentBackgroundColorOther,
55612
+ unreadNotificationBackgroundColor: self.unreadNotificationBackgroundColor,
55613
+ unreadNotificationTextColor: self.unreadNotificationTextColor,
55614
+ ...peerOverrides.MessageBubble
55615
+ };
55616
+ });
55064
55617
  const cssVarsRef = vue.computed(() => {
55065
55618
  const {
55066
55619
  common: {
@@ -55148,49 +55701,23 @@
55148
55701
  const handleMessageRetry = (message) => {
55149
55702
  props.onMessageRetry?.(message);
55150
55703
  };
55151
- const messageContextMenuOptions = vue.computed(() => {
55152
- const message = contextMenuMessage.value;
55153
- if (!message)
55154
- return;
55704
+ const getMessageBubbleActions = (message) => {
55155
55705
  const bubbleActions = UChat?.bubbleActionsRef?.value;
55156
- if (!bubbleActions || bubbleActions.length === 0) {
55157
- return [];
55158
- }
55159
- const result = [];
55160
- for (const action of bubbleActions) {
55161
- if (action.visible && !action.visible(message)) {
55162
- continue;
55163
- }
55164
- const label = typeof action.label === "function" ? action.label() : action.label;
55165
- result.push({
55166
- label,
55167
- key: String(action.key)
55168
- });
55706
+ if (!bubbleActions?.length) {
55707
+ return void 0;
55169
55708
  }
55170
- return result;
55171
- });
55172
- const handleContextMenuSelect = (key) => {
55173
- const message = contextMenuMessage.value;
55174
- if (!message)
55175
- return;
55176
- if (key === ChatBubbleActionKey.EDIT) {
55177
- const startEditing = UChat?.startEditingMessage?.value;
55178
- if (startEditing) {
55179
- startEditing(message);
55709
+ return bubbleActions.filter((action) => !action.visible || action.visible(message)).map((action) => ({
55710
+ key: String(action.key),
55711
+ label: action.label,
55712
+ handler: () => {
55713
+ if (action.key === ChatBubbleActionKey.EDIT) {
55714
+ const startEditing = UChat?.startEditingMessage?.value;
55715
+ startEditing?.(message);
55716
+ return;
55717
+ }
55718
+ action.handler(message);
55180
55719
  }
55181
- contextMenuShow.value = false;
55182
- return;
55183
- }
55184
- const bubbleActions = UChat?.bubbleActionsRef?.value;
55185
- if (!bubbleActions)
55186
- return;
55187
- const action = bubbleActions.find(
55188
- (action2) => action2.key === key
55189
- );
55190
- if (action) {
55191
- action.handler(message);
55192
- }
55193
- contextMenuShow.value = false;
55720
+ }));
55194
55721
  };
55195
55722
  const renderDateSeparator = (date) => {
55196
55723
  return /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-chat-main__date-separator` }, /* @__PURE__ */ vue.h("span", null, date));
@@ -55198,208 +55725,82 @@
55198
55725
  const renderUnreadNotification = () => {
55199
55726
  const count = props.unreadNotificationCount ?? unreadMessagesCount.value;
55200
55727
  return /* @__PURE__ */ vue.h(
55201
- "div",
55728
+ _UMessageBubble,
55202
55729
  {
55203
- class: `${mergedClsPrefixRef.value}-chat-main__unread-notification`
55204
- },
55205
- /* @__PURE__ */ vue.h("span", null, count, " ", mergedUnreadNotificationTextRef.value)
55730
+ type: MessageBubbleType.SERVICE,
55731
+ serviceVariant: MessageBubbleServiceVariant.UNREAD,
55732
+ content: `${count} ${mergedUnreadNotificationTextRef.value}`,
55733
+ theme: themeRef.value.peers.MessageBubble,
55734
+ themeOverrides: messageBubbleThemeOverridesRef.value
55735
+ }
55206
55736
  );
55207
55737
  };
55208
55738
  const renderMarkMessage = (message) => {
55209
- const markTypeClass = message.markType === ChatMarkType.SYSTEM ? "system" : message.markType === ChatMarkType.EVENT ? "event" : "divider";
55739
+ const serviceVariant = markTypeToServiceVariantMap[message.markType ?? ChatMarkType.DIVIDER];
55210
55740
  return /* @__PURE__ */ vue.h(
55211
- "div",
55741
+ _UMessageBubble,
55212
55742
  {
55213
- key: message.id,
55214
- class: [
55215
- `${mergedClsPrefixRef.value}-chat-main__mark`,
55216
- `${mergedClsPrefixRef.value}-chat-main__mark--${markTypeClass}`
55217
- ]
55218
- },
55219
- message.content && /* @__PURE__ */ vue.h("span", null, message.content)
55743
+ key: String(message.id),
55744
+ type: MessageBubbleType.SERVICE,
55745
+ serviceVariant,
55746
+ content: message.content,
55747
+ theme: themeRef.value.peers.MessageBubble,
55748
+ themeOverrides: messageBubbleThemeOverridesRef.value
55749
+ }
55220
55750
  );
55221
55751
  };
55222
55752
  const renderMessage = (message) => {
55223
- const isOwn = message.isOwn;
55224
55753
  const attachments = message.attachment ? Array.isArray(message.attachment) ? message.attachment : [message.attachment] : [];
55225
- const isContextMenuForThisMessage = contextMenuShow.value && contextMenuMessage.value?.id === message.id;
55226
- const hasBubbleActionsSlot = slots.bubbleActions !== void 0;
55227
- const hasBubbleActionsConfig = UChat?.bubbleActionsRef?.value && UChat.bubbleActionsRef.value.length > 0;
55228
- const messageBubbleContent = message.content || attachments.length > 1 ? /* @__PURE__ */ vue.h(
55229
- "div",
55230
- {
55231
- class: [
55232
- `${mergedClsPrefixRef.value}-chat-main__message-bubble`,
55233
- isOwn ? `${mergedClsPrefixRef.value}-chat-main__message-bubble--own` : `${mergedClsPrefixRef.value}-chat-main__message-bubble--other`
55234
- ]
55235
- },
55236
- attachments.length > 0 && /* @__PURE__ */ vue.h(
55237
- ChatAttachmentComponent,
55238
- {
55239
- message,
55240
- attachments,
55241
- uploadProps: props.uploadProps,
55242
- withPadding: true
55243
- },
55244
- {
55245
- default: slots.messageAttachment,
55246
- "upload-file-title": slots.messageAttachmentTitle,
55247
- "upload-file-subtitle": slots.messageAttachmentSubtitle
55248
- }
55249
- ),
55250
- message.content && /* @__PURE__ */ vue.h(
55251
- "div",
55252
- {
55253
- class: `${mergedClsPrefixRef.value}-chat-main__message-text`
55254
- },
55255
- message.content
55256
- )
55257
- ) : attachments.length === 1 ? /* @__PURE__ */ vue.h(
55258
- ChatAttachmentComponent,
55754
+ const messageBubbleAttachments = attachments.map((attachment) => ({
55755
+ id: attachment.id,
55756
+ name: attachment.name,
55757
+ url: attachment.url,
55758
+ size: attachment.size,
55759
+ thumbnail: typeof attachment.thumbnail === "string" ? attachment.thumbnail : void 0,
55760
+ preview: typeof attachment.preview === "string" ? attachment.preview : void 0,
55761
+ status: attachment.status ? String(attachment.status) : void 0,
55762
+ percentage: attachment.percentage,
55763
+ type: attachment.type
55764
+ }));
55765
+ const handleMessageBubbleRetry = () => {
55766
+ handleMessageRetry(message);
55767
+ };
55768
+ const handleMessageBubbleAttachmentDownload = (attachment) => {
55769
+ const originalAttachment = attachments.find(
55770
+ (item) => String(item.id) === String(attachment.id)
55771
+ );
55772
+ if (originalAttachment && UChat?.onAttachmentDownload?.value) {
55773
+ return UChat.onAttachmentDownload.value(originalAttachment);
55774
+ }
55775
+ };
55776
+ return /* @__PURE__ */ vue.h(
55777
+ _UMessageBubble,
55259
55778
  {
55260
- message,
55261
- attachments,
55262
- uploadProps: props.uploadProps
55779
+ key: String(message.id),
55780
+ type: MessageBubbleType.MESSAGE,
55781
+ isOwn: Boolean(message.isOwn),
55782
+ content: message.content,
55783
+ timestamp: message.timestamp,
55784
+ title: message.title,
55785
+ status: message.status,
55786
+ attachments: messageBubbleAttachments,
55787
+ uploadProps: props.uploadProps,
55788
+ retryText: mergedRetryTextRef.value,
55789
+ actions: getMessageBubbleActions(message),
55790
+ onRetry: handleMessageBubbleRetry,
55791
+ onAttachmentDownload: handleMessageBubbleAttachmentDownload,
55792
+ theme: themeRef.value.peers.MessageBubble,
55793
+ themeOverrides: messageBubbleThemeOverridesRef.value
55263
55794
  },
55264
55795
  {
55265
- default: slots.messageAttachment,
55796
+ bubbleActions: slots.bubbleActions ? () => slots.bubbleActions?.(message) : void 0,
55797
+ messageStatus: slots.messageStatus ? () => slots.messageStatus?.(message) : void 0,
55798
+ messageAttachment: slots.messageAttachment ? () => slots.messageAttachment?.(message) : void 0,
55799
+ afterContent: slots.messageAfterContent ? () => slots.messageAfterContent?.(message) : void 0,
55266
55800
  "upload-file-title": slots.messageAttachmentTitle,
55267
55801
  "upload-file-subtitle": slots.messageAttachmentSubtitle
55268
55802
  }
55269
- ) : null;
55270
- const messageContent = /* @__PURE__ */ vue.h(
55271
- "div",
55272
- {
55273
- key: message.id,
55274
- class: [
55275
- `${mergedClsPrefixRef.value}-chat-main__message`,
55276
- isOwn ? `${mergedClsPrefixRef.value}-chat-main__message--own` : `${mergedClsPrefixRef.value}-chat-main__message--other`
55277
- ]
55278
- },
55279
- /* @__PURE__ */ vue.h(
55280
- "div",
55281
- {
55282
- class: [
55283
- `${mergedClsPrefixRef.value}-chat-main__message-wrapper`,
55284
- isOwn ? `${mergedClsPrefixRef.value}-chat-main__message-wrapper--own` : `${mergedClsPrefixRef.value}-chat-main__message-wrapper--other`
55285
- ]
55286
- },
55287
- hasBubbleActionsSlot ? /* @__PURE__ */ vue.h(
55288
- "div",
55289
- {
55290
- onContextmenu: (e) => {
55291
- e.preventDefault();
55292
- contextMenuShow.value = false;
55293
- void vue.nextTick().then(() => {
55294
- contextMenuShow.value = true;
55295
- contextMenuMessage.value = message;
55296
- });
55297
- }
55298
- },
55299
- slots.bubbleActions?.(message),
55300
- messageBubbleContent
55301
- ) : hasBubbleActionsConfig ? /* @__PURE__ */ vue.h(
55302
- _UDropdown,
55303
- {
55304
- show: isContextMenuForThisMessage,
55305
- onUpdateShow: (show) => {
55306
- if (!show && contextMenuMessage.value?.id === message.id) {
55307
- contextMenuShow.value = false;
55308
- }
55309
- },
55310
- onClickoutside: () => {
55311
- if (contextMenuMessage.value?.id === message.id) {
55312
- contextMenuShow.value = false;
55313
- }
55314
- },
55315
- trigger: "manual",
55316
- placement: "bottom-start",
55317
- options: messageContextMenuOptions.value,
55318
- onSelect: handleContextMenuSelect
55319
- },
55320
- {
55321
- default: () => /* @__PURE__ */ vue.h(
55322
- "div",
55323
- {
55324
- onContextmenu: (event) => {
55325
- event.preventDefault();
55326
- contextMenuShow.value = false;
55327
- void vue.nextTick().then(() => {
55328
- contextMenuShow.value = true;
55329
- contextMenuMessage.value = message;
55330
- });
55331
- }
55332
- },
55333
- messageBubbleContent
55334
- )
55335
- }
55336
- ) : messageBubbleContent,
55337
- /* @__PURE__ */ vue.h(
55338
- "div",
55339
- {
55340
- class: [
55341
- `${mergedClsPrefixRef.value}-chat-main__message-meta`,
55342
- isOwn ? `${mergedClsPrefixRef.value}-chat-main__message-meta--own` : `${mergedClsPrefixRef.value}-chat-main__message-meta--other`,
55343
- message.status === MessageStatus.RETRY && `${mergedClsPrefixRef.value}-chat-main__message-meta--retry`
55344
- ]
55345
- },
55346
- message.status === MessageStatus.RETRY ? /* @__PURE__ */ vue.h(
55347
- "div",
55348
- {
55349
- class: `${mergedClsPrefixRef.value}-chat-main__message-retry`,
55350
- onClick: () => {
55351
- handleMessageRetry(message);
55352
- },
55353
- style: { cursor: "pointer" }
55354
- },
55355
- /* @__PURE__ */ vue.h(
55356
- UIcon$1,
55357
- {
55358
- size: 16,
55359
- component: statusIconMapper$1[MessageStatus.RETRY],
55360
- class: `${mergedClsPrefixRef.value}-chat-main__message-retry-icon`,
55361
- theme: themeRef.value.peers.StatusIcon,
55362
- themeOverrides: themeRef.value.peerOverrides.StatusIcon
55363
- }
55364
- ),
55365
- /* @__PURE__ */ vue.h(
55366
- "span",
55367
- {
55368
- class: `${mergedClsPrefixRef.value}-chat-main__message-retry-text`
55369
- },
55370
- mergedRetryTextRef.value
55371
- )
55372
- ) : /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(
55373
- "span",
55374
- {
55375
- class: `${mergedClsPrefixRef.value}-chat-main__message-time`
55376
- },
55377
- message.timestamp
55378
- ), isOwn && message.status && /* @__PURE__ */ vue.h(
55379
- "div",
55380
- {
55381
- class: `${mergedClsPrefixRef.value}-chat-main__message-status`
55382
- },
55383
- slots.messageStatus ? slots.messageStatus(message) : statusIconMapper$1[message.status] && /* @__PURE__ */ vue.h(
55384
- UIcon$1,
55385
- {
55386
- size: 16,
55387
- component: statusIconMapper$1[message.status],
55388
- class: [
55389
- `${mergedClsPrefixRef.value}-chat-main__message-status-icon`,
55390
- `${mergedClsPrefixRef.value}-chat-main__message-status-icon--${String(
55391
- message.status
55392
- )}`
55393
- ],
55394
- theme: themeRef.value.peers.StatusIcon,
55395
- themeOverrides: themeRef.value.peerOverrides.StatusIcon
55396
- }
55397
- )
55398
- ))
55399
- )
55400
- )
55401
55803
  );
55402
- return messageContent;
55403
55804
  };
55404
55805
  const renderSkeletonMessage = (isOwn, index) => {
55405
55806
  return /* @__PURE__ */ vue.h(
@@ -55451,10 +55852,6 @@
55451
55852
  renderSkeletonMessage,
55452
55853
  renderDateSeparator,
55453
55854
  renderUnreadNotification,
55454
- contextMenuShow,
55455
- contextMenuMessage,
55456
- messageContextMenuOptions,
55457
- handleContextMenuSelect,
55458
55855
  cssVars: cssVarsRef,
55459
55856
  themeClass: themeClassHandle?.themeClass,
55460
55857
  onRender: themeClassHandle?.onRender
@@ -55561,89 +55958,323 @@
55561
55958
  background: "transparent"
55562
55959
  }
55563
55960
  },
55564
- /* @__PURE__ */ vue.h(
55565
- "div",
55566
- {
55567
- class: `${mergedClsPrefixRef}-chat-main__messages-container`,
55568
- onContextmenu: (event) => {
55569
- const target = event.target;
55570
- const messagesContainer = event.currentTarget;
55571
- if (target === messagesContainer) {
55572
- event.preventDefault();
55573
- this.contextMenuShow = false;
55574
- }
55961
+ /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef}-chat-main__messages-container` }, messagesWithDates.map(
55962
+ (item) => {
55963
+ if (item.type === "date-separator") {
55964
+ return renderDateSeparator(item.date ?? "");
55575
55965
  }
55576
- },
55577
- messagesWithDates.map(
55578
- (item) => {
55579
- if (item.type === "date-separator") {
55580
- return renderDateSeparator(item.date ?? "");
55581
- }
55582
- if (item.type === "unread-notification") {
55583
- return renderUnreadNotification();
55584
- }
55585
- const message = item;
55586
- if (message.type === ChatMessageType.MARK) {
55587
- return renderMarkMessage(message);
55588
- }
55589
- return renderMessage(message);
55966
+ if (item.type === "unread-notification") {
55967
+ return renderUnreadNotification();
55590
55968
  }
55591
- )
55592
- )
55969
+ const message = item;
55970
+ if (message.type === ChatMessageType.MARK) {
55971
+ return renderMarkMessage(message);
55972
+ }
55973
+ return renderMessage(message);
55974
+ }
55975
+ ))
55593
55976
  )
55594
55977
  );
55595
55978
  }
55596
55979
  });
55597
55980
 
55598
55981
  const SENDING_DELAY = 100;
55599
- var ChatMainArea = vue.defineComponent({
55982
+ const chatMainAreaProps = {
55983
+ ...useTheme.props,
55984
+ selectedChat: {
55985
+ type: Object,
55986
+ default: void 0
55987
+ },
55988
+ messages: {
55989
+ type: Array,
55990
+ default: () => []
55991
+ },
55992
+ typingChatIds: {
55993
+ type: Array,
55994
+ default: () => []
55995
+ },
55996
+ loading: {
55997
+ type: Boolean,
55998
+ default: false
55999
+ },
56000
+ loadingCount: {
56001
+ type: Number,
56002
+ default: 10
56003
+ },
56004
+ headerButtonProps: {
56005
+ type: Object,
56006
+ default: void 0
56007
+ },
56008
+ headerIconProps: {
56009
+ type: Object,
56010
+ default: void 0
56011
+ },
56012
+ headerShareButtonProps: {
56013
+ type: Object,
56014
+ default: void 0
56015
+ },
56016
+ headerProfileButtonProps: {
56017
+ type: Object,
56018
+ default: void 0
56019
+ },
56020
+ headerCloseButtonProps: {
56021
+ type: Object,
56022
+ default: void 0
56023
+ },
56024
+ headerShareIconProps: {
56025
+ type: Object,
56026
+ default: void 0
56027
+ },
56028
+ headerProfileIconProps: {
56029
+ type: Object,
56030
+ default: void 0
56031
+ },
56032
+ messageUploadProps: {
56033
+ type: Object,
56034
+ default: void 0
56035
+ },
56036
+ footerInputProps: {
56037
+ type: Object,
56038
+ default: void 0
56039
+ },
56040
+ footerButtonProps: {
56041
+ type: Object,
56042
+ default: void 0
56043
+ },
56044
+ footerUploadProps: {
56045
+ type: Object,
56046
+ default: void 0
56047
+ },
56048
+ footerIconProps: {
56049
+ type: Object,
56050
+ default: void 0
56051
+ },
56052
+ footerSuffixIconProps: {
56053
+ type: Object,
56054
+ default: void 0
56055
+ },
56056
+ showAttachButton: {
56057
+ type: Boolean,
56058
+ default: true
56059
+ },
56060
+ inputPlaceholder: {
56061
+ type: String,
56062
+ default: void 0
56063
+ },
56064
+ retryText: {
56065
+ type: String,
56066
+ default: void 0
56067
+ },
56068
+ typingText: {
56069
+ type: String,
56070
+ default: void 0
56071
+ },
56072
+ closeButtonText: {
56073
+ type: String,
56074
+ default: void 0
56075
+ },
56076
+ shareButtonTooltip: {
56077
+ type: String,
56078
+ default: void 0
56079
+ },
56080
+ profileButtonTooltip: {
56081
+ type: String,
56082
+ default: void 0
56083
+ },
56084
+ unreadNotificationText: {
56085
+ type: String,
56086
+ default: void 0
56087
+ },
56088
+ bubbleActions: {
56089
+ type: Array,
56090
+ default: void 0
56091
+ },
56092
+ onMessageSend: {
56093
+ type: Function,
56094
+ default: void 0
56095
+ },
56096
+ onMessageRetry: {
56097
+ type: Function,
56098
+ default: void 0
56099
+ },
56100
+ onFooterInputChange: {
56101
+ type: Function,
56102
+ default: void 0
56103
+ },
56104
+ onChatClose: {
56105
+ type: Function,
56106
+ default: void 0
56107
+ },
56108
+ onChatShare: {
56109
+ type: Function,
56110
+ default: void 0
56111
+ },
56112
+ onUserProfile: {
56113
+ type: Function,
56114
+ default: void 0
56115
+ },
56116
+ onAttachmentUpload: {
56117
+ type: Function,
56118
+ default: void 0
56119
+ },
56120
+ onAttachmentDownload: {
56121
+ type: Function,
56122
+ default: void 0
56123
+ },
56124
+ onMessagesScrollToTop: {
56125
+ type: Function,
56126
+ default: void 0
56127
+ },
56128
+ onMessagesScrollToBottom: {
56129
+ type: Function,
56130
+ default: void 0
56131
+ }
56132
+ };
56133
+ var _UChatMainArea = vue.defineComponent({
55600
56134
  name: "ChatMainArea",
55601
- setup(_, { slots }) {
56135
+ props: chatMainAreaProps,
56136
+ setup(props, { slots }) {
56137
+ const UChat = vue.inject(chatInjectionKey, null);
56138
+ const isStandalone = !UChat;
56139
+ const { mergedClsPrefixRef } = useConfig(props);
56140
+ const mergedThemeRef = UChat?.mergedThemeRef ?? useTheme("Chat", "-chat", style$15, chatLight, props, mergedClsPrefixRef);
55602
56141
  const { localeRef } = useLocale("Chat");
55603
- const {
55604
- mergedClsPrefixRef,
55605
- mergedThemeRef,
55606
- selectedChatRef,
55607
- messagesRef,
55608
- typingChatIdsRef,
55609
- messagesLoadingRef,
55610
- messagesLoadingCountRef,
55611
- headerButtonPropsRef,
55612
- headerIconPropsRef,
55613
- headerShareButtonPropsRef,
55614
- headerProfileButtonPropsRef,
55615
- headerCloseButtonPropsRef,
55616
- headerShareIconPropsRef,
55617
- headerProfileIconPropsRef,
55618
- messageUploadPropsRef,
55619
- footerInputPropsRef,
55620
- footerButtonPropsRef,
55621
- footerUploadPropsRef,
55622
- footerIconPropsRef,
55623
- footerSuffixIconPropsRef,
55624
- inputPlaceholderRef,
55625
- retryTextRef,
55626
- typingTextRef,
55627
- closeButtonTextRef,
55628
- shareButtonTooltipRef,
55629
- profileButtonTooltipRef,
55630
- unreadNotificationTextRef,
55631
- notificationsShownSetRef,
55632
- unreadCountsBeforeReadRef,
55633
- markNotificationShown,
55634
- handleMessageSend,
55635
- handleMessageRetry,
55636
- handleFooterInputChange,
55637
- startEditingMessage: startEditingMessageRef,
55638
- editMessageIdRef,
55639
- bubbleActionsRef,
55640
- onAttachmentUpload,
55641
- onChatClose,
55642
- onChatShare,
55643
- onUserProfile,
55644
- onMessagesScrollToTop,
55645
- onMessagesScrollToBottom
55646
- } = vue.inject(chatInjectionKey);
56142
+ const selectedChatRef = UChat?.selectedChatRef ?? vue.toRef(props, "selectedChat");
56143
+ const messagesRef = UChat?.messagesRef ?? vue.toRef(props, "messages");
56144
+ const typingChatIdsRef = UChat?.typingChatIdsRef ?? vue.toRef(props, "typingChatIds");
56145
+ const messagesLoadingRef = UChat?.messagesLoadingRef ?? vue.toRef(props, "loading");
56146
+ const messagesLoadingCountRef = UChat?.messagesLoadingCountRef ?? vue.toRef(props, "loadingCount");
56147
+ const headerButtonPropsRef = UChat?.headerButtonPropsRef ?? vue.toRef(props, "headerButtonProps");
56148
+ const headerIconPropsRef = UChat?.headerIconPropsRef ?? vue.toRef(props, "headerIconProps");
56149
+ const headerShareButtonPropsRef = UChat?.headerShareButtonPropsRef ?? vue.toRef(props, "headerShareButtonProps");
56150
+ const headerProfileButtonPropsRef = UChat?.headerProfileButtonPropsRef ?? vue.toRef(props, "headerProfileButtonProps");
56151
+ const headerCloseButtonPropsRef = UChat?.headerCloseButtonPropsRef ?? vue.toRef(props, "headerCloseButtonProps");
56152
+ const headerShareIconPropsRef = UChat?.headerShareIconPropsRef ?? vue.toRef(props, "headerShareIconProps");
56153
+ const headerProfileIconPropsRef = UChat?.headerProfileIconPropsRef ?? vue.toRef(props, "headerProfileIconProps");
56154
+ const messageUploadPropsRef = UChat?.messageUploadPropsRef ?? vue.toRef(props, "messageUploadProps");
56155
+ const footerInputPropsRef = UChat?.footerInputPropsRef ?? vue.toRef(props, "footerInputProps");
56156
+ const footerButtonPropsRef = UChat?.footerButtonPropsRef ?? vue.toRef(props, "footerButtonProps");
56157
+ const footerUploadPropsRef = UChat?.footerUploadPropsRef ?? vue.toRef(props, "footerUploadProps");
56158
+ const footerIconPropsRef = UChat?.footerIconPropsRef ?? vue.toRef(props, "footerIconProps");
56159
+ const footerSuffixIconPropsRef = UChat?.footerSuffixIconPropsRef ?? vue.toRef(props, "footerSuffixIconProps");
56160
+ const inputPlaceholderRef = UChat?.inputPlaceholderRef ?? vue.computed(
56161
+ () => props.inputPlaceholder ?? localeRef.value.inputPlaceholder
56162
+ );
56163
+ const retryTextRef = UChat?.retryTextRef ?? vue.computed(() => props.retryText ?? localeRef.value.retryText);
56164
+ const typingTextRef = UChat?.typingTextRef ?? vue.computed(() => props.typingText ?? localeRef.value.typingText);
56165
+ const closeButtonTextRef = UChat?.closeButtonTextRef ?? vue.computed(
56166
+ () => props.closeButtonText ?? localeRef.value.closeButtonText
56167
+ );
56168
+ const shareButtonTooltipRef = UChat?.shareButtonTooltipRef ?? vue.computed(
56169
+ () => props.shareButtonTooltip ?? localeRef.value.shareButtonTooltip
56170
+ );
56171
+ const profileButtonTooltipRef = UChat?.profileButtonTooltipRef ?? vue.computed(
56172
+ () => props.profileButtonTooltip ?? localeRef.value.profileButtonTooltip
56173
+ );
56174
+ const unreadNotificationTextRef = UChat?.unreadNotificationTextRef ?? vue.computed(
56175
+ () => props.unreadNotificationText ?? localeRef.value.unreadNotificationText
56176
+ );
56177
+ const notificationsShownSetRef = UChat?.notificationsShownSetRef ?? vue.ref(/* @__PURE__ */ new Set());
56178
+ const unreadCountsBeforeReadRef = UChat?.unreadCountsBeforeReadRef ?? vue.ref({});
56179
+ const markNotificationShown = UChat?.markNotificationShown ?? ((chatId) => {
56180
+ notificationsShownSetRef.value.add(chatId);
56181
+ notificationsShownSetRef.value = new Set(notificationsShownSetRef.value);
56182
+ });
56183
+ const editMessageIdRef = UChat?.editMessageIdRef ?? vue.ref(null);
56184
+ const startEditingMessageRef = UChat?.startEditingMessage ?? vue.ref();
56185
+ const bubbleActionsRef = UChat?.bubbleActionsRef ?? vue.toRef(props, "bubbleActions");
56186
+ const handleMessageSend = UChat?.handleMessageSend ?? ((content, attachments) => props.onMessageSend?.(content, attachments));
56187
+ const handleMessageRetry = UChat?.handleMessageRetry ?? ((message) => props.onMessageRetry?.(message));
56188
+ const handleFooterInputChange = UChat?.handleFooterInputChange ?? ((value, chatId) => props.onFooterInputChange?.(value, chatId));
56189
+ const onAttachmentUpload = UChat?.onAttachmentUpload ?? vue.toRef(props, "onAttachmentUpload");
56190
+ const onChatClose = UChat?.onChatClose ?? vue.toRef(props, "onChatClose");
56191
+ const onChatShare = UChat?.onChatShare ?? vue.toRef(props, "onChatShare");
56192
+ const onUserProfile = UChat?.onUserProfile ?? vue.toRef(props, "onUserProfile");
56193
+ const onMessagesScrollToTop = UChat?.onMessagesScrollToTop ?? vue.toRef(props, "onMessagesScrollToTop");
56194
+ const onMessagesScrollToBottom = UChat?.onMessagesScrollToBottom ?? vue.toRef(props, "onMessagesScrollToBottom");
56195
+ const cssVarsRef = vue.computed(() => {
56196
+ const {
56197
+ common: {
56198
+ cubicBezierEaseInOut,
56199
+ brandPrimary500,
56200
+ staticGreen,
56201
+ staticRed,
56202
+ textPrimary,
56203
+ textSecondary,
56204
+ textTertiary
56205
+ },
56206
+ self: {
56207
+ backgroundColor,
56208
+ borderColor,
56209
+ sidebarItemSubtitleColor,
56210
+ mainBackgroundColor,
56211
+ headerBackgroundColor,
56212
+ headerBorderColor,
56213
+ headerTitleColor,
56214
+ messageBubbleBackgroundColorOwn,
56215
+ messageBubbleBackgroundColorOther,
56216
+ messageBubbleTextColorOwn,
56217
+ messageBubbleTextColorOther,
56218
+ messageTimeColor,
56219
+ messageStatusColor,
56220
+ attachmentBackgroundColorOwn,
56221
+ attachmentBackgroundColorOther,
56222
+ footerBackgroundColor,
56223
+ footerBorderColor,
56224
+ inputBackgroundColor,
56225
+ inputBorderColor,
56226
+ inputSuffixColor,
56227
+ unreadNotificationBackgroundColor,
56228
+ unreadNotificationTextColor,
56229
+ typingIndicatorColor,
56230
+ dateSeparatorColor,
56231
+ dateSeparatorBackgroundColor,
56232
+ borderRadius,
56233
+ errorColor
56234
+ }
56235
+ } = mergedThemeRef.value;
56236
+ return {
56237
+ "--u-bezier": cubicBezierEaseInOut,
56238
+ "--u-color-primary": brandPrimary500,
56239
+ "--u-color-success": staticGreen,
56240
+ "--u-color-error": errorColor || staticRed,
56241
+ "--u-text-color-base": textPrimary,
56242
+ "--u-text-color-secondary": textSecondary,
56243
+ "--u-text-color-disabled": textTertiary,
56244
+ "--u-background-color": backgroundColor,
56245
+ "--u-border-color": borderColor,
56246
+ "--u-sidebar-item-subtitle-color": sidebarItemSubtitleColor,
56247
+ "--u-main-background-color": mainBackgroundColor,
56248
+ "--u-header-background-color": headerBackgroundColor,
56249
+ "--u-header-border-color": headerBorderColor,
56250
+ "--u-header-title-color": headerTitleColor,
56251
+ "--u-message-bubble-background-color-own": messageBubbleBackgroundColorOwn,
56252
+ "--u-message-bubble-background-color-other": messageBubbleBackgroundColorOther,
56253
+ "--u-message-bubble-text-color-own": messageBubbleTextColorOwn,
56254
+ "--u-message-bubble-text-color-other": messageBubbleTextColorOther,
56255
+ "--u-message-time-color": messageTimeColor,
56256
+ "--u-message-status-color": messageStatusColor,
56257
+ "--u-attachment-background-color-own": attachmentBackgroundColorOwn,
56258
+ "--u-attachment-background-color-other": attachmentBackgroundColorOther,
56259
+ "--u-footer-background-color": footerBackgroundColor,
56260
+ "--u-footer-border-color": footerBorderColor,
56261
+ "--u-input-background-color": inputBackgroundColor,
56262
+ "--u-input-border-color": inputBorderColor,
56263
+ "--u-input-suffix-color": inputSuffixColor,
56264
+ "--u-unread-notification-background-color": unreadNotificationBackgroundColor,
56265
+ "--u-unread-notification-text-color": unreadNotificationTextColor,
56266
+ "--u-typing-indicator-color": typingIndicatorColor,
56267
+ "--u-date-separator-color": dateSeparatorColor,
56268
+ "--u-date-separator-background-color": dateSeparatorBackgroundColor,
56269
+ "--u-border-radius": borderRadius
56270
+ };
56271
+ });
56272
+ const themeClassHandle = useThemeClass(
56273
+ "chat-main-area",
56274
+ vue.computed(() => ""),
56275
+ cssVarsRef,
56276
+ props
56277
+ );
55647
56278
  const messagesBodyRef = vue.ref();
55648
56279
  const inputRef = vue.ref();
55649
56280
  const inputValue = vue.ref("");
@@ -55724,6 +56355,11 @@
55724
56355
  },
55725
56356
  { deep: true, flush: "post" }
55726
56357
  );
56358
+ vue.onMounted(() => {
56359
+ void vue.nextTick(() => {
56360
+ scrollToBottom();
56361
+ });
56362
+ });
55727
56363
  vue.watch(unreadMessagesCount, (newCount, oldCount) => {
55728
56364
  if (selectedChatRef.value && newCount === 0 && oldCount > 0) {
55729
56365
  showNotificationManually.value = false;
@@ -55767,22 +56403,24 @@
55767
56403
  lastScrollTop.value = scrollTop;
55768
56404
  };
55769
56405
  function scrollToBottom() {
55770
- const el = messagesBodyRef.value;
55771
- if (!el)
56406
+ const element = messagesBodyRef.value;
56407
+ if (!element)
55772
56408
  return;
55773
- if ("$el" in el && el.$el instanceof HTMLElement) {
55774
- const scrollContainer = el.$el.querySelector(".u-scrollbar-content");
56409
+ if ("$el" in element && element.$el instanceof HTMLElement) {
56410
+ const scrollContainer = element.$el.querySelector(
56411
+ ".u-scrollbar-content"
56412
+ );
55775
56413
  if (scrollContainer) {
55776
56414
  scrollContainer.scrollTop = scrollContainer.scrollHeight;
55777
56415
  return;
55778
56416
  }
55779
56417
  }
55780
- if ("scrollTo" in el && typeof el.scrollTo === "function") {
55781
- el.scrollTo({ top: 999999, behavior: "auto" });
56418
+ if ("scrollTo" in element && typeof element.scrollTo === "function") {
56419
+ element.scrollTo({ top: 999999, behavior: "auto" });
55782
56420
  return;
55783
56421
  }
55784
- if ("scrollTop" in el && "scrollHeight" in el) {
55785
- el.scrollTop = el.scrollHeight;
56422
+ if ("scrollTop" in element && "scrollHeight" in element) {
56423
+ element.scrollTop = element.scrollHeight;
55786
56424
  }
55787
56425
  }
55788
56426
  const toKeyString = (value) => {
@@ -55965,6 +56603,7 @@
55965
56603
  messageAttachmentTitle: slots.messageAttachmentTitle,
55966
56604
  messageAttachmentSubtitle: slots.messageAttachmentSubtitle,
55967
56605
  messageStatus: slots.messageStatus,
56606
+ messageAfterContent: slots.messageAfterContent,
55968
56607
  bubbleActions: slots.bubbleActions
55969
56608
  }
55970
56609
  );
@@ -56159,7 +56798,7 @@
56159
56798
  class: `${mergedClsPrefixRef.value}-chat-main__input-container`
56160
56799
  },
56161
56800
  {
56162
- default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(_UUploadTrigger, { abstract: true }, {
56801
+ default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, props.showAttachButton && /* @__PURE__ */ vue.h(_UUploadTrigger, { abstract: true }, {
56163
56802
  default: ({
56164
56803
  handleClick
56165
56804
  }) => /* @__PURE__ */ vue.h(
@@ -56248,7 +56887,60 @@
56248
56887
  }
56249
56888
  ));
56250
56889
  };
56890
+ if (isStandalone) {
56891
+ vue.provide(chatInjectionKey, {
56892
+ mergedClsPrefixRef,
56893
+ mergedThemeRef,
56894
+ selectedChatRef,
56895
+ messagesRef,
56896
+ typingChatIdsRef,
56897
+ messagesLoadingRef,
56898
+ messagesLoadingCountRef,
56899
+ headerButtonPropsRef,
56900
+ headerIconPropsRef,
56901
+ headerShareButtonPropsRef,
56902
+ headerProfileButtonPropsRef,
56903
+ headerCloseButtonPropsRef,
56904
+ headerShareIconPropsRef,
56905
+ headerProfileIconPropsRef,
56906
+ messageUploadPropsRef,
56907
+ footerInputPropsRef,
56908
+ footerButtonPropsRef,
56909
+ footerUploadPropsRef,
56910
+ footerIconPropsRef,
56911
+ footerSuffixIconPropsRef,
56912
+ inputPlaceholderRef,
56913
+ retryTextRef,
56914
+ typingTextRef,
56915
+ closeButtonTextRef,
56916
+ shareButtonTooltipRef,
56917
+ profileButtonTooltipRef,
56918
+ unreadNotificationTextRef,
56919
+ notificationsShownSetRef,
56920
+ unreadCountsBeforeReadRef,
56921
+ markNotificationShown,
56922
+ handleMessageSend,
56923
+ handleMessageRetry,
56924
+ handleFooterInputChange,
56925
+ startEditingMessage: startEditingMessageRef,
56926
+ editMessageIdRef,
56927
+ bubbleActionsRef,
56928
+ onAttachmentUpload,
56929
+ onAttachmentDownload: vue.toRef(props, "onAttachmentDownload"),
56930
+ onChatClose,
56931
+ onChatShare,
56932
+ onUserProfile,
56933
+ onMessagesScrollToTop,
56934
+ onMessagesScrollToBottom
56935
+ });
56936
+ }
56251
56937
  return {
56938
+ mergedClsPrefix: mergedClsPrefixRef,
56939
+ mergedTheme: mergedThemeRef,
56940
+ cssVars: cssVarsRef,
56941
+ themeClass: themeClassHandle?.themeClass,
56942
+ onRender: themeClassHandle?.onRender,
56943
+ isStandalone,
56252
56944
  renderHeader,
56253
56945
  renderMessages,
56254
56946
  renderEditingBlock,
@@ -56263,18 +56955,41 @@
56263
56955
  };
56264
56956
  },
56265
56957
  render() {
56266
- const { mergedClsPrefixRef } = vue.inject(chatInjectionKey);
56267
- return /* @__PURE__ */ vue.h("div", { class: `${mergedClsPrefixRef.value}-chat-main` }, this.renderHeader(), /* @__PURE__ */ vue.h(
56268
- SafeTopScrollbar,
56958
+ this.onRender?.();
56959
+ const { mergedClsPrefix } = this;
56960
+ const mainArea = /* @__PURE__ */ vue.h(
56961
+ "div",
56269
56962
  {
56270
- ref: "messagesBodyRef",
56271
- class: `${mergedClsPrefixRef.value}-chat-main__body`,
56272
- onScroll: this.handleMessagesScroll
56963
+ class: [
56964
+ `${mergedClsPrefix}-chat-main`,
56965
+ this.isStandalone && `${mergedClsPrefix}-chat-main--standalone`
56966
+ ]
56273
56967
  },
56968
+ !this.isStandalone && this.renderHeader(),
56969
+ /* @__PURE__ */ vue.h(
56970
+ SafeTopScrollbar,
56971
+ {
56972
+ ref: "messagesBodyRef",
56973
+ class: `${mergedClsPrefix}-chat-main__body`,
56974
+ onScroll: this.handleMessagesScroll
56975
+ },
56976
+ {
56977
+ default: () => this.renderMessages()
56978
+ }
56979
+ ),
56980
+ this.renderFooter()
56981
+ );
56982
+ if (!this.isStandalone) {
56983
+ return mainArea;
56984
+ }
56985
+ return /* @__PURE__ */ vue.h(
56986
+ "div",
56274
56987
  {
56275
- default: () => this.renderMessages()
56276
- }
56277
- ), this.renderFooter());
56988
+ class: [`${mergedClsPrefix}-chat`, this.themeClass],
56989
+ style: this.cssVars
56990
+ },
56991
+ mainArea
56992
+ );
56278
56993
  }
56279
56994
  });
56280
56995
 
@@ -58314,7 +59029,7 @@
58314
59029
  chatItemSuffix: $slots.chatItemSuffix
58315
59030
  })
58316
59031
  ]), this.selectedChatId && resolveSlot($slots.default, () => [
58317
- /* @__PURE__ */ vue.h(ChatMainArea, { ref: "mainAreaRef" }, {
59032
+ /* @__PURE__ */ vue.h(_UChatMainArea, { ref: "mainAreaRef" }, {
58318
59033
  headerActions: $slots.headerActions,
58319
59034
  footerAttachIcon: $slots.footerAttachIcon,
58320
59035
  footerSuffixIcon: $slots.footerSuffixIcon
@@ -92690,7 +93405,7 @@
92690
93405
  const iconPackInputLight = {
92691
93406
  ...inputLight,
92692
93407
  self(vars) {
92693
- const originalInputSelf = self$1o(vars);
93408
+ const originalInputSelf = self$1p(vars);
92694
93409
  const {
92695
93410
  elementsDarkQuinary,
92696
93411
  elementsPrimary
@@ -115812,6 +116527,7 @@ ${icon.label}`.toLowerCase()
115812
116527
  const UCascader = wrap(_UCascader);
115813
116528
  const UChat = wrap(_UChat);
115814
116529
  const UChatListItems = wrap(_UChatListItems);
116530
+ const UChatMainArea = wrap(_UChatMainArea);
115815
116531
  const UChatMessages = wrap(_UChatMessages);
115816
116532
  const UCheckbox = wrap(_UCheckbox);
115817
116533
  const UCheckboxGroup = wrap(_UCheckboxGroup);
@@ -115899,6 +116615,7 @@ ${icon.label}`.toLowerCase()
115899
116615
  const UMarquee = wrap(_UMarquee);
115900
116616
  const UMention = wrap(_UMention);
115901
116617
  const UMenu = wrap(_UMenu);
116618
+ const UMessageBubble = wrap(_UMessageBubble);
115902
116619
  const UModal = wrap(_UModal);
115903
116620
  const UModalProvider = wrap(UModalProvider$1);
115904
116621
  const UModalFullscreen = wrap(ModalFullscreen);
@@ -115973,6 +116690,10 @@ ${icon.label}`.toLowerCase()
115973
116690
  ChatAttachmentStatus: ChatAttachmentStatus,
115974
116691
  ChatMarkType: ChatMarkType,
115975
116692
  ChatMessageType: ChatMessageType,
116693
+ MessageBubbleAttachmentStatus: MessageBubbleAttachmentStatus,
116694
+ MessageBubbleServiceVariant: MessageBubbleServiceVariant,
116695
+ MessageBubbleStatus: MessageBubbleStatus,
116696
+ MessageBubbleType: MessageBubbleType,
115976
116697
  MessageStatus: MessageStatus,
115977
116698
  NA: a,
115978
116699
  NP: p,
@@ -115999,6 +116720,7 @@ ${icon.label}`.toLowerCase()
115999
116720
  UCascader: UCascader,
116000
116721
  UChat: UChat,
116001
116722
  UChatListItems: UChatListItems,
116723
+ UChatMainArea: UChatMainArea,
116002
116724
  UChatMessages: UChatMessages,
116003
116725
  UCheckbox: UCheckbox,
116004
116726
  UCheckboxGroup: UCheckboxGroup,
@@ -116094,6 +116816,7 @@ ${icon.label}`.toLowerCase()
116094
116816
  UMarquee: UMarquee,
116095
116817
  UMention: UMention,
116096
116818
  UMenu: UMenu,
116819
+ UMessageBubble: UMessageBubble,
116097
116820
  UMessageProvider: UMessageProvider,
116098
116821
  UModal: UModal,
116099
116822
  UModalFullscreen: UModalFullscreen,
@@ -116280,6 +117003,7 @@ ${icon.label}`.toLowerCase()
116280
117003
  mappingCardLight: mappingCardLight,
116281
117004
  mentionProps: mentionProps,
116282
117005
  menuProps: menuProps,
117006
+ messageBubbleProps: messageBubbleProps,
116283
117007
  messageProviderProps: messageProviderProps,
116284
117008
  modalFullscreenProps: modalFullscreenProps,
116285
117009
  modalProps: modalProps,
@@ -116373,7 +117097,7 @@ ${icon.label}`.toLowerCase()
116373
117097
  });
116374
117098
  }
116375
117099
 
116376
- var version = "2.2.1";
117100
+ var version = "2.3.1";
116377
117101
 
116378
117102
  function create({
116379
117103
  componentPrefix = "U",
@@ -116485,6 +117209,7 @@ ${icon.label}`.toLowerCase()
116485
117209
  Marquee: marqueeLight,
116486
117210
  Menu: menuLight,
116487
117211
  Mention: mentionLight,
117212
+ MessageBubble: messageBubbleLight,
116488
117213
  Message: messageLight,
116489
117214
  Modal: modalLight,
116490
117215
  Notification: notificationLight,
@@ -117109,6 +117834,7 @@ ${icon.label}`.toLowerCase()
117109
117834
  Marquee: marqueeDark,
117110
117835
  Menu: menuDark,
117111
117836
  Mention: listDark,
117837
+ MessageBubble: messageBubbleDark,
117112
117838
  Message: messageDark,
117113
117839
  Modal: modalDark,
117114
117840
  Notification: notificationDark,
@@ -117179,6 +117905,10 @@ ${icon.label}`.toLowerCase()
117179
117905
  exports.ChatAttachmentStatus = ChatAttachmentStatus;
117180
117906
  exports.ChatMarkType = ChatMarkType;
117181
117907
  exports.ChatMessageType = ChatMessageType;
117908
+ exports.MessageBubbleAttachmentStatus = MessageBubbleAttachmentStatus;
117909
+ exports.MessageBubbleServiceVariant = MessageBubbleServiceVariant;
117910
+ exports.MessageBubbleStatus = MessageBubbleStatus;
117911
+ exports.MessageBubbleType = MessageBubbleType;
117182
117912
  exports.MessageStatus = MessageStatus;
117183
117913
  exports.NA = a;
117184
117914
  exports.NP = p;
@@ -117205,6 +117935,7 @@ ${icon.label}`.toLowerCase()
117205
117935
  exports.UCascader = UCascader;
117206
117936
  exports.UChat = UChat;
117207
117937
  exports.UChatListItems = UChatListItems;
117938
+ exports.UChatMainArea = UChatMainArea;
117208
117939
  exports.UChatMessages = UChatMessages;
117209
117940
  exports.UCheckbox = UCheckbox;
117210
117941
  exports.UCheckboxGroup = UCheckboxGroup;
@@ -117300,6 +118031,7 @@ ${icon.label}`.toLowerCase()
117300
118031
  exports.UMarquee = UMarquee;
117301
118032
  exports.UMention = UMention;
117302
118033
  exports.UMenu = UMenu;
118034
+ exports.UMessageBubble = UMessageBubble;
117303
118035
  exports.UMessageProvider = UMessageProvider;
117304
118036
  exports.UModal = UModal;
117305
118037
  exports.UModalFullscreen = UModalFullscreen;
@@ -117550,6 +118282,8 @@ ${icon.label}`.toLowerCase()
117550
118282
  exports.mentionProps = mentionProps;
117551
118283
  exports.menuDark = menuDark;
117552
118284
  exports.menuProps = menuProps;
118285
+ exports.messageBubbleDark = messageBubbleDark;
118286
+ exports.messageBubbleProps = messageBubbleProps;
117553
118287
  exports.messageDark = messageDark;
117554
118288
  exports.messageProviderProps = messageProviderProps;
117555
118289
  exports.modalDark = modalDark;