@abraca/nuxt 2.0.0 → 2.0.3

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 (135) hide show
  1. package/dist/module.d.mts +18 -7
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +21 -5
  4. package/dist/runtime/assets/aware-tokens.css +1 -0
  5. package/dist/runtime/components/AAccountSwitcherModal.d.vue.ts +16 -1
  6. package/dist/runtime/components/AAccountSwitcherModal.vue +33 -4
  7. package/dist/runtime/components/AAccountSwitcherModal.vue.d.ts +16 -1
  8. package/dist/runtime/components/AAuthLinkLanding.d.vue.ts +3 -0
  9. package/dist/runtime/components/AAuthLinkLanding.vue +85 -0
  10. package/dist/runtime/components/AAuthLinkLanding.vue.d.ts +3 -0
  11. package/dist/runtime/components/AClaimAccountModal.d.vue.ts +7 -1
  12. package/dist/runtime/components/AClaimAccountModal.vue +28 -13
  13. package/dist/runtime/components/AClaimAccountModal.vue.d.ts +7 -1
  14. package/dist/runtime/components/AEditor.vue +5 -0
  15. package/dist/runtime/components/AEmailVerifyConfirmModal.d.vue.ts +30 -0
  16. package/dist/runtime/components/AEmailVerifyConfirmModal.vue +100 -0
  17. package/dist/runtime/components/AEmailVerifyConfirmModal.vue.d.ts +30 -0
  18. package/dist/runtime/components/AEmailVerifyRequestCard.d.vue.ts +22 -0
  19. package/dist/runtime/components/AEmailVerifyRequestCard.vue +65 -0
  20. package/dist/runtime/components/AEmailVerifyRequestCard.vue.d.ts +22 -0
  21. package/dist/runtime/components/AMnemonicLoginModal.d.vue.ts +1 -1
  22. package/dist/runtime/components/AMnemonicLoginModal.vue.d.ts +1 -1
  23. package/dist/runtime/components/ANodePanel.vue +2 -0
  24. package/dist/runtime/components/ANotificationBell.d.vue.ts +2 -2
  25. package/dist/runtime/components/ANotificationBell.vue.d.ts +2 -2
  26. package/dist/runtime/components/APasswordChangeModal.d.vue.ts +28 -0
  27. package/dist/runtime/components/APasswordChangeModal.vue +178 -0
  28. package/dist/runtime/components/APasswordChangeModal.vue.d.ts +28 -0
  29. package/dist/runtime/components/APasswordLoginModal.d.vue.ts +42 -0
  30. package/dist/runtime/components/APasswordLoginModal.vue +177 -0
  31. package/dist/runtime/components/APasswordLoginModal.vue.d.ts +42 -0
  32. package/dist/runtime/components/APasswordRegisterModal.d.vue.ts +49 -0
  33. package/dist/runtime/components/APasswordRegisterModal.vue +262 -0
  34. package/dist/runtime/components/APasswordRegisterModal.vue.d.ts +49 -0
  35. package/dist/runtime/components/APasswordResetConfirmModal.d.vue.ts +31 -0
  36. package/dist/runtime/components/APasswordResetConfirmModal.vue +154 -0
  37. package/dist/runtime/components/APasswordResetConfirmModal.vue.d.ts +31 -0
  38. package/dist/runtime/components/APasswordResetRequestModal.d.vue.ts +35 -0
  39. package/dist/runtime/components/APasswordResetRequestModal.vue +113 -0
  40. package/dist/runtime/components/APasswordResetRequestModal.vue.d.ts +35 -0
  41. package/dist/runtime/components/ASetPasswordCard.d.vue.ts +26 -0
  42. package/dist/runtime/components/ASetPasswordCard.vue +139 -0
  43. package/dist/runtime/components/ASetPasswordCard.vue.d.ts +26 -0
  44. package/dist/runtime/components/ASubPageList.d.vue.ts +66 -0
  45. package/dist/runtime/components/ASubPageList.vue +147 -0
  46. package/dist/runtime/components/ASubPageList.vue.d.ts +66 -0
  47. package/dist/runtime/components/aware/AAccordion.d.vue.ts +2 -0
  48. package/dist/runtime/components/aware/AAccordion.vue +11 -1
  49. package/dist/runtime/components/aware/AAccordion.vue.d.ts +2 -0
  50. package/dist/runtime/components/aware/AButton.vue +3 -3
  51. package/dist/runtime/components/aware/ACollapsible.d.vue.ts +2 -0
  52. package/dist/runtime/components/aware/ACollapsible.vue +9 -1
  53. package/dist/runtime/components/aware/ACollapsible.vue.d.ts +2 -0
  54. package/dist/runtime/components/aware/AGlobalFocusLayer.vue +1 -1
  55. package/dist/runtime/components/aware/AHoverItem.vue +28 -3
  56. package/dist/runtime/components/aware/AMedia.d.vue.ts +1 -1
  57. package/dist/runtime/components/aware/AMedia.vue.d.ts +1 -1
  58. package/dist/runtime/components/aware/AModal.d.vue.ts +2 -0
  59. package/dist/runtime/components/aware/AModal.vue +9 -1
  60. package/dist/runtime/components/aware/AModal.vue.d.ts +2 -0
  61. package/dist/runtime/components/aware/APresenceBlobs.vue +1 -1
  62. package/dist/runtime/components/aware/APresenceCursors.vue +1 -1
  63. package/dist/runtime/components/aware/AScroll.d.vue.ts +2 -0
  64. package/dist/runtime/components/aware/AScroll.vue +13 -3
  65. package/dist/runtime/components/aware/AScroll.vue.d.ts +2 -0
  66. package/dist/runtime/components/aware/ASlideover.d.vue.ts +2 -0
  67. package/dist/runtime/components/aware/ASlideover.vue +9 -1
  68. package/dist/runtime/components/aware/ASlideover.vue.d.ts +2 -0
  69. package/dist/runtime/components/aware/ASlider.vue +1 -0
  70. package/dist/runtime/components/aware/ATabs.d.vue.ts +2 -0
  71. package/dist/runtime/components/aware/ATabs.vue +9 -1
  72. package/dist/runtime/components/aware/ATabs.vue.d.ts +2 -0
  73. package/dist/runtime/components/chat/ANodeChatPanel.vue +1 -0
  74. package/dist/runtime/components/editor/AEditorRedoButton.d.vue.ts +2 -2
  75. package/dist/runtime/components/editor/AEditorRedoButton.vue.d.ts +2 -2
  76. package/dist/runtime/components/editor/AEditorUndoButton.d.vue.ts +2 -2
  77. package/dist/runtime/components/editor/AEditorUndoButton.vue.d.ts +2 -2
  78. package/dist/runtime/components/renderers/calendar/ACalendarToolbar.d.vue.ts +4 -4
  79. package/dist/runtime/components/renderers/calendar/ACalendarToolbar.vue.d.ts +4 -4
  80. package/dist/runtime/components/renderers/media/MediaTransportBar.d.vue.ts +2 -2
  81. package/dist/runtime/components/renderers/media/MediaTransportBar.vue.d.ts +2 -2
  82. package/dist/runtime/components/shell/AUserProfilePopover.d.vue.ts +1 -1
  83. package/dist/runtime/components/shell/AUserProfilePopover.vue.d.ts +1 -1
  84. package/dist/runtime/composables/useAAField.js +7 -4
  85. package/dist/runtime/composables/useAAFocus.js +10 -5
  86. package/dist/runtime/composables/useAAFollowAnchor.js +68 -34
  87. package/dist/runtime/composables/useAAFollowPeer.d.ts +7 -4
  88. package/dist/runtime/composables/useAAFollowPeer.js +60 -11
  89. package/dist/runtime/composables/useAAViewport.d.ts +1 -1
  90. package/dist/runtime/composables/useAbracadabraAuth.d.ts +2 -0
  91. package/dist/runtime/composables/useAbracadabraAuth.js +2 -0
  92. package/dist/runtime/composables/useEditorSuggestions.js +2 -1
  93. package/dist/runtime/composables/useEmailVerification.d.ts +40 -26
  94. package/dist/runtime/composables/useEmailVerification.js +95 -43
  95. package/dist/runtime/composables/usePasswordAuth.d.ts +64 -0
  96. package/dist/runtime/composables/usePasswordAuth.js +126 -0
  97. package/dist/runtime/composables/useTiptapHistory.d.ts +2 -2
  98. package/dist/runtime/composables/useTiptapHistory.js +5 -5
  99. package/dist/runtime/extensions/svg-embed.d.ts +23 -0
  100. package/dist/runtime/extensions/svg-embed.js +33 -0
  101. package/dist/runtime/extensions/views/MetaFieldView.vue +23 -6
  102. package/dist/runtime/extensions/views/SvgEmbedView.d.vue.ts +4 -0
  103. package/dist/runtime/extensions/views/SvgEmbedView.vue +120 -0
  104. package/dist/runtime/extensions/views/SvgEmbedView.vue.d.ts +4 -0
  105. package/dist/runtime/plugin-abracadabra.client.js +58 -9
  106. package/dist/runtime/plugin-abracadabra.server.js +2 -0
  107. package/dist/runtime/plugins/core.plugin.js +8 -4
  108. package/dist/runtime/server/plugins/abracadabra-service.js +102 -13
  109. package/dist/runtime/types.d.ts +11 -0
  110. package/dist/runtime/utils/awareRingStyle.js +1 -1
  111. package/dist/runtime/utils/sanitizeSvg.d.ts +19 -0
  112. package/dist/runtime/utils/sanitizeSvg.js +87 -0
  113. package/package.json +7 -8
  114. package/dist/runtime/components/renderers/ASpatialRenderer.d.vue.ts +0 -19
  115. package/dist/runtime/components/renderers/ASpatialRenderer.vue +0 -459
  116. package/dist/runtime/components/renderers/ASpatialRenderer.vue.d.ts +0 -19
  117. package/dist/runtime/components/renderers/spatial/SpatialGround.d.vue.ts +0 -20
  118. package/dist/runtime/components/renderers/spatial/SpatialGround.vue +0 -26
  119. package/dist/runtime/components/renderers/spatial/SpatialGround.vue.d.ts +0 -20
  120. package/dist/runtime/components/renderers/spatial/SpatialObject.d.vue.ts +0 -17
  121. package/dist/runtime/components/renderers/spatial/SpatialObject.vue +0 -257
  122. package/dist/runtime/components/renderers/spatial/SpatialObject.vue.d.ts +0 -17
  123. package/dist/runtime/components/renderers/spatial/SpatialSceneBridge.d.vue.ts +0 -15
  124. package/dist/runtime/components/renderers/spatial/SpatialSceneBridge.vue +0 -18
  125. package/dist/runtime/components/renderers/spatial/SpatialSceneBridge.vue.d.ts +0 -15
  126. package/dist/runtime/components/renderers/spatial/SpatialTransformInputs.d.vue.ts +0 -16
  127. package/dist/runtime/components/renderers/spatial/SpatialTransformInputs.vue +0 -66
  128. package/dist/runtime/components/renderers/spatial/SpatialTransformInputs.vue.d.ts +0 -16
  129. package/dist/runtime/components/renderers/spatial/SpatialUserAvatar.d.vue.ts +0 -8
  130. package/dist/runtime/components/renderers/spatial/SpatialUserAvatar.vue +0 -53
  131. package/dist/runtime/components/renderers/spatial/SpatialUserAvatar.vue.d.ts +0 -8
  132. package/dist/runtime/composables/useSpatialCamera.d.ts +0 -16
  133. package/dist/runtime/composables/useSpatialCamera.js +0 -175
  134. package/dist/runtime/composables/useSpatialDrag.d.ts +0 -14
  135. package/dist/runtime/composables/useSpatialDrag.js +0 -137
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_9: string, __VLS_10: any, __VLS_27: string, __VLS_28: any;
@@ -13,6 +14,7 @@ type __VLS_Slots = {} & {
13
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
15
  awareness: boolean;
15
16
  live: boolean;
17
+ followOnly: boolean;
16
18
  total: boolean;
17
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -7,7 +7,7 @@ const props = defineProps({
7
7
  fieldKey: { type: String, required: true },
8
8
  max: { type: Number, required: false, default: 3 }
9
9
  });
10
- const { hoverers, focusers, pressers, isPressed, handlers } = useAAField(() => props.fieldKey);
10
+ const { hoverers, focusers, pressers, isPressed, localPress, handlers } = useAAField(() => props.fieldKey);
11
11
  const ringStyle = computed(() => awareRingStyle({
12
12
  hover: hoverers.value[0]?.user?.color,
13
13
  focus: focusers.value[0]?.user?.color,
@@ -31,7 +31,7 @@ const overlayPeers = computed(() => {
31
31
  return out;
32
32
  });
33
33
  const pulseKey = ref(0);
34
- watch(isPressed, (val, prev) => {
34
+ watch(localPress, (val, prev) => {
35
35
  if (val && !prev) pulseKey.value++;
36
36
  });
37
37
  const pulseColor = computed(
@@ -72,5 +72,5 @@ const pulseColor = computed(
72
72
  </template>
73
73
 
74
74
  <style scoped>
75
- .aa-host{border-radius:var(--ui-radius,.375rem);position:relative;transition:filter .12s ease,box-shadow .1s ease}.aa-host--inline{display:inline-flex}.aa-host--pressed{filter:brightness(.88)}.aa-press-pulse{animation:aa-press-pulse .26s ease-out forwards;border-radius:inherit;inset:0;pointer-events:none;position:absolute}@keyframes aa-press-pulse{0%{box-shadow:0 0 0 0 var(--aa-pulse-color);opacity:.45}to{box-shadow:0 0 0 12px var(--aa-pulse-color);opacity:0}}.aa-overlay{display:flex;pointer-events:none;position:absolute;right:0;top:-.625rem;z-index:10}.aa-overlay>*+*{margin-left:-.25rem}.aa-peer-enter-active,.aa-peer-leave-active{transition:opacity .15s ease}.aa-peer-enter-from,.aa-peer-leave-to{opacity:0}
75
+ .aa-host{border-radius:var(--ui-radius,.375rem);position:relative;transition:filter var(--aa-state-fade-filter),box-shadow var(--aa-state-fade-shadow)}.aa-host--inline{display:inline-flex}.aa-host--pressed{filter:brightness(.88)}.aa-press-pulse{animation:aa-press-pulse var(--aa-pulse-duration) var(--aa-pulse-easing) forwards;border-radius:inherit;inset:0;pointer-events:none;position:absolute}@keyframes aa-press-pulse{0%{box-shadow:0 0 0 0 var(--aa-pulse-color);opacity:var(--aa-pulse-opacity-start-button)}to{box-shadow:0 0 0 var(--aa-pulse-radius-button) var(--aa-pulse-color);opacity:0}}.aa-overlay{display:flex;pointer-events:none;position:absolute;right:0;top:-.625rem;z-index:10}.aa-overlay>*+*{margin-left:-.25rem}.aa-peer-enter-active,.aa-peer-leave-active{transition:opacity var(--aa-peer-fade-duration) var(--aa-peer-fade-easing)}.aa-peer-enter-from,.aa-peer-leave-to{opacity:0}
76
76
  </style>
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_10: string, __VLS_11: any, __VLS_22: string, __VLS_23: any;
@@ -13,6 +14,7 @@ type __VLS_Slots = {} & {
13
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
15
  awareness: boolean;
15
16
  live: boolean;
17
+ followOnly: boolean;
16
18
  total: boolean;
17
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,14 +1,17 @@
1
1
  <script setup>
2
2
  import { computed, ref, useAttrs, watch } from "vue";
3
3
  import { useAAUIState } from "../../composables/useAAUIState";
4
+ import { useAAFollowPeer } from "../../composables/useAAFollowPeer";
4
5
  defineOptions({ inheritAttrs: false });
5
6
  const props = defineProps({
6
7
  fieldKey: { type: String, required: true },
7
8
  awareness: { type: Boolean, required: false, default: true },
8
9
  live: { type: Boolean, required: false, default: false },
10
+ followOnly: { type: Boolean, required: false, default: false },
9
11
  total: { type: Boolean, required: false, default: false }
10
12
  });
11
- const enableLive = computed(() => props.live || props.total);
13
+ const { isFollowing } = useAAFollowPeer();
14
+ const enableLive = computed(() => props.live || props.total || props.followOnly && isFollowing.value);
12
15
  const attrs = useAttrs();
13
16
  const liveOpen = useAAUIState(() => `${props.fieldKey}:open`, { defaultValue: false });
14
17
  const hasExternalOpen = computed(() => "open" in attrs || "onUpdate:open" in attrs);
@@ -22,6 +25,11 @@ watch(local, (val) => {
22
25
  if (!enableLive.value) return;
23
26
  if (!!liveOpen.value !== val) liveOpen.value = val;
24
27
  });
28
+ watch(enableLive, (now, prev) => {
29
+ if (!now || prev) return;
30
+ const incoming = !!liveOpen.value;
31
+ if (local.value !== incoming) local.value = incoming;
32
+ });
25
33
  </script>
26
34
 
27
35
  <template>
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_10: string, __VLS_11: any, __VLS_22: string, __VLS_23: any;
@@ -13,6 +14,7 @@ type __VLS_Slots = {} & {
13
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
15
  awareness: boolean;
15
16
  live: boolean;
17
+ followOnly: boolean;
16
18
  total: boolean;
17
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -73,7 +73,7 @@ function nameFor(p) {
73
73
  }"
74
74
  />
75
75
  <span
76
- v-if="p.rects.length"
76
+ v-if="p.rects[0]"
77
77
  class="aa-global-focus-layer__flag"
78
78
  :style="{
79
79
  top: p.rects[0].top + 'px',
@@ -8,7 +8,7 @@ const props = defineProps({
8
8
  showFlag: { type: Boolean, required: false, default: true },
9
9
  tinted: { type: Boolean, required: false, default: true }
10
10
  });
11
- const { hoverers, focusers, pressers, isPressed, onMouseenter, onMouseleave, onMousedown, onMouseup } = useAAField(() => props.fieldKey);
11
+ const { hoverers, focusers, pressers, localPress, onMouseenter, onMouseleave, onMousedown, onMouseup } = useAAField(() => props.fieldKey);
12
12
  const wrapperRef = ref(null);
13
13
  const rowEl = ref(null);
14
14
  const ROW_SELECTOR = [
@@ -23,6 +23,20 @@ const ROW_SELECTOR = [
23
23
  ".aa-row-target"
24
24
  ].join(", ");
25
25
  let savedStyle = { background: "", boxShadow: "", position: "" };
26
+ let kbHighlighted = false;
27
+ let kbObserver = null;
28
+ function isKeyboardHighlighted(row) {
29
+ return row.hasAttribute("data-highlighted") || row.getAttribute("data-state") === "checked" || row.getAttribute("aria-selected") === "true";
30
+ }
31
+ function syncKeyboardHighlight() {
32
+ const row = rowEl.value;
33
+ if (!row) return;
34
+ const next = isKeyboardHighlighted(row);
35
+ if (next === kbHighlighted) return;
36
+ kbHighlighted = next;
37
+ if (next) onMouseenter();
38
+ else onMouseleave();
39
+ }
26
40
  function attachToRow() {
27
41
  const wrapper = wrapperRef.value;
28
42
  if (!wrapper) return;
@@ -39,6 +53,13 @@ function attachToRow() {
39
53
  row.addEventListener("mouseleave", onMouseleave);
40
54
  row.addEventListener("mousedown", onMousedown);
41
55
  row.addEventListener("mouseup", onMouseup);
56
+ kbObserver?.disconnect();
57
+ kbObserver = new MutationObserver(syncKeyboardHighlight);
58
+ kbObserver.observe(row, {
59
+ attributes: true,
60
+ attributeFilter: ["data-highlighted", "data-state", "aria-selected"]
61
+ });
62
+ syncKeyboardHighlight();
42
63
  }
43
64
  function detachFromRow() {
44
65
  const row = rowEl.value;
@@ -49,6 +70,10 @@ function detachFromRow() {
49
70
  row.removeEventListener("mouseup", onMouseup);
50
71
  row.style.backgroundColor = savedStyle.background;
51
72
  row.style.boxShadow = savedStyle.boxShadow;
73
+ if (kbHighlighted) onMouseleave();
74
+ kbHighlighted = false;
75
+ kbObserver?.disconnect();
76
+ kbObserver = null;
52
77
  rowEl.value = null;
53
78
  }
54
79
  onMounted(attachToRow);
@@ -90,7 +115,7 @@ const flagPeer = computed(
90
115
  () => pressers.value[0] ?? focusers.value[0] ?? hoverers.value[0]
91
116
  );
92
117
  const pulseKey = ref(0);
93
- watch(isPressed, (val, prev) => {
118
+ watch(localPress, (val, prev) => {
94
119
  if (val && !prev) pulseKey.value++;
95
120
  });
96
121
  const pulseColor = computed(() => pressers.value[0]?.user?.color ?? "currentColor");
@@ -120,5 +145,5 @@ const pulseColor = computed(() => pressers.value[0]?.user?.color ?? "currentColo
120
145
  </template>
121
146
 
122
147
  <style scoped>
123
- .aa-item{border-radius:inherit;display:contents;position:relative}.aa-item--inline{align-items:center;display:inline-flex}.aa-item__pulse{animation:aa-item-pulse .35s ease-out forwards;border-radius:inherit;inset:0;pointer-events:none;position:absolute}@keyframes aa-item-pulse{0%{box-shadow:0 0 0 0 var(--aa-pulse-color);opacity:.5}to{box-shadow:0 0 0 14px var(--aa-pulse-color);opacity:0}}.aa-item__flag{border-radius:.25rem .25rem .25rem 0;box-shadow:0 1px 2px rgba(0,0,0,.18);color:#fff;font-size:.55rem;font-weight:500;line-height:1;padding:.18rem .35rem;pointer-events:none;position:absolute;right:.25rem;top:-.55rem;white-space:nowrap;z-index:5}.aa-flag-enter-active,.aa-flag-leave-active{transition:opacity .12s ease,transform .12s ease}.aa-flag-enter-from,.aa-flag-leave-to{opacity:0;transform:translateY(2px)}
148
+ .aa-item{border-radius:inherit;display:contents;position:relative}.aa-item--inline{align-items:center;display:inline-flex}.aa-item__pulse{animation:aa-item-pulse var(--aa-pulse-duration) var(--aa-pulse-easing) forwards;border-radius:inherit;inset:0;pointer-events:none;position:absolute}@keyframes aa-item-pulse{0%{box-shadow:0 0 0 0 var(--aa-pulse-color);opacity:var(--aa-pulse-opacity-start-item)}to{box-shadow:0 0 0 var(--aa-pulse-radius-item) var(--aa-pulse-color);opacity:0}}.aa-item__flag{border-radius:.25rem .25rem .25rem 0;box-shadow:0 1px 2px rgba(0,0,0,.18);color:#fff;font-size:.55rem;font-weight:500;line-height:1;padding:.18rem .35rem;pointer-events:none;position:absolute;right:.25rem;top:-.55rem;white-space:nowrap;z-index:5}.aa-flag-enter-active,.aa-flag-leave-active{transition:opacity var(--aa-flag-fade-duration) var(--aa-flag-fade-easing),transform var(--aa-flag-fade-duration) var(--aa-flag-fade-easing)}.aa-flag-enter-from,.aa-flag-leave-to{opacity:0;transform:translateY(2px)}
124
149
  </style>
@@ -12,8 +12,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
12
12
  awareness: boolean;
13
13
  tag: "video" | "audio";
14
14
  live: boolean;
15
- controls: boolean;
16
15
  total: boolean;
16
+ controls: boolean;
17
17
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
18
  declare const _default: typeof __VLS_export;
19
19
  export default _default;
@@ -12,8 +12,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
12
12
  awareness: boolean;
13
13
  tag: "video" | "audio";
14
14
  live: boolean;
15
- controls: boolean;
16
15
  total: boolean;
16
+ controls: boolean;
17
17
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
18
  declare const _default: typeof __VLS_export;
19
19
  export default _default;
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_8: {}, __VLS_11: {}, __VLS_14: {}, __VLS_17: {}, __VLS_20: {}, __VLS_31: string, __VLS_32: any;
@@ -21,6 +22,7 @@ type __VLS_Slots = {} & {
21
22
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
22
23
  awareness: boolean;
23
24
  live: boolean;
25
+ followOnly: boolean;
24
26
  total: boolean;
25
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,15 +1,18 @@
1
1
  <script setup>
2
2
  import { computed, ref, useAttrs, watch } from "vue";
3
3
  import { useAAUIState, useAAUIStateAuthor } from "../../composables/useAAUIState";
4
+ import { useAAFollowPeer } from "../../composables/useAAFollowPeer";
4
5
  import { useAwareness } from "../../composables/useAwareness";
5
6
  defineOptions({ inheritAttrs: false });
6
7
  const props = defineProps({
7
8
  fieldKey: { type: String, required: true },
8
9
  awareness: { type: Boolean, required: false, default: true },
9
10
  live: { type: Boolean, required: false, default: false },
11
+ followOnly: { type: Boolean, required: false, default: false },
10
12
  total: { type: Boolean, required: false, default: false }
11
13
  });
12
- const enableLive = computed(() => props.live || props.total);
14
+ const { isFollowing } = useAAFollowPeer();
15
+ const enableLive = computed(() => props.live || props.total || props.followOnly && isFollowing.value);
13
16
  const attrs = useAttrs();
14
17
  const liveOpen = useAAUIState(() => `${props.fieldKey}:open`, { defaultValue: false });
15
18
  const author = useAAUIStateAuthor(() => `${props.fieldKey}:open`);
@@ -25,6 +28,11 @@ watch(local, (val) => {
25
28
  if (!enableLive.value) return;
26
29
  if (!!liveOpen.value !== val) liveOpen.value = val;
27
30
  });
31
+ watch(enableLive, (now, prev) => {
32
+ if (!now || prev) return;
33
+ const incoming = !!liveOpen.value;
34
+ if (local.value !== incoming) local.value = incoming;
35
+ });
28
36
  const openedByUser = computed(() => {
29
37
  if (!enableLive.value || !local.value || author.value == null) return null;
30
38
  const state = states.value.get(author.value);
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_8: {}, __VLS_11: {}, __VLS_14: {}, __VLS_17: {}, __VLS_20: {}, __VLS_31: string, __VLS_32: any;
@@ -21,6 +22,7 @@ type __VLS_Slots = {} & {
21
22
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
22
23
  awareness: boolean;
23
24
  live: boolean;
25
+ followOnly: boolean;
24
26
  total: boolean;
25
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -65,5 +65,5 @@ onBeforeUnmount(() => {
65
65
  </template>
66
66
 
67
67
  <style scoped>
68
- .aa-presence-blobs{inset:0;isolation:isolate;mix-blend-mode:screen;pointer-events:none;position:fixed;z-index:0}.aa-presence-blobs__blob{border-radius:999px;filter:blur(60px);height:360px;opacity:.35;pointer-events:none;position:fixed;transform:translate(-50%,-50%);transition:left .2s ease-out,top .2s ease-out;width:360px}@media (prefers-color-scheme:light){.aa-presence-blobs{mix-blend-mode:multiply}.aa-presence-blobs__blob{opacity:.22}}
68
+ .aa-presence-blobs{inset:0;isolation:isolate;mix-blend-mode:screen;pointer-events:none;position:fixed;z-index:0}.aa-presence-blobs__blob{border-radius:999px;filter:blur(60px);height:360px;opacity:.35;pointer-events:none;position:fixed;transform:translate(-50%,-50%);transition:left var(--aa-track-blob-duration) var(--aa-track-blob-easing),top var(--aa-track-blob-duration) var(--aa-track-blob-easing);width:360px}@media (prefers-color-scheme:light){.aa-presence-blobs{mix-blend-mode:multiply}.aa-presence-blobs__blob{opacity:.22}}
69
69
  </style>
@@ -43,5 +43,5 @@ function nameFor(p) {
43
43
  </template>
44
44
 
45
45
  <style scoped>
46
- .aa-cursors-host{height:100%;position:relative;width:100%}.aa-cursors-layer{inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:50}.aa-cursor{align-items:flex-start;display:flex;gap:.15rem;position:absolute;transform:translate(-2px,-2px);transition:top 60ms linear,left 60ms linear}.aa-cursor__label{border-radius:.25rem .25rem .25rem 0;box-shadow:0 1px 2px rgba(0,0,0,.18);color:#fff;font-size:.6875rem;font-weight:500;line-height:1;margin-left:-2px;margin-top:11px;padding:.2rem .4rem;white-space:nowrap}.aa-cursors-overflow{background:var(--ui-bg-elevated);border:1px solid var(--ui-border);border-radius:999px;bottom:.5rem;color:var(--ui-text-muted);font-size:.6875rem;padding:.15rem .45rem;position:absolute;right:.5rem}
46
+ .aa-cursors-host{height:100%;position:relative;width:100%}.aa-cursors-layer{inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:50}.aa-cursor{align-items:flex-start;display:flex;gap:.15rem;position:absolute;transform:translate(-2px,-2px);transition:top var(--aa-track-cursor-duration) var(--aa-track-cursor-easing),left var(--aa-track-cursor-duration) var(--aa-track-cursor-easing)}.aa-cursor__label{border-radius:.25rem .25rem .25rem 0;box-shadow:0 1px 2px rgba(0,0,0,.18);color:#fff;font-size:.6875rem;font-weight:500;line-height:1;margin-left:-2px;margin-top:11px;padding:.2rem .4rem;white-space:nowrap}.aa-cursors-overflow{background:var(--ui-bg-elevated);border:1px solid var(--ui-border);border-radius:999px;bottom:.5rem;color:var(--ui-text-muted);font-size:.6875rem;padding:.15rem .45rem;position:absolute;right:.5rem}
47
47
  </style>
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  peers?: boolean;
6
7
  total?: boolean;
7
8
  };
@@ -13,6 +14,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
13
14
  peers: boolean;
14
15
  awareness: boolean;
15
16
  live: boolean;
17
+ followOnly: boolean;
16
18
  total: boolean;
17
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -3,17 +3,20 @@ import { computed, onBeforeUnmount, onMounted, ref, useAttrs, watch } from "vue"
3
3
  import { useAAField } from "../../composables/useAAField";
4
4
  import { useAAUIState } from "../../composables/useAAUIState";
5
5
  import { useAAEphemeral } from "../../composables/useAAEphemeral";
6
+ import { useAAFollowPeer } from "../../composables/useAAFollowPeer";
6
7
  import { awareRingStyle } from "../../utils/awareRingStyle";
7
8
  defineOptions({ inheritAttrs: false });
8
9
  const props = defineProps({
9
10
  fieldKey: { type: String, required: true },
10
11
  awareness: { type: Boolean, required: false, default: true },
11
12
  live: { type: Boolean, required: false, default: false },
13
+ followOnly: { type: Boolean, required: false, default: false },
12
14
  peers: { type: Boolean, required: false, default: false },
13
15
  total: { type: Boolean, required: false, default: false }
14
16
  });
17
+ const { isFollowing } = useAAFollowPeer();
15
18
  const enableAwareness = computed(() => props.awareness || props.total);
16
- const enableLive = computed(() => props.live || props.total);
19
+ const enableLive = computed(() => props.live || props.total || props.followOnly && isFollowing.value);
17
20
  const enablePeers = computed(() => props.peers || props.total);
18
21
  const { hoverers, focusers, pressers, isPressed, hoverHandlers } = useAAField(() => props.fieldKey);
19
22
  const ringStyle = computed(
@@ -40,8 +43,7 @@ function flush() {
40
43
  function onScroll() {
41
44
  if (!raf) raf = requestAnimationFrame(flush);
42
45
  }
43
- watch(liveScroll, (val) => {
44
- if (!enableLive.value) return;
46
+ function applyLiveScroll(val) {
45
47
  const el = elRef.value;
46
48
  if (!el || !val) return;
47
49
  if (Math.abs(el.scrollTop - val.y) < 2 && Math.abs(el.scrollLeft - val.x) < 2) return;
@@ -50,6 +52,14 @@ watch(liveScroll, (val) => {
50
52
  queueMicrotask(() => {
51
53
  suppress = false;
52
54
  });
55
+ }
56
+ watch(liveScroll, (val) => {
57
+ if (!enableLive.value) return;
58
+ applyLiveScroll(val);
59
+ });
60
+ watch(enableLive, (now, prev) => {
61
+ if (!now || prev) return;
62
+ applyLiveScroll(liveScroll.value);
53
63
  });
54
64
  onMounted(() => {
55
65
  elRef.value?.addEventListener("scroll", onScroll, { passive: true });
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  peers?: boolean;
6
7
  total?: boolean;
7
8
  };
@@ -13,6 +14,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
13
14
  peers: boolean;
14
15
  awareness: boolean;
15
16
  live: boolean;
17
+ followOnly: boolean;
16
18
  total: boolean;
17
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_8: {}, __VLS_11: {}, __VLS_14: {}, __VLS_17: {}, __VLS_20: {}, __VLS_31: string, __VLS_32: any;
@@ -21,6 +22,7 @@ type __VLS_Slots = {} & {
21
22
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
22
23
  awareness: boolean;
23
24
  live: boolean;
25
+ followOnly: boolean;
24
26
  total: boolean;
25
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,15 +1,18 @@
1
1
  <script setup>
2
2
  import { computed, ref, useAttrs, watch } from "vue";
3
3
  import { useAAUIState, useAAUIStateAuthor } from "../../composables/useAAUIState";
4
+ import { useAAFollowPeer } from "../../composables/useAAFollowPeer";
4
5
  import { useAwareness } from "../../composables/useAwareness";
5
6
  defineOptions({ inheritAttrs: false });
6
7
  const props = defineProps({
7
8
  fieldKey: { type: String, required: true },
8
9
  awareness: { type: Boolean, required: false, default: true },
9
10
  live: { type: Boolean, required: false, default: false },
11
+ followOnly: { type: Boolean, required: false, default: false },
10
12
  total: { type: Boolean, required: false, default: false }
11
13
  });
12
- const enableLive = computed(() => props.live || props.total);
14
+ const { isFollowing } = useAAFollowPeer();
15
+ const enableLive = computed(() => props.live || props.total || props.followOnly && isFollowing.value);
13
16
  const attrs = useAttrs();
14
17
  const liveOpen = useAAUIState(() => `${props.fieldKey}:open`, { defaultValue: false });
15
18
  const author = useAAUIStateAuthor(() => `${props.fieldKey}:open`);
@@ -25,6 +28,11 @@ watch(local, (val) => {
25
28
  if (!enableLive.value) return;
26
29
  if (!!liveOpen.value !== val) liveOpen.value = val;
27
30
  });
31
+ watch(enableLive, (now, prev) => {
32
+ if (!now || prev) return;
33
+ const incoming = !!liveOpen.value;
34
+ if (local.value !== incoming) local.value = incoming;
35
+ });
28
36
  const openedByUser = computed(() => {
29
37
  if (!enableLive.value || !local.value || author.value == null) return null;
30
38
  const state = states.value.get(author.value);
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  total?: boolean;
6
7
  };
7
8
  declare var __VLS_8: {}, __VLS_11: {}, __VLS_14: {}, __VLS_17: {}, __VLS_20: {}, __VLS_31: string, __VLS_32: any;
@@ -21,6 +22,7 @@ type __VLS_Slots = {} & {
21
22
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
22
23
  awareness: boolean;
23
24
  live: boolean;
25
+ followOnly: boolean;
24
26
  total: boolean;
25
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -26,6 +26,7 @@ const range = computed(() => Math.max(1e-4, props.max - props.min));
26
26
  function publishThumb(val) {
27
27
  if (!enablePeers.value || val == null) return;
28
28
  const single = Array.isArray(val) ? val[0] : val;
29
+ if (single == null) return;
29
30
  const norm = (single - props.min) / range.value;
30
31
  setThumb(Math.max(0, Math.min(1, norm)));
31
32
  }
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  peers?: boolean;
6
7
  total?: boolean;
7
8
  };
@@ -15,6 +16,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
15
16
  peers: boolean;
16
17
  awareness: boolean;
17
18
  live: boolean;
19
+ followOnly: boolean;
18
20
  total: boolean;
19
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
22
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -3,6 +3,7 @@ import { computed, ref, useAttrs, watch } from "vue";
3
3
  import { useAAField } from "../../composables/useAAField";
4
4
  import { useAAUIState } from "../../composables/useAAUIState";
5
5
  import { useAAEphemeral } from "../../composables/useAAEphemeral";
6
+ import { useAAFollowPeer } from "../../composables/useAAFollowPeer";
6
7
  import AHoverItem from "./AHoverItem.vue";
7
8
  function tabId(item) {
8
9
  if (item == null) return "";
@@ -19,11 +20,13 @@ const props = defineProps({
19
20
  fieldKey: { type: String, required: true },
20
21
  awareness: { type: Boolean, required: false, default: true },
21
22
  live: { type: Boolean, required: false, default: false },
23
+ followOnly: { type: Boolean, required: false, default: false },
22
24
  peers: { type: Boolean, required: false, default: false },
23
25
  total: { type: Boolean, required: false, default: false }
24
26
  });
27
+ const { isFollowing } = useAAFollowPeer();
25
28
  const enableAwareness = computed(() => props.awareness || props.total);
26
- const enableLive = computed(() => props.live || props.total);
29
+ const enableLive = computed(() => props.live || props.total || props.followOnly && isFollowing.value);
27
30
  const enablePeers = computed(() => props.peers || props.total);
28
31
  const attrs = useAttrs();
29
32
  const { hoverers, focusers, hoverHandlers } = useAAField(() => props.fieldKey);
@@ -42,6 +45,11 @@ watch(local, (val) => {
42
45
  if (enableLive.value && (liveActive.value || "") !== val) liveActive.value = val;
43
46
  if (enablePeers.value) setLocal(val || null);
44
47
  });
48
+ watch(enableLive, (now, prev) => {
49
+ if (!now || prev) return;
50
+ const incoming = liveActive.value || "";
51
+ if (incoming && local.value !== incoming) local.value = incoming;
52
+ });
45
53
  const ringStyle = computed(() => {
46
54
  if (!enableAwareness.value) return void 0;
47
55
  const focusColor = focusers.value[0]?.user?.color;
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  fieldKey: string;
3
3
  awareness?: boolean;
4
4
  live?: boolean;
5
+ followOnly?: boolean;
5
6
  peers?: boolean;
6
7
  total?: boolean;
7
8
  };
@@ -15,6 +16,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
15
16
  peers: boolean;
16
17
  awareness: boolean;
17
18
  live: boolean;
19
+ followOnly: boolean;
18
20
  total: boolean;
19
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
22
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -20,6 +20,7 @@ const typingUsersAdapted = computed(
20
20
  () => (typingUsers.value || []).map((id) => ({
21
21
  userId: String(id),
22
22
  userName: String(id),
23
+ name: String(id),
23
24
  color: "#888"
24
25
  }))
25
26
  );
@@ -9,7 +9,7 @@
9
9
  import type { Editor } from '@tiptap/vue-3';
10
10
  type __VLS_Props = {
11
11
  editor: Editor | null | undefined;
12
- size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg';
12
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
13
  variant?: 'ghost' | 'soft' | 'outline' | 'solid' | 'subtle' | 'link';
14
14
  color?: 'neutral' | 'primary' | 'secondary' | 'error' | 'warning' | 'success' | 'info';
15
15
  icon?: string;
@@ -18,7 +18,7 @@ type __VLS_Props = {
18
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
19
  color: "neutral" | "primary" | "secondary" | "error" | "warning" | "success" | "info";
20
20
  icon: string;
21
- size: "2xs" | "xs" | "sm" | "md" | "lg";
21
+ size: "xs" | "sm" | "md" | "lg" | "xl";
22
22
  variant: "ghost" | "soft" | "outline" | "solid" | "subtle" | "link";
23
23
  tooltip: string | false;
24
24
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -9,7 +9,7 @@
9
9
  import type { Editor } from '@tiptap/vue-3';
10
10
  type __VLS_Props = {
11
11
  editor: Editor | null | undefined;
12
- size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg';
12
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
13
  variant?: 'ghost' | 'soft' | 'outline' | 'solid' | 'subtle' | 'link';
14
14
  color?: 'neutral' | 'primary' | 'secondary' | 'error' | 'warning' | 'success' | 'info';
15
15
  icon?: string;
@@ -18,7 +18,7 @@ type __VLS_Props = {
18
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
19
  color: "neutral" | "primary" | "secondary" | "error" | "warning" | "success" | "info";
20
20
  icon: string;
21
- size: "2xs" | "xs" | "sm" | "md" | "lg";
21
+ size: "xs" | "sm" | "md" | "lg" | "xl";
22
22
  variant: "ghost" | "soft" | "outline" | "solid" | "subtle" | "link";
23
23
  tooltip: string | false;
24
24
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -9,7 +9,7 @@
9
9
  import type { Editor } from '@tiptap/vue-3';
10
10
  type __VLS_Props = {
11
11
  editor: Editor | null | undefined;
12
- size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg';
12
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
13
  variant?: 'ghost' | 'soft' | 'outline' | 'solid' | 'subtle' | 'link';
14
14
  color?: 'neutral' | 'primary' | 'secondary' | 'error' | 'warning' | 'success' | 'info';
15
15
  icon?: string;
@@ -18,7 +18,7 @@ type __VLS_Props = {
18
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
19
  color: "neutral" | "primary" | "secondary" | "error" | "warning" | "success" | "info";
20
20
  icon: string;
21
- size: "2xs" | "xs" | "sm" | "md" | "lg";
21
+ size: "xs" | "sm" | "md" | "lg" | "xl";
22
22
  variant: "ghost" | "soft" | "outline" | "solid" | "subtle" | "link";
23
23
  tooltip: string | false;
24
24
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -9,7 +9,7 @@
9
9
  import type { Editor } from '@tiptap/vue-3';
10
10
  type __VLS_Props = {
11
11
  editor: Editor | null | undefined;
12
- size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg';
12
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
13
  variant?: 'ghost' | 'soft' | 'outline' | 'solid' | 'subtle' | 'link';
14
14
  color?: 'neutral' | 'primary' | 'secondary' | 'error' | 'warning' | 'success' | 'info';
15
15
  icon?: string;
@@ -18,7 +18,7 @@ type __VLS_Props = {
18
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
19
  color: "neutral" | "primary" | "secondary" | "error" | "warning" | "success" | "info";
20
20
  icon: string;
21
- size: "2xs" | "xs" | "sm" | "md" | "lg";
21
+ size: "xs" | "sm" | "md" | "lg" | "xl";
22
22
  variant: "ghost" | "soft" | "outline" | "solid" | "subtle" | "link";
23
23
  tooltip: string | false;
24
24
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -20,16 +20,16 @@ type __VLS_Props = {
20
20
  };
21
21
  };
22
22
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
- next: () => any;
24
- prev: () => any;
25
23
  "update:viewMode": (mode: CalendarViewMode) => any;
24
+ prev: () => any;
25
+ next: () => any;
26
26
  today: () => any;
27
27
  "add-event": () => any;
28
28
  "navigate-to-month": (year: number, month: number) => any;
29
29
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
- onNext?: (() => any) | undefined;
31
- onPrev?: (() => any) | undefined;
32
30
  "onUpdate:viewMode"?: ((mode: CalendarViewMode) => any) | undefined;
31
+ onPrev?: (() => any) | undefined;
32
+ onNext?: (() => any) | undefined;
33
33
  onToday?: (() => any) | undefined;
34
34
  "onAdd-event"?: (() => any) | undefined;
35
35
  "onNavigate-to-month"?: ((year: number, month: number) => any) | undefined;