@liveblocks/react-tiptap 2.16.0-toolbars5 → 2.16.1-ai
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LiveblocksExtension.js +137 -21
- package/dist/LiveblocksExtension.js.map +1 -1
- package/dist/LiveblocksExtension.mjs +135 -19
- package/dist/LiveblocksExtension.mjs.map +1 -1
- package/dist/ai/AiExtension.js +288 -0
- package/dist/ai/AiExtension.js.map +1 -0
- package/dist/ai/AiExtension.mjs +285 -0
- package/dist/ai/AiExtension.mjs.map +1 -0
- package/dist/ai/AiToolbar.js +540 -0
- package/dist/ai/AiToolbar.js.map +1 -0
- package/dist/ai/AiToolbar.mjs +537 -0
- package/dist/ai/AiToolbar.mjs.map +1 -0
- package/dist/comments/CommentsExtension.js +10 -15
- package/dist/comments/CommentsExtension.js.map +1 -1
- package/dist/comments/CommentsExtension.mjs +11 -16
- package/dist/comments/CommentsExtension.mjs.map +1 -1
- package/dist/comments/FloatingComposer.js +5 -3
- package/dist/comments/FloatingComposer.js.map +1 -1
- package/dist/comments/FloatingComposer.mjs +6 -4
- package/dist/comments/FloatingComposer.mjs.map +1 -1
- package/dist/index.d.mts +54 -14
- package/dist/index.d.ts +54 -14
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/toolbar/FloatingToolbar.js +7 -0
- package/dist/toolbar/FloatingToolbar.js.map +1 -1
- package/dist/toolbar/FloatingToolbar.mjs +7 -0
- package/dist/toolbar/FloatingToolbar.mjs.map +1 -1
- package/dist/toolbar/Toolbar.js +35 -1
- package/dist/toolbar/Toolbar.js.map +1 -1
- package/dist/toolbar/Toolbar.mjs +36 -2
- package/dist/toolbar/Toolbar.mjs.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils.js +33 -5
- package/dist/utils.js.map +1 -1
- package/dist/utils.mjs +29 -4
- package/dist/utils.mjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +7 -6
- package/src/styles/index.css +319 -3
- package/styles.css +1 -1
- package/styles.css.map +1 -1
package/dist/utils.mjs
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import { Fragment } from '@tiptap/pm/model';
|
|
2
|
+
import { TextSelection } from '@tiptap/pm/state';
|
|
3
|
+
import { ySyncPluginKey, getRelativeSelection, relativePositionToAbsolutePosition } from 'y-prosemirror';
|
|
2
4
|
import { LIVEBLOCKS_MENTION_TYPE } from './types.mjs';
|
|
3
5
|
|
|
6
|
+
const getRelativeSelectionFromState = (state) => {
|
|
7
|
+
const pluginState = ySyncPluginKey.getState(state);
|
|
8
|
+
if (!pluginState)
|
|
9
|
+
return null;
|
|
10
|
+
return getRelativeSelection(pluginState.binding, state);
|
|
11
|
+
};
|
|
12
|
+
const getRangeFromRelativeSelections = (pos, state) => {
|
|
13
|
+
const pluginState = ySyncPluginKey.getState(state);
|
|
14
|
+
if (!pluginState || !pluginState.binding)
|
|
15
|
+
return { from: 0, to: 0 };
|
|
16
|
+
const { doc, type, mapping } = pluginState.binding;
|
|
17
|
+
const anchor = relativePositionToAbsolutePosition(doc, type, pos.anchor, mapping) ?? 0;
|
|
18
|
+
const head = relativePositionToAbsolutePosition(doc, type, pos.head, mapping) ?? 0;
|
|
19
|
+
const from = anchor > head ? head : anchor;
|
|
20
|
+
const to = anchor > head ? anchor : head;
|
|
21
|
+
return { from, to };
|
|
22
|
+
};
|
|
4
23
|
const getRectFromCoords = (coords) => {
|
|
5
24
|
return {
|
|
6
25
|
...coords,
|
|
@@ -38,8 +57,14 @@ const mapFragment = (fragment, callback) => {
|
|
|
38
57
|
});
|
|
39
58
|
return Fragment.from(content);
|
|
40
59
|
};
|
|
41
|
-
function
|
|
42
|
-
const
|
|
60
|
+
function getTextSelectionFromRelativeSelection(relativeSelection, state) {
|
|
61
|
+
const range = getRangeFromRelativeSelections(relativeSelection, state);
|
|
62
|
+
const $start = state.doc.resolve(range.from);
|
|
63
|
+
const $end = state.doc.resolve(range.to);
|
|
64
|
+
return new TextSelection($start, $end);
|
|
65
|
+
}
|
|
66
|
+
function getDomRangeFromSelection(selection, editor) {
|
|
67
|
+
const { from, to } = typeof selection === "number" ? { from: selection, to: selection } : selection;
|
|
43
68
|
const fromPos = editor.view.domAtPos(from);
|
|
44
69
|
const endPos = editor.view.domAtPos(to);
|
|
45
70
|
const domRange = document.createRange();
|
|
@@ -47,12 +72,12 @@ function getDomRangeFromTextSelection(selection, editor) {
|
|
|
47
72
|
domRange.setEnd(endPos.node, endPos.offset);
|
|
48
73
|
return domRange;
|
|
49
74
|
}
|
|
50
|
-
function
|
|
75
|
+
function compareSelections(a, b) {
|
|
51
76
|
if (!a || !b) {
|
|
52
77
|
return false;
|
|
53
78
|
}
|
|
54
79
|
return a.eq(b);
|
|
55
80
|
}
|
|
56
81
|
|
|
57
|
-
export {
|
|
82
|
+
export { compareSelections, getDomRangeFromSelection, getMentionsFromNode, getRangeFromRelativeSelections, getRectFromCoords, getRelativeSelectionFromState, getTextSelectionFromRelativeSelection, mapFragment };
|
|
58
83
|
//# sourceMappingURL=utils.mjs.map
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":["import type { ClientRectObject } from \"@floating-ui/react-dom\";\nimport type { Editor, Range } from \"@tiptap/core\";\nimport type { Node as ProseMirrorNode } from \"@tiptap/pm/model\";\nimport { Fragment } from \"@tiptap/pm/model\";\nimport type { TextSelection } from \"@tiptap/pm/state\";\n\nimport { LIVEBLOCKS_MENTION_TYPE } from \"./types\";\n\nexport const getRectFromCoords = (coords: {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}): ClientRectObject => {\n return {\n ...coords,\n x: coords.left,\n y: coords.top,\n width: coords.right - coords.left,\n height: coords.bottom - coords.top,\n };\n};\n\nexport const getMentionsFromNode = (\n node: ProseMirrorNode,\n range: Range\n): { notificationId: string; userId: string }[] => {\n const result: { notificationId: string; userId: string }[] = [];\n node.nodesBetween(range.from, range.to, (child) => {\n if (child.type.name === LIVEBLOCKS_MENTION_TYPE) {\n const mention = child.attrs as { id?: string; notificationId?: string };\n if (mention.id && mention.notificationId) {\n result.push({\n notificationId: mention.notificationId,\n userId: mention.id,\n });\n }\n }\n });\n return result;\n};\n\n// How to modify data in transformPasted, inspired by: https://discuss.prosemirror.net/t/modify-specific-node-on-copy-and-paste-in-clipboard/4901/4\nexport const mapFragment = (\n fragment: Fragment,\n callback: (\n node: ProseMirrorNode\n ) => ProseMirrorNode | ProseMirrorNode[] | Fragment | null\n): Fragment => {\n const content: ProseMirrorNode[] = [];\n fragment.forEach((node) => {\n if (node.content.childCount > 0) {\n content.push(\n node.type.create(node.attrs, mapFragment(node.content, callback))\n );\n return;\n }\n content.push(callback(node) as ProseMirrorNode);\n });\n\n return Fragment.from(content);\n};\n\nexport function
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":["import type { ClientRectObject } from \"@floating-ui/react-dom\";\nimport type { Editor, Range } from \"@tiptap/core\";\nimport type { Node as ProseMirrorNode } from \"@tiptap/pm/model\";\nimport { Fragment } from \"@tiptap/pm/model\";\nimport type { EditorState, Selection } from \"@tiptap/pm/state\";\nimport { TextSelection } from \"@tiptap/pm/state\";\nimport {\n getRelativeSelection,\n relativePositionToAbsolutePosition,\n ySyncPluginKey,\n} from \"y-prosemirror\";\nimport type { RelativePosition } from \"yjs\";\n\nimport type { YSyncPluginState } from \"./types\";\nimport { LIVEBLOCKS_MENTION_TYPE } from \"./types\";\n\nexport const getRelativeSelectionFromState = (state: EditorState) => {\n const pluginState = ySyncPluginKey.getState(state) as YSyncPluginState;\n if (!pluginState) return null;\n return getRelativeSelection(pluginState.binding, state);\n};\n\nexport const getRangeFromRelativeSelections = (\n pos: { anchor: RelativePosition; head: RelativePosition },\n state: EditorState\n) => {\n const pluginState = ySyncPluginKey.getState(state) as YSyncPluginState;\n if (!pluginState || !pluginState.binding) return { from: 0, to: 0 };\n const { doc, type, mapping } = pluginState.binding;\n const anchor =\n relativePositionToAbsolutePosition(doc, type, pos.anchor, mapping) ?? 0;\n const head =\n relativePositionToAbsolutePosition(doc, type, pos.head, mapping) ?? 0;\n\n const from = anchor > head ? head : anchor;\n const to = anchor > head ? anchor : head;\n return { from, to };\n};\n\nexport const getRectFromCoords = (coords: {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}): ClientRectObject => {\n return {\n ...coords,\n x: coords.left,\n y: coords.top,\n width: coords.right - coords.left,\n height: coords.bottom - coords.top,\n };\n};\n\nexport const getMentionsFromNode = (\n node: ProseMirrorNode,\n range: Range\n): { notificationId: string; userId: string }[] => {\n const result: { notificationId: string; userId: string }[] = [];\n node.nodesBetween(range.from, range.to, (child) => {\n if (child.type.name === LIVEBLOCKS_MENTION_TYPE) {\n const mention = child.attrs as { id?: string; notificationId?: string };\n if (mention.id && mention.notificationId) {\n result.push({\n notificationId: mention.notificationId,\n userId: mention.id,\n });\n }\n }\n });\n return result;\n};\n\n// How to modify data in transformPasted, inspired by: https://discuss.prosemirror.net/t/modify-specific-node-on-copy-and-paste-in-clipboard/4901/4\nexport const mapFragment = (\n fragment: Fragment,\n callback: (\n node: ProseMirrorNode\n ) => ProseMirrorNode | ProseMirrorNode[] | Fragment | null\n): Fragment => {\n const content: ProseMirrorNode[] = [];\n fragment.forEach((node) => {\n if (node.content.childCount > 0) {\n content.push(\n node.type.create(node.attrs, mapFragment(node.content, callback))\n );\n return;\n }\n content.push(callback(node) as ProseMirrorNode);\n });\n\n return Fragment.from(content);\n};\n\nexport function getTextSelectionFromRelativeSelection(\n relativeSelection: { anchor: RelativePosition; head: RelativePosition },\n state: EditorState\n): TextSelection | null {\n const range = getRangeFromRelativeSelections(relativeSelection, state);\n const $start = state.doc.resolve(range.from);\n const $end = state.doc.resolve(range.to);\n return new TextSelection($start, $end);\n}\n\nexport function getDomRangeFromSelection(\n selection: { from: number; to: number } | number,\n editor: Editor\n) {\n const { from, to } =\n typeof selection === \"number\"\n ? { from: selection, to: selection }\n : selection;\n const fromPos = editor.view.domAtPos(from);\n const endPos = editor.view.domAtPos(to);\n\n const domRange = document.createRange();\n domRange.setStart(fromPos.node, fromPos.offset);\n domRange.setEnd(endPos.node, endPos.offset);\n\n return domRange;\n}\n\nexport function compareSelections(\n a: Selection | null | undefined,\n b: Selection | null | undefined\n) {\n if (!a || !b) {\n return false;\n }\n\n return a.eq(b);\n}\n"],"names":[],"mappings":"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"}
|
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const PKG_NAME = "@liveblocks/react-tiptap";
|
|
4
|
-
const PKG_VERSION = typeof "2.16.
|
|
4
|
+
const PKG_VERSION = typeof "2.16.1-ai" === "string" && "2.16.1-ai";
|
|
5
5
|
const PKG_FORMAT = typeof "cjs" === "string" && "cjs";
|
|
6
6
|
|
|
7
7
|
exports.PKG_FORMAT = PKG_FORMAT;
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,WAAA,KAAgB,QAAY,IAAA,YAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;;;"}
|
package/dist/version.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const PKG_NAME = "@liveblocks/react-tiptap";
|
|
2
|
-
const PKG_VERSION = typeof "2.16.
|
|
2
|
+
const PKG_VERSION = typeof "2.16.1-ai" === "string" && "2.16.1-ai";
|
|
3
3
|
const PKG_FORMAT = typeof "esm" === "string" && "esm";
|
|
4
4
|
|
|
5
5
|
export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
|
package/dist/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,WAAA,KAAgB,QAAY,IAAA,YAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liveblocks/react-tiptap",
|
|
3
|
-
"version": "2.16.
|
|
3
|
+
"version": "2.16.1-ai",
|
|
4
4
|
"description": "A tiptap react plugin to enable collaboration, comments, live cursors, and more.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -42,16 +42,17 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@floating-ui/react-dom": "^2.1.2",
|
|
45
|
-
"@liveblocks/client": "2.16.
|
|
46
|
-
"@liveblocks/core": "2.16.
|
|
47
|
-
"@liveblocks/react": "2.16.
|
|
48
|
-
"@liveblocks/react-ui": "2.16.
|
|
49
|
-
"@liveblocks/yjs": "2.16.
|
|
45
|
+
"@liveblocks/client": "2.16.1-ai",
|
|
46
|
+
"@liveblocks/core": "2.16.1-ai",
|
|
47
|
+
"@liveblocks/react": "2.16.1-ai",
|
|
48
|
+
"@liveblocks/react-ui": "2.16.1-ai",
|
|
49
|
+
"@liveblocks/yjs": "2.16.1-ai",
|
|
50
50
|
"@radix-ui/react-select": "^2.1.2",
|
|
51
51
|
"@radix-ui/react-toggle": "^1.1.0",
|
|
52
52
|
"@tiptap/core": "^2.7.2",
|
|
53
53
|
"@tiptap/react": "^2.7.2",
|
|
54
54
|
"@tiptap/suggestion": "^2.7.2",
|
|
55
|
+
"cmdk": "^1.0.4",
|
|
55
56
|
"y-prosemirror": "^1.2.12",
|
|
56
57
|
"yjs": "^13.6.18"
|
|
57
58
|
},
|
package/src/styles/index.css
CHANGED
|
@@ -132,9 +132,9 @@
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
:where(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
.lb-tiptap-thread-mark:not([data-orphan="true"])
|
|
136
|
+
.lb-tiptap-thread-mark-selected
|
|
137
|
+
) {
|
|
138
138
|
color: var(--lb-accent);
|
|
139
139
|
text-decoration-line: underline;
|
|
140
140
|
text-decoration-color: var(--lb-accent-moderate);
|
|
@@ -266,6 +266,282 @@
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
/*************************************
|
|
270
|
+
* AI Toolbar *
|
|
271
|
+
*************************************/
|
|
272
|
+
|
|
273
|
+
.lb-tiptap-ai-selection {
|
|
274
|
+
background: var(--lb-selection, rgb(0 0 255 / 20%));
|
|
275
|
+
pointer-events: none;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.lb-tiptap-ai-toolbar-portal {
|
|
279
|
+
inline-size: var(--lb-tiptap-editor-width);
|
|
280
|
+
outline: none;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.lb-tiptap-ai-toolbar-container {
|
|
284
|
+
--lb-tiptap-ai-toolbar-padding: calc(0.5 * var(--lb-spacing));
|
|
285
|
+
--lb-tiptap-ai-toolbar-height: calc(
|
|
286
|
+
$lb-button-size + 2 * var(--lb-tiptap-ai-toolbar-padding)
|
|
287
|
+
);
|
|
288
|
+
|
|
289
|
+
position: relative;
|
|
290
|
+
min-block-size: var(--lb-tiptap-ai-toolbar-height);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.lb-tiptap-ai-toolbar {
|
|
294
|
+
display: flex;
|
|
295
|
+
flex-direction: column;
|
|
296
|
+
color: var(--lb-foreground);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.lb-tiptap-ai-toolbar-output-container {
|
|
300
|
+
display: flex;
|
|
301
|
+
flex-direction: column-reverse;
|
|
302
|
+
border-block-end: 1px solid var(--lb-foreground-subtle);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.lb-tiptap-ai-toolbar-output {
|
|
306
|
+
&::before {
|
|
307
|
+
content: "\FEFF";
|
|
308
|
+
display: inline-block;
|
|
309
|
+
vertical-align: middle;
|
|
310
|
+
user-select: none;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
314
|
+
:where(.collaboration-cursor__label) {
|
|
315
|
+
display: flex;
|
|
316
|
+
gap: 0.1875em;
|
|
317
|
+
align-items: center;
|
|
318
|
+
|
|
319
|
+
:where(.lb-icon-container) {
|
|
320
|
+
margin-inline-start: -0.125em;
|
|
321
|
+
|
|
322
|
+
&,
|
|
323
|
+
& svg {
|
|
324
|
+
inline-size: 1em;
|
|
325
|
+
block-size: 1em;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.lb-tiptap-ai-toolbar-content {
|
|
332
|
+
display: grid;
|
|
333
|
+
grid-template-columns: auto 1fr auto;
|
|
334
|
+
inline-size: 100%;
|
|
335
|
+
min-inline-size: 0;
|
|
336
|
+
outline: none;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.lb-tiptap-ai-toolbar-output-container,
|
|
340
|
+
.lb-tiptap-ai-toolbar-content {
|
|
341
|
+
max-block-size: calc(6lh + 2 * var(--lb-tiptap-ai-toolbar-padding));
|
|
342
|
+
padding: var(--lb-tiptap-ai-toolbar-padding);
|
|
343
|
+
|
|
344
|
+
/* overflow-block: auto; doesn't work as expected */
|
|
345
|
+
/* stylelint-disable-next-line plugin/use-logical-properties-and-values */
|
|
346
|
+
overflow-y: auto;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.lb-tiptap-ai-toolbar-custom-prompt-container {
|
|
350
|
+
position: relative;
|
|
351
|
+
z-index: auto;
|
|
352
|
+
display: grid;
|
|
353
|
+
margin-block: calc(-1 * var(--lb-tiptap-ai-toolbar-padding));
|
|
354
|
+
line-height: $lb-button-size;
|
|
355
|
+
|
|
356
|
+
&::before {
|
|
357
|
+
/* The space is important when handling new lines */
|
|
358
|
+
content: attr(data-value) " ";
|
|
359
|
+
visibility: hidden;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.lb-tiptap-ai-toolbar-icon-container,
|
|
364
|
+
.lb-tiptap-ai-toolbar-actions {
|
|
365
|
+
display: flex;
|
|
366
|
+
flex: none;
|
|
367
|
+
block-size: $lb-button-size;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.lb-tiptap-ai-toolbar-icon-container {
|
|
371
|
+
position: sticky;
|
|
372
|
+
inset-block-start: 0;
|
|
373
|
+
align-items: center;
|
|
374
|
+
align-self: start;
|
|
375
|
+
color: var(--lb-foreground-moderate);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.lb-tiptap-ai-toolbar-actions {
|
|
379
|
+
position: sticky;
|
|
380
|
+
inset-block-end: 0;
|
|
381
|
+
gap: var(--lb-tiptap-ai-toolbar-padding);
|
|
382
|
+
align-self: end;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.lb-tiptap-ai-toolbar-custom-prompt {
|
|
386
|
+
all: unset;
|
|
387
|
+
background: transparent;
|
|
388
|
+
color: var(--lb-foreground);
|
|
389
|
+
outline: none;
|
|
390
|
+
resize: none;
|
|
391
|
+
|
|
392
|
+
&::placeholder {
|
|
393
|
+
color: var(--lb-foreground-moderate);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.lb-tiptap-ai-toolbar-custom-prompt,
|
|
398
|
+
.lb-tiptap-ai-toolbar-custom-prompt-container::before {
|
|
399
|
+
/* Overlap the textarea and its value to auto-size it */
|
|
400
|
+
grid-area: 1 / 1 / 2 / 2;
|
|
401
|
+
box-sizing: inherit;
|
|
402
|
+
inline-size: 100%;
|
|
403
|
+
min-inline-size: 0;
|
|
404
|
+
padding: var(--lb-tiptap-ai-toolbar-padding);
|
|
405
|
+
font: inherit;
|
|
406
|
+
letter-spacing: inherit;
|
|
407
|
+
white-space: pre-wrap;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.lb-tiptap-ai-toolbar-halo {
|
|
411
|
+
--lb-tiptap-ai-toolbar-halo-blur: 16px;
|
|
412
|
+
--lb-tiptap-ai-toolbar-halo-outset: 8px;
|
|
413
|
+
|
|
414
|
+
position: absolute;
|
|
415
|
+
inset: calc(-1 * var(--lb-tiptap-ai-toolbar-halo-outset));
|
|
416
|
+
z-index: -1;
|
|
417
|
+
overflow: hidden;
|
|
418
|
+
border-radius: calc(
|
|
419
|
+
var(--lb-radius) + var(--lb-tiptap-ai-toolbar-halo-outset)
|
|
420
|
+
);
|
|
421
|
+
filter: blur(var(--lb-tiptap-ai-toolbar-halo-blur));
|
|
422
|
+
pointer-events: none;
|
|
423
|
+
transition-duration: 1s;
|
|
424
|
+
transition-property: opacity;
|
|
425
|
+
|
|
426
|
+
&:where(:not([data-active])) {
|
|
427
|
+
opacity: 0.5;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
:is(
|
|
432
|
+
.lb-tiptap-ai-toolbar-halo-horizontal,
|
|
433
|
+
.lb-tiptap-ai-toolbar-halo-vertical
|
|
434
|
+
) {
|
|
435
|
+
position: absolute;
|
|
436
|
+
inset: 0;
|
|
437
|
+
|
|
438
|
+
&::before,
|
|
439
|
+
&::after {
|
|
440
|
+
content: "";
|
|
441
|
+
position: absolute;
|
|
442
|
+
inset: 0;
|
|
443
|
+
opacity: 0.25;
|
|
444
|
+
animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);
|
|
445
|
+
animation-iteration-count: infinite;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.lb-tiptap-ai-toolbar-halo-horizontal {
|
|
450
|
+
&::before {
|
|
451
|
+
inline-size: 200%;
|
|
452
|
+
block-size: 100%;
|
|
453
|
+
background: linear-gradient(
|
|
454
|
+
30deg,
|
|
455
|
+
transparent 20%,
|
|
456
|
+
var(--lb-accent) 50%,
|
|
457
|
+
transparent 80%
|
|
458
|
+
);
|
|
459
|
+
background-position: top left;
|
|
460
|
+
background-size: 50% 100%;
|
|
461
|
+
animation-name: lb-animation-ai-toolbar-halo-horizontal;
|
|
462
|
+
animation-duration: 8s;
|
|
463
|
+
animation-direction: alternate;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
&::after {
|
|
467
|
+
inset-inline-start: -50%;
|
|
468
|
+
inline-size: 400%;
|
|
469
|
+
block-size: 100%;
|
|
470
|
+
background: linear-gradient(
|
|
471
|
+
90deg,
|
|
472
|
+
transparent 20%,
|
|
473
|
+
var(--lb-accent) 50%,
|
|
474
|
+
transparent 80%
|
|
475
|
+
);
|
|
476
|
+
background-position: top left;
|
|
477
|
+
background-size: 800px 100%;
|
|
478
|
+
background-repeat: space;
|
|
479
|
+
animation-name: lb-animation-ai-toolbar-halo-horizontal;
|
|
480
|
+
animation-duration: 6s;
|
|
481
|
+
animation-delay: -2s;
|
|
482
|
+
animation-direction: alternate-reverse;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.lb-tiptap-ai-toolbar-halo-vertical {
|
|
487
|
+
opacity: 0;
|
|
488
|
+
|
|
489
|
+
&::before {
|
|
490
|
+
inset-block-start: -50%;
|
|
491
|
+
inline-size: 100%;
|
|
492
|
+
block-size: 400%;
|
|
493
|
+
background: linear-gradient(
|
|
494
|
+
1deg,
|
|
495
|
+
transparent 40%,
|
|
496
|
+
var(--lb-accent) 50%,
|
|
497
|
+
transparent 60%
|
|
498
|
+
);
|
|
499
|
+
background-position: top left;
|
|
500
|
+
background-size: 100% 600px;
|
|
501
|
+
background-repeat: round;
|
|
502
|
+
animation-name: lb-animation-ai-toolbar-halo-vertical;
|
|
503
|
+
animation-duration: 4s;
|
|
504
|
+
animation-delay: -2s;
|
|
505
|
+
animation-direction: alternate-reverse;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
&::after {
|
|
509
|
+
inset-block-start: -50%;
|
|
510
|
+
inline-size: 100%;
|
|
511
|
+
block-size: 400%;
|
|
512
|
+
background: linear-gradient(
|
|
513
|
+
-2deg,
|
|
514
|
+
transparent 40%,
|
|
515
|
+
var(--lb-accent) 50%,
|
|
516
|
+
transparent 60%
|
|
517
|
+
);
|
|
518
|
+
background-position: top left;
|
|
519
|
+
background-size: 100% 400px;
|
|
520
|
+
background-repeat: round;
|
|
521
|
+
animation-name: lb-animation-ai-toolbar-halo-vertical;
|
|
522
|
+
animation-duration: 3s;
|
|
523
|
+
animation-delay: -1s;
|
|
524
|
+
animation-direction: alternate;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.lb-tiptap-ai-toolbar-thinking {
|
|
529
|
+
display: flex;
|
|
530
|
+
flex: 1 0 auto;
|
|
531
|
+
align-items: center;
|
|
532
|
+
min-inline-size: 0;
|
|
533
|
+
padding-inline: var(--lb-tiptap-ai-toolbar-padding);
|
|
534
|
+
color: var(--lb-foreground-moderate);
|
|
535
|
+
cursor: wait;
|
|
536
|
+
user-select: none;
|
|
537
|
+
animation: lb-animation-shimmer 8s linear infinite;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.lb-tiptap-ai-toolbar-dropdown {
|
|
541
|
+
inline-size: min(250px, 100%);
|
|
542
|
+
margin-block-start: 8px;
|
|
543
|
+
}
|
|
544
|
+
|
|
269
545
|
/*************************************
|
|
270
546
|
* Collab Cursors *
|
|
271
547
|
*************************************/
|
|
@@ -300,3 +576,43 @@
|
|
|
300
576
|
pointer-events: none;
|
|
301
577
|
user-select: none;
|
|
302
578
|
}
|
|
579
|
+
|
|
580
|
+
/*************************************
|
|
581
|
+
* Animations *
|
|
582
|
+
*************************************/
|
|
583
|
+
|
|
584
|
+
@keyframes lb-animation-ai-toolbar-halo-horizontal {
|
|
585
|
+
from {
|
|
586
|
+
transform: translateX(-50%);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
to {
|
|
590
|
+
transform: translateX(0);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
@keyframes lb-animation-ai-toolbar-halo-vertical {
|
|
595
|
+
from {
|
|
596
|
+
transform: translateY(0);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
to {
|
|
600
|
+
transform: translateY(-50%);
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
/*************************************
|
|
605
|
+
* Ai Changes *
|
|
606
|
+
*************************************/
|
|
607
|
+
|
|
608
|
+
.lb-changed-removed {
|
|
609
|
+
color: rgb(255 255 255 / 13%);
|
|
610
|
+
text-decoration: line-through;
|
|
611
|
+
text-decoration-thickness: 1px;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
.lb-changed-added {
|
|
615
|
+
border-block-end: 2px solid rgb(35 131 226 / 15%);
|
|
616
|
+
background: rgb(35 131 226 / 5.4%);
|
|
617
|
+
color: rgb(79 167 255);
|
|
618
|
+
}
|
package/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.lb-tiptap-suggestions-list{margin:0;padding:0;list-style:none}.lb-tiptap-mention-suggestions{--lb-tiptap-mention-suggestion-avatar-size:1.25rem}.lb-tiptap-mention-suggestion{padding:calc(.375*var(--lb-spacing))calc(.625*var(--lb-spacing))}.lb-tiptap-mention-suggestion-avatar{inline-size:var(--lb-tiptap-mention-suggestion-avatar-size);margin-inline-start:calc(-.125*var(--lb-spacing));margin-inline-end:calc(.5*var(--lb-spacing));margin-block:calc(.125*var(--lb-spacing));background:var(--lb-foreground-subtle);color:var(--lb-foreground-moderate)}.lb-tiptap-suggestions{animation-duration:var(--lb-transition-duration);animation-timing-function:var(--lb-transition-easing);will-change:transform,opacity;padding:4px}.lb-tiptap-suggestions-list-item{padding:calc(.25*var(--lb-spacing))calc(.5*var(--lb-spacing));border-radius:calc(var(--lb-radius) - .75*4px);color:var(--lb-foreground-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;align-items:center;scroll-margin-block:4px;font-size:.875rem;transition-property:background,color,opacity;display:flex}.lb-tiptap-suggestions-list-item:where([data-highlighted]:not([data-highlighted=false]),[data-selected]:not([data-selected=false])){background:var(--lb-foreground-subtle);transition-duration:calc(var(--lb-transition-duration)/2)}.lb-tiptap-suggestions-list-item:where(:disabled,[data-disabled]:not([data-disabled=false])){opacity:.5;cursor:not-allowed}.lb-tiptap-suggestions:where([data-side=top]){animation-name:lb-animation-slide-up}.lb-tiptap-suggestions:where([data-side=bottom]){animation-name:lb-animation-slide-down}.lb-tiptap-suggestions:where([data-state=closed]){animation-name:lb-animation-disappear}.lb-tiptap-mention{border-radius:calc(.675*var(--lb-radius));background:var(--lb-accent-subtle);color:var(--lb-accent);-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:.1em .3em;font-weight:500}.lb-tiptap-mention::selection{background:0 0}.lb-tiptap-mention ::selection{background:0 0}.lb-mention-selected{background:var(--lb-accent);color:var(--lb-accent-foreground)}:where(.lb-tiptap-thread-mark:not([data-orphan=true])){background:var(--lb-accent-subtle);color:var(--lb-foreground);text-decoration-line:underline;-webkit-text-decoration-color:var(--lb-foreground-moderate);text-decoration-color:var(--lb-foreground-moderate);text-underline-offset:2px;outline:none;font-weight:500;transition-property:color,text-decoration-color}:where(.lb-tiptap-thread-mark:not([data-orphan=true]) .lb-tiptap-thread-mark-selected){color:var(--lb-accent);text-decoration-line:underline;-webkit-text-decoration-color:var(--lb-accent-moderate);text-decoration-color:var(--lb-accent-moderate);text-underline-offset:2px}.lb-tiptap-anchored-threads{--lb-tiptap-anchored-threads-gap:1.25rem;--lb-tiptap-anchored-threads-active-thread-offset:-.75rem}.lb-tiptap-anchored-threads-thread-container{transition-duration:calc(var(--lb-transition-duration)*2);transition-property:transform}.lb-tiptap-anchored-threads-thread{border-radius:var(--lb-radius);background:var(--lb-dynamic-background);transition-property:background,box-shadow;position:relative;overflow:hidden;box-shadow:0 0 0 1px #0000000a,0 2px 6px #0000000a,0 6px 20px #0000000f}.lb-tiptap-anchored-threads-thread:after{content:"";z-index:1;border-radius:inherit;box-shadow:var(--lb-inset-shadow);pointer-events:none;position:absolute;inset:0}.lb-tiptap-anchored-threads-thread:where([data-state=active]){box-shadow:0 0 0 1px #0000000a,0 2px 6px #00000014,0 8px 26px #0000001f}.lb-tiptap-floating{--lb-tiptap-floating-size:350px}.lb-tiptap-floating-threads-thread{inline-size:var(--lb-tiptap-floating-size)}.lb-tiptap-floating-threads-thread:where(:not(:last-of-type)){border-block-end:1px solid var(--lb-foreground-subtle)}.lb-tiptap-floating-composer{inline-size:var(--lb-tiptap-floating-size)}.lb-tiptap-active-selection{background:var(--lb-selection,#00f3);pointer-events:none}.lb-tiptap-toolbar{--lb-tiptap-toolbar-spacing:calc(.25*var(--lb-spacing));gap:var(--lb-tiptap-toolbar-spacing);padding:var(--lb-tiptap-toolbar-spacing);background:var(--lb-background);-ms-overflow-style:none;scrollbar-width:none;flex-direction:row;align-items:center;display:flex;position:relative;overflow-x:auto}.lb-tiptap-toolbar::-webkit-scrollbar{display:none}.lb-tiptap-toolbar>*{flex:none}.lb-tiptap-floating-toolbar{--lb-tiptap-toolbar-spacing:4px}.lb-tiptap-toolbar-separator{pointer-events:none;align-self:stretch;inline-size:1px;margin-inline:1px;position:relative}.lb-tiptap-toolbar-separator:before{content:"";background:var(--lb-foreground-subtle);position:absolute;inset:10% 0}.collaboration-cursor__caret{word-break:normal;pointer-events:none;border-inline:1px solid #0d0d0d;margin-inline:-1px;position:relative}.collaboration-cursor__label{border-radius:6px;color:#fff;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;border-end-start-radius:0;padding:2px 6px;font-size:14px;font-style:normal;font-weight:600;line-height:normal;position:absolute;inset-block-start:-1.4em;inset-inline-start:-1px}@media (prefers-reduced-motion){.lb-tiptap-suggestions:where(:not([data-state=closed])){animation-name:lb-animation-appear}.lb-tiptap-anchored-threads-thread-container{transition-duration:0s}}
|
|
1
|
+
.lb-tiptap-suggestions-list{margin:0;padding:0;list-style:none}.lb-tiptap-mention-suggestions{--lb-tiptap-mention-suggestion-avatar-size:1.25rem}.lb-tiptap-mention-suggestion{padding:calc(.375*var(--lb-spacing))calc(.625*var(--lb-spacing))}.lb-tiptap-mention-suggestion-avatar{inline-size:var(--lb-tiptap-mention-suggestion-avatar-size);margin-inline-start:calc(-.125*var(--lb-spacing));margin-inline-end:calc(.5*var(--lb-spacing));margin-block:calc(.125*var(--lb-spacing));background:var(--lb-foreground-subtle);color:var(--lb-foreground-moderate)}.lb-tiptap-suggestions{animation-duration:var(--lb-transition-duration);animation-timing-function:var(--lb-transition-easing);will-change:transform,opacity;padding:4px}.lb-tiptap-suggestions-list-item{padding:calc(.25*var(--lb-spacing))calc(.5*var(--lb-spacing));border-radius:calc(var(--lb-radius) - .75*4px);color:var(--lb-foreground-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;align-items:center;scroll-margin-block:4px;font-size:.875rem;transition-property:background,color,opacity;display:flex}.lb-tiptap-suggestions-list-item:where([data-highlighted]:not([data-highlighted=false]),[data-selected]:not([data-selected=false])){background:var(--lb-foreground-subtle);transition-duration:calc(var(--lb-transition-duration)/2)}.lb-tiptap-suggestions-list-item:where(:disabled,[data-disabled]:not([data-disabled=false])){opacity:.5;cursor:not-allowed}.lb-tiptap-suggestions:where([data-side=top]){animation-name:lb-animation-slide-up}.lb-tiptap-suggestions:where([data-side=bottom]){animation-name:lb-animation-slide-down}.lb-tiptap-suggestions:where([data-state=closed]){animation-name:lb-animation-disappear}.lb-tiptap-mention{border-radius:calc(.675*var(--lb-radius));background:var(--lb-accent-subtle);color:var(--lb-accent);-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:.1em .3em;font-weight:500}.lb-tiptap-mention::selection{background:0 0}.lb-tiptap-mention ::selection{background:0 0}.lb-mention-selected{background:var(--lb-accent);color:var(--lb-accent-foreground)}:where(.lb-tiptap-thread-mark:not([data-orphan=true])){background:var(--lb-accent-subtle);color:var(--lb-foreground);text-decoration-line:underline;-webkit-text-decoration-color:var(--lb-foreground-moderate);text-decoration-color:var(--lb-foreground-moderate);text-underline-offset:2px;outline:none;font-weight:500;transition-property:color,text-decoration-color}:where(.lb-tiptap-thread-mark:not([data-orphan=true]) .lb-tiptap-thread-mark-selected){color:var(--lb-accent);text-decoration-line:underline;-webkit-text-decoration-color:var(--lb-accent-moderate);text-decoration-color:var(--lb-accent-moderate);text-underline-offset:2px}.lb-tiptap-anchored-threads{--lb-tiptap-anchored-threads-gap:1.25rem;--lb-tiptap-anchored-threads-active-thread-offset:-.75rem}.lb-tiptap-anchored-threads-thread-container{transition-duration:calc(var(--lb-transition-duration)*2);transition-property:transform}.lb-tiptap-anchored-threads-thread{border-radius:var(--lb-radius);background:var(--lb-dynamic-background);transition-property:background,box-shadow;position:relative;overflow:hidden;box-shadow:0 0 0 1px #0000000a,0 2px 6px #0000000a,0 6px 20px #0000000f}.lb-tiptap-anchored-threads-thread:after{content:"";z-index:1;border-radius:inherit;box-shadow:var(--lb-inset-shadow);pointer-events:none;position:absolute;inset:0}.lb-tiptap-anchored-threads-thread:where([data-state=active]){box-shadow:0 0 0 1px #0000000a,0 2px 6px #00000014,0 8px 26px #0000001f}.lb-tiptap-floating{--lb-tiptap-floating-size:350px}.lb-tiptap-floating-threads-thread{inline-size:var(--lb-tiptap-floating-size)}.lb-tiptap-floating-threads-thread:where(:not(:last-of-type)){border-block-end:1px solid var(--lb-foreground-subtle)}.lb-tiptap-floating-composer{inline-size:var(--lb-tiptap-floating-size)}.lb-tiptap-active-selection{background:var(--lb-selection,#00f3);pointer-events:none}.lb-tiptap-toolbar{--lb-tiptap-toolbar-spacing:calc(.25*var(--lb-spacing));gap:var(--lb-tiptap-toolbar-spacing);padding:var(--lb-tiptap-toolbar-spacing);background:var(--lb-background);-ms-overflow-style:none;scrollbar-width:none;flex-direction:row;align-items:center;display:flex;position:relative;overflow-x:auto}.lb-tiptap-toolbar::-webkit-scrollbar{display:none}.lb-tiptap-toolbar>*{flex:none}.lb-tiptap-floating-toolbar{--lb-tiptap-toolbar-spacing:4px}.lb-tiptap-toolbar-separator{pointer-events:none;align-self:stretch;inline-size:1px;margin-inline:1px;position:relative}.lb-tiptap-toolbar-separator:before{content:"";background:var(--lb-foreground-subtle);position:absolute;inset:10% 0}.lb-tiptap-ai-selection{background:var(--lb-selection,#00f3);pointer-events:none}.lb-tiptap-ai-toolbar-portal{inline-size:var(--lb-tiptap-editor-width);outline:none}.lb-tiptap-ai-toolbar-container{--lb-tiptap-ai-toolbar-padding:calc(.5*var(--lb-spacing));--lb-tiptap-ai-toolbar-height:calc(calc(2*.25*var(--lb-spacing) + var(--lb-icon-size)) + 2*var(--lb-tiptap-ai-toolbar-padding));min-block-size:var(--lb-tiptap-ai-toolbar-height);position:relative}.lb-tiptap-ai-toolbar{color:var(--lb-foreground);flex-direction:column;display:flex}.lb-tiptap-ai-toolbar-output-container{border-block-end:1px solid var(--lb-foreground-subtle);flex-direction:column-reverse;display:flex}.lb-tiptap-ai-toolbar-output:before{content:"";vertical-align:middle;-webkit-user-select:none;user-select:none;display:inline-block}.lb-tiptap-ai-toolbar-output :where(.collaboration-cursor__label){align-items:center;gap:.1875em;display:flex}.lb-tiptap-ai-toolbar-output :where(.collaboration-cursor__label) :where(.lb-icon-container){margin-inline-start:-.125em}.lb-tiptap-ai-toolbar-output :where(.collaboration-cursor__label) :where(.lb-icon-container),.lb-tiptap-ai-toolbar-output :where(.collaboration-cursor__label) :where(.lb-icon-container) svg{block-size:1em;inline-size:1em}.lb-tiptap-ai-toolbar-content{outline:none;grid-template-columns:auto 1fr auto;inline-size:100%;min-inline-size:0;display:grid}.lb-tiptap-ai-toolbar-output-container,.lb-tiptap-ai-toolbar-content{max-block-size:calc(6lh + 2*var(--lb-tiptap-ai-toolbar-padding));padding:var(--lb-tiptap-ai-toolbar-padding);overflow-y:auto}.lb-tiptap-ai-toolbar-custom-prompt-container{z-index:auto;margin-block:calc(-1*var(--lb-tiptap-ai-toolbar-padding));line-height:calc(2*.25*var(--lb-spacing) + var(--lb-icon-size));display:grid;position:relative}.lb-tiptap-ai-toolbar-custom-prompt-container:before{content:attr(data-value)" ";visibility:hidden}.lb-tiptap-ai-toolbar-icon-container,.lb-tiptap-ai-toolbar-actions{block-size:calc(2*.25*var(--lb-spacing) + var(--lb-icon-size));flex:none;display:flex}.lb-tiptap-ai-toolbar-icon-container{color:var(--lb-foreground-moderate);align-self:start;align-items:center;position:sticky;inset-block-start:0}.lb-tiptap-ai-toolbar-actions{gap:var(--lb-tiptap-ai-toolbar-padding);align-self:end;position:sticky;inset-block-end:0}.lb-tiptap-ai-toolbar-custom-prompt{all:unset;color:var(--lb-foreground);resize:none;background:0 0;outline:none}.lb-tiptap-ai-toolbar-custom-prompt::placeholder{color:var(--lb-foreground-moderate)}.lb-tiptap-ai-toolbar-custom-prompt,.lb-tiptap-ai-toolbar-custom-prompt-container:before{box-sizing:inherit;padding:var(--lb-tiptap-ai-toolbar-padding);font:inherit;letter-spacing:inherit;white-space:pre-wrap;grid-area:1/1/2/2;inline-size:100%;min-inline-size:0}.lb-tiptap-ai-toolbar-halo{--lb-tiptap-ai-toolbar-halo-blur:16px;--lb-tiptap-ai-toolbar-halo-outset:8px;inset:calc(-1*var(--lb-tiptap-ai-toolbar-halo-outset));z-index:-1;border-radius:calc(var(--lb-radius) + var(--lb-tiptap-ai-toolbar-halo-outset));filter:blur(var(--lb-tiptap-ai-toolbar-halo-blur));pointer-events:none;transition-property:opacity;transition-duration:1s;position:absolute;overflow:hidden}.lb-tiptap-ai-toolbar-halo:where(:not([data-active])){opacity:.5}:is(.lb-tiptap-ai-toolbar-halo-horizontal,.lb-tiptap-ai-toolbar-halo-vertical){position:absolute;inset:0}:is(.lb-tiptap-ai-toolbar-halo-horizontal,.lb-tiptap-ai-toolbar-halo-vertical):before,:is(.lb-tiptap-ai-toolbar-halo-horizontal,.lb-tiptap-ai-toolbar-halo-vertical):after{content:"";opacity:.25;animation-timing-function:cubic-bezier(.455,.03,.515,.955);animation-iteration-count:infinite;position:absolute;inset:0}.lb-tiptap-ai-toolbar-halo-horizontal:before{background:linear-gradient(30deg,transparent 20%,var(--lb-accent)50%,transparent 80%);background-position:0 0;background-size:50% 100%;block-size:100%;inline-size:200%;animation-name:lb-animation-ai-toolbar-halo-horizontal;animation-duration:8s;animation-direction:alternate}.lb-tiptap-ai-toolbar-halo-horizontal:after{background:linear-gradient(90deg,transparent 20%,var(--lb-accent)50%,transparent 80%);background-position:0 0;background-repeat:space;background-size:800px 100%;block-size:100%;inline-size:400%;animation-name:lb-animation-ai-toolbar-halo-horizontal;animation-duration:6s;animation-direction:alternate-reverse;animation-delay:-2s;inset-inline-start:-50%}.lb-tiptap-ai-toolbar-halo-vertical{opacity:0}.lb-tiptap-ai-toolbar-halo-vertical:before{background:linear-gradient(1deg,transparent 40%,var(--lb-accent)50%,transparent 60%);background-position:0 0;background-repeat:round;background-size:100% 600px;block-size:400%;inline-size:100%;animation-name:lb-animation-ai-toolbar-halo-vertical;animation-duration:4s;animation-direction:alternate-reverse;animation-delay:-2s;inset-block-start:-50%}.lb-tiptap-ai-toolbar-halo-vertical:after{background:linear-gradient(-2deg,transparent 40%,var(--lb-accent)50%,transparent 60%);background-position:0 0;background-repeat:round;background-size:100% 400px;block-size:400%;inline-size:100%;animation-name:lb-animation-ai-toolbar-halo-vertical;animation-duration:3s;animation-direction:alternate;animation-delay:-1s;inset-block-start:-50%}.lb-tiptap-ai-toolbar-thinking{padding-inline:var(--lb-tiptap-ai-toolbar-padding);color:var(--lb-foreground-moderate);cursor:wait;-webkit-user-select:none;user-select:none;flex:1 0 auto;align-items:center;min-inline-size:0;animation:8s linear infinite lb-animation-shimmer;display:flex}.lb-tiptap-ai-toolbar-dropdown{inline-size:min(250px,100%);margin-block-start:8px}.collaboration-cursor__caret{word-break:normal;pointer-events:none;border-inline:1px solid #0d0d0d;margin-inline:-1px;position:relative}.collaboration-cursor__label{border-radius:6px;color:#fff;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;border-end-start-radius:0;padding:2px 6px;font-size:14px;font-style:normal;font-weight:600;line-height:normal;position:absolute;inset-block-start:-1.4em;inset-inline-start:-1px}@keyframes lb-animation-ai-toolbar-halo-horizontal{0%{transform:translate(-50%)}to{transform:translate(0)}}@keyframes lb-animation-ai-toolbar-halo-vertical{0%{transform:translateY(0)}to{transform:translateY(-50%)}}.lb-changed-removed{color:#ffffff21;text-decoration:line-through;text-decoration-thickness:1px}.lb-changed-added{color:#4fa7ff;background:#2383e20e;border-block-end:2px solid #2383e226}@media (prefers-reduced-motion){.lb-tiptap-suggestions:where(:not([data-state=closed])){animation-name:lb-animation-appear}.lb-tiptap-anchored-threads-thread-container{transition-duration:0s}}
|
package/styles.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/styles/src/styles/index.css","src/styles/src/styles/utils.css"],"names":[],"mappings":"AAOA,4BAAA,QAAA,CAAA,SAAA,CAAA,eAAA,CAUA,+BAAA,kDAAA,CAIA,8BAAA,gEAAA,CAIA,qCAAA,2DAAA,CAAA,iDAAA,CAAA,4CAAA,CAAA,yCAAA,CAAA,sCAAA,CAAA,mCAAA,CAaA,uBAAA,gDAAA,CAAA,qDAAA,CAAA,6BAAA,CAAA,WAAA,CAOA,iCAAA,6DAAA,CAAA,8CAAA,CAAA,oCAAA,CAAA,cAAA,CAAA,wBAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,kBAAA,CAAA,uBAAA,CAAA,iBAAA,CAAA,4CAAA,CAAA,YAAA,CAeE,oIAAA,sCAAA,CAAA,yDAAA,CAQA,6FAAA,UAAA,CAAA,kBAAA,CAWA,8CAAA,oCAAA,CAIA,iDAAA,sCAAA,CAIA,kDAAA,qCAAA,CAeF,mBAAA,yCAAA,CAAA,kCAAA,CAAA,sBAAA,CAAA,kCAAA,CAAA,0BAAA,CAAA,iBAAA,CAAA,eAAA,CCrGE,8BAAA,cAAA,CAAA,+BAAA,cAAA,CDgHF,qBAAA,2BAAA,CAAA,iCAAA,CASA,uDAAA,kCAAA,CAAA,0BAAA,CAAA,8BAAA,CAAA,2DAAA,CAAA,mDAAA,CAAA,yBAAA,CAAA,YAAA,CAAA,eAAA,CAAA,+CAAA,CAWA,uFAAA,sBAAA,CAAA,8BAAA,CAAA,uDAAA,CAAA,+CAAA,CAAA,yBAAA,CAcA,4BAAA,wCAAA,CAAA,yDAAA,CAKA,6CAAA,yDAAA,CAAA,6BAAA,CAWA,mCAAA,8BAAA,CAAA,uCAAA,CAAA,yCAAA,CAAA,iBAAA,CAAA,eAAA,CAAA,uEAAA,CAQE,yCAAA,UAAA,CAAA,SAAA,CAAA,qBAAA,CAAA,iCAAA,CAAA,mBAAA,CAAA,iBAAA,CAAA,OAAA,CAUA,8DAAA,uEAAA,CASF,oBAAA,+BAAA,CAQA,mCAAA,0CAAA,CAGE,8DAAA,sDAAA,CASF,6BAAA,0CAAA,CAQA,4BAAA,oCAAA,CAAA,mBAAA,CASA,mBAAA,uDAAA,CAAA,oCAAA,CAAA,wCAAA,CAAA,+BAAA,CAAA,uBAAA,CAAA,oBAAA,CAAA,kBAAA,CAAA,kBAAA,CAAA,YAAA,CAAA,iBAAA,CAAA,eAAA,CCtNE,sCAAA,YAAA,CDuOA,qBAAA,SAAA,CAKF,4BAAA,+BAAA,CAIA,6BAAA,mBAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,iBAAA,CAAA,iBAAA,CAOE,oCAAA,UAAA,CAAA,sCAAA,CAAA,iBAAA,CAAA,WAAA,CAcF,6BAAA,iBAAA,CAAA,mBAAA,CAAA,+BAAA,CAAA,kBAAA,CAAA,iBAAA,CAYA,6BAAA,iBAAA,CAAA,UAAA,CAAA,kBAAA,CAAA,mBAAA,CAAA,wBAAA,CAAA,gBAAA,CAAA,yBAAA,CAAA,eAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,eAAA,CAAA,kBAAA,CAAA,iBAAA,CAAA,wBAAA,CAAA,uBAAA,CAlMA,gCACE,wDAAA,kCAAA,CAiEA,6CAAA,sBAAA,CAAA","file":"styles.css","sourcesContent":["@import \"./utils\";\n@import \"./constants\";\n\n/*************************************\n * Suggestions *\n *************************************/\n\n.lb-tiptap-suggestions-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n/*************************************\n * Mention suggestions *\n *************************************/\n\n.lb-tiptap-mention-suggestions {\n --lb-tiptap-mention-suggestion-avatar-size: 1.25rem;\n}\n\n.lb-tiptap-mention-suggestion {\n padding: calc(0.375 * var(--lb-spacing)) calc(0.625 * var(--lb-spacing));\n}\n\n.lb-tiptap-mention-suggestion-avatar {\n inline-size: var(--lb-tiptap-mention-suggestion-avatar-size);\n margin-inline-start: calc(-0.125 * var(--lb-spacing));\n margin-inline-end: calc(0.5 * var(--lb-spacing));\n margin-block: calc(0.125 * var(--lb-spacing));\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-moderate);\n}\n\n/*************************************\n * Elevation lists *\n *************************************/\n\n.lb-tiptap-suggestions {\n padding: $lb-elevation-padding;\n animation-duration: var(--lb-transition-duration);\n animation-timing-function: var(--lb-transition-easing);\n will-change: transform, opacity;\n}\n\n.lb-tiptap-suggestions-list-item {\n display: flex;\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing)) calc(0.5 * var(--lb-spacing));\n border-radius: calc(var(--lb-radius) - 0.75 * $lb-elevation-padding);\n color: var(--lb-foreground-secondary);\n outline: none;\n font-size: 0.875rem;\n cursor: pointer;\n user-select: none;\n transition-property: background, color, opacity;\n scroll-margin-block: $lb-elevation-padding;\n}\n\n:is(.lb-tiptap-suggestions-list-item) {\n &:where(\n [data-highlighted]:not([data-highlighted=\"false\"]),\n [data-selected]:not([data-selected=\"false\"])\n ) {\n background: var(--lb-foreground-subtle);\n transition-duration: calc(var(--lb-transition-duration) / 2);\n }\n\n &:where(:disabled, [data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n/*************************************\n * Floating animations *\n *************************************/\n\n:is(.lb-tiptap-suggestions) {\n &:where([data-side=\"top\"]) {\n animation-name: lb-animation-slide-up;\n }\n\n &:where([data-side=\"bottom\"]) {\n animation-name: lb-animation-slide-down;\n }\n\n &:where([data-state=\"closed\"]) {\n animation-name: lb-animation-disappear;\n }\n}\n\n@media (prefers-reduced-motion) {\n .lb-tiptap-suggestions:where(:not([data-state=\"closed\"])) {\n animation-name: lb-animation-appear;\n }\n}\n\n/*************************************\n * Mention *\n *************************************/\n\n.lb-tiptap-mention {\n padding: 0.1em 0.3em;\n border-radius: calc(0.675 * var(--lb-radius));\n background: var(--lb-accent-subtle);\n color: var(--lb-accent);\n box-decoration-break: clone;\n font-weight: 500;\n\n @include invisible-selection;\n}\n\n.lb-mention-selected {\n background: var(--lb-accent);\n color: var(--lb-accent-foreground);\n}\n\n/*************************************\n * Thread mark *\n *************************************/\n\n:where(.lb-tiptap-thread-mark:not([data-orphan=\"true\"])) {\n background: var(--lb-accent-subtle);\n color: var(--lb-foreground);\n outline: none;\n font-weight: 500;\n transition-property: color, text-decoration-color;\n text-decoration-line: underline;\n text-decoration-color: var(--lb-foreground-moderate);\n text-underline-offset: 2px;\n}\n\n:where(\n .lb-tiptap-thread-mark:not([data-orphan=\"true\"])\n .lb-tiptap-thread-mark-selected\n ) {\n color: var(--lb-accent);\n text-decoration-line: underline;\n text-decoration-color: var(--lb-accent-moderate);\n text-underline-offset: 2px;\n}\n\n/*************************************\n * Anchored threads *\n *************************************/\n\n.lb-tiptap-anchored-threads {\n --lb-tiptap-anchored-threads-gap: 1.25rem;\n --lb-tiptap-anchored-threads-active-thread-offset: -0.75rem;\n}\n\n.lb-tiptap-anchored-threads-thread-container {\n transition-duration: calc(var(--lb-transition-duration) * 2);\n transition-property: transform;\n}\n\n@media (prefers-reduced-motion) {\n .lb-tiptap-anchored-threads-thread-container {\n transition-duration: 0s;\n }\n}\n\n.lb-tiptap-anchored-threads-thread {\n position: relative;\n overflow: hidden;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n box-shadow: $lb-tiptap-anchored-threads-shadow;\n transition-property: background, box-shadow;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n box-shadow: var(--lb-inset-shadow);\n pointer-events: none;\n }\n\n &:where([data-state=\"active\"]) {\n box-shadow: $lb-tiptap-anchored-threads-active-shadow;\n }\n}\n\n/*************************************\n * Floating components *\n *************************************/\n\n.lb-tiptap-floating {\n --lb-tiptap-floating-size: 350px;\n}\n\n/*************************************\n * Floating threads *\n *************************************/\n\n.lb-tiptap-floating-threads-thread {\n inline-size: var(--lb-tiptap-floating-size);\n\n &:where(:not(:last-of-type)) {\n border-block-end: 1px solid var(--lb-foreground-subtle);\n }\n}\n\n/*************************************\n * Floating composer *\n *************************************/\n\n.lb-tiptap-floating-composer {\n inline-size: var(--lb-tiptap-floating-size);\n}\n\n/*************************************\n * Active selection *\n *************************************/\n\n.lb-tiptap-active-selection {\n background: var(--lb-selection, rgb(0 0 255 / 20%));\n pointer-events: none;\n}\n\n/*************************************\n * Toolbar *\n *************************************/\n\n.lb-tiptap-toolbar {\n --lb-tiptap-toolbar-spacing: calc(0.25 * var(--lb-spacing));\n\n position: relative;\n display: flex;\n flex-direction: row;\n gap: var(--lb-tiptap-toolbar-spacing);\n align-items: center;\n padding: var(--lb-tiptap-toolbar-spacing);\n background: var(--lb-background);\n\n /* overflow-inline: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-x: auto;\n\n @include invisible-scrollbar;\n\n > * {\n flex: none;\n }\n}\n\n.lb-tiptap-floating-toolbar {\n --lb-tiptap-toolbar-spacing: $lb-elevation-padding;\n}\n\n.lb-tiptap-toolbar-separator {\n position: relative;\n align-self: stretch;\n inline-size: 1px;\n margin-inline: 1px;\n pointer-events: none;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 10% 0;\n background: var(--lb-foreground-subtle);\n }\n}\n\n/*************************************\n * Collab Cursors *\n *************************************/\n\n/* Give a remote user a caret */\n/* stylelint-disable-next-line selector-class-pattern */\n.collaboration-cursor__caret {\n position: relative;\n margin-inline-start: -1px;\n margin-inline-end: -1px;\n border-inline-start: 1px solid #0d0d0d;\n border-inline-end: 1px solid #0d0d0d;\n word-break: normal;\n pointer-events: none;\n}\n\n/* Render the username above the caret */\n/* stylelint-disable-next-line selector-class-pattern */\n.collaboration-cursor__label {\n position: absolute;\n inset-inline-start: -1px;\n inset-block-start: -1.4em;\n padding: 2px 6px;\n border-radius: 6px;\n border-end-start-radius: 0;\n color: #fff;\n font-weight: 600;\n font-style: normal;\n font-size: 14px;\n line-height: normal;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n","@mixin invisible-selection {\n &::selection,\n *::selection {\n background: transparent;\n }\n}\n\n@mixin invisible-scrollbar {\n & {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["src/styles/src/styles/index.css","src/styles/src/styles/utils.css"],"names":[],"mappings":"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","file":"styles.css","sourcesContent":["@import \"./utils\";\n@import \"./constants\";\n\n/*************************************\n * Suggestions *\n *************************************/\n\n.lb-tiptap-suggestions-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n/*************************************\n * Mention suggestions *\n *************************************/\n\n.lb-tiptap-mention-suggestions {\n --lb-tiptap-mention-suggestion-avatar-size: 1.25rem;\n}\n\n.lb-tiptap-mention-suggestion {\n padding: calc(0.375 * var(--lb-spacing)) calc(0.625 * var(--lb-spacing));\n}\n\n.lb-tiptap-mention-suggestion-avatar {\n inline-size: var(--lb-tiptap-mention-suggestion-avatar-size);\n margin-inline-start: calc(-0.125 * var(--lb-spacing));\n margin-inline-end: calc(0.5 * var(--lb-spacing));\n margin-block: calc(0.125 * var(--lb-spacing));\n background: var(--lb-foreground-subtle);\n color: var(--lb-foreground-moderate);\n}\n\n/*************************************\n * Elevation lists *\n *************************************/\n\n.lb-tiptap-suggestions {\n padding: $lb-elevation-padding;\n animation-duration: var(--lb-transition-duration);\n animation-timing-function: var(--lb-transition-easing);\n will-change: transform, opacity;\n}\n\n.lb-tiptap-suggestions-list-item {\n display: flex;\n align-items: center;\n padding: calc(0.25 * var(--lb-spacing)) calc(0.5 * var(--lb-spacing));\n border-radius: calc(var(--lb-radius) - 0.75 * $lb-elevation-padding);\n color: var(--lb-foreground-secondary);\n outline: none;\n font-size: 0.875rem;\n cursor: pointer;\n user-select: none;\n transition-property: background, color, opacity;\n scroll-margin-block: $lb-elevation-padding;\n}\n\n:is(.lb-tiptap-suggestions-list-item) {\n &:where(\n [data-highlighted]:not([data-highlighted=\"false\"]),\n [data-selected]:not([data-selected=\"false\"])\n ) {\n background: var(--lb-foreground-subtle);\n transition-duration: calc(var(--lb-transition-duration) / 2);\n }\n\n &:where(:disabled, [data-disabled]:not([data-disabled=\"false\"])) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n/*************************************\n * Floating animations *\n *************************************/\n\n:is(.lb-tiptap-suggestions) {\n &:where([data-side=\"top\"]) {\n animation-name: lb-animation-slide-up;\n }\n\n &:where([data-side=\"bottom\"]) {\n animation-name: lb-animation-slide-down;\n }\n\n &:where([data-state=\"closed\"]) {\n animation-name: lb-animation-disappear;\n }\n}\n\n@media (prefers-reduced-motion) {\n .lb-tiptap-suggestions:where(:not([data-state=\"closed\"])) {\n animation-name: lb-animation-appear;\n }\n}\n\n/*************************************\n * Mention *\n *************************************/\n\n.lb-tiptap-mention {\n padding: 0.1em 0.3em;\n border-radius: calc(0.675 * var(--lb-radius));\n background: var(--lb-accent-subtle);\n color: var(--lb-accent);\n box-decoration-break: clone;\n font-weight: 500;\n\n @include invisible-selection;\n}\n\n.lb-mention-selected {\n background: var(--lb-accent);\n color: var(--lb-accent-foreground);\n}\n\n/*************************************\n * Thread mark *\n *************************************/\n\n:where(.lb-tiptap-thread-mark:not([data-orphan=\"true\"])) {\n background: var(--lb-accent-subtle);\n color: var(--lb-foreground);\n outline: none;\n font-weight: 500;\n transition-property: color, text-decoration-color;\n text-decoration-line: underline;\n text-decoration-color: var(--lb-foreground-moderate);\n text-underline-offset: 2px;\n}\n\n:where(\n .lb-tiptap-thread-mark:not([data-orphan=\"true\"])\n .lb-tiptap-thread-mark-selected\n) {\n color: var(--lb-accent);\n text-decoration-line: underline;\n text-decoration-color: var(--lb-accent-moderate);\n text-underline-offset: 2px;\n}\n\n/*************************************\n * Anchored threads *\n *************************************/\n\n.lb-tiptap-anchored-threads {\n --lb-tiptap-anchored-threads-gap: 1.25rem;\n --lb-tiptap-anchored-threads-active-thread-offset: -0.75rem;\n}\n\n.lb-tiptap-anchored-threads-thread-container {\n transition-duration: calc(var(--lb-transition-duration) * 2);\n transition-property: transform;\n}\n\n@media (prefers-reduced-motion) {\n .lb-tiptap-anchored-threads-thread-container {\n transition-duration: 0s;\n }\n}\n\n.lb-tiptap-anchored-threads-thread {\n position: relative;\n overflow: hidden;\n border-radius: var(--lb-radius);\n background: var(--lb-dynamic-background);\n box-shadow: $lb-tiptap-anchored-threads-shadow;\n transition-property: background, box-shadow;\n\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n z-index: 1;\n border-radius: inherit;\n box-shadow: var(--lb-inset-shadow);\n pointer-events: none;\n }\n\n &:where([data-state=\"active\"]) {\n box-shadow: $lb-tiptap-anchored-threads-active-shadow;\n }\n}\n\n/*************************************\n * Floating components *\n *************************************/\n\n.lb-tiptap-floating {\n --lb-tiptap-floating-size: 350px;\n}\n\n/*************************************\n * Floating threads *\n *************************************/\n\n.lb-tiptap-floating-threads-thread {\n inline-size: var(--lb-tiptap-floating-size);\n\n &:where(:not(:last-of-type)) {\n border-block-end: 1px solid var(--lb-foreground-subtle);\n }\n}\n\n/*************************************\n * Floating composer *\n *************************************/\n\n.lb-tiptap-floating-composer {\n inline-size: var(--lb-tiptap-floating-size);\n}\n\n/*************************************\n * Active selection *\n *************************************/\n\n.lb-tiptap-active-selection {\n background: var(--lb-selection, rgb(0 0 255 / 20%));\n pointer-events: none;\n}\n\n/*************************************\n * Toolbar *\n *************************************/\n\n.lb-tiptap-toolbar {\n --lb-tiptap-toolbar-spacing: calc(0.25 * var(--lb-spacing));\n\n position: relative;\n display: flex;\n flex-direction: row;\n gap: var(--lb-tiptap-toolbar-spacing);\n align-items: center;\n padding: var(--lb-tiptap-toolbar-spacing);\n background: var(--lb-background);\n\n /* overflow-inline: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-x: auto;\n\n @include invisible-scrollbar;\n\n > * {\n flex: none;\n }\n}\n\n.lb-tiptap-floating-toolbar {\n --lb-tiptap-toolbar-spacing: $lb-elevation-padding;\n}\n\n.lb-tiptap-toolbar-separator {\n position: relative;\n align-self: stretch;\n inline-size: 1px;\n margin-inline: 1px;\n pointer-events: none;\n\n &::before {\n content: \"\";\n position: absolute;\n inset: 10% 0;\n background: var(--lb-foreground-subtle);\n }\n}\n\n/*************************************\n * AI Toolbar *\n *************************************/\n\n.lb-tiptap-ai-selection {\n background: var(--lb-selection, rgb(0 0 255 / 20%));\n pointer-events: none;\n}\n\n.lb-tiptap-ai-toolbar-portal {\n inline-size: var(--lb-tiptap-editor-width);\n outline: none;\n}\n\n.lb-tiptap-ai-toolbar-container {\n --lb-tiptap-ai-toolbar-padding: calc(0.5 * var(--lb-spacing));\n --lb-tiptap-ai-toolbar-height: calc(\n $lb-button-size + 2 * var(--lb-tiptap-ai-toolbar-padding)\n );\n\n position: relative;\n min-block-size: var(--lb-tiptap-ai-toolbar-height);\n}\n\n.lb-tiptap-ai-toolbar {\n display: flex;\n flex-direction: column;\n color: var(--lb-foreground);\n}\n\n.lb-tiptap-ai-toolbar-output-container {\n display: flex;\n flex-direction: column-reverse;\n border-block-end: 1px solid var(--lb-foreground-subtle);\n}\n\n.lb-tiptap-ai-toolbar-output {\n &::before {\n content: \"\\FEFF\";\n display: inline-block;\n vertical-align: middle;\n user-select: none;\n }\n\n /* stylelint-disable-next-line selector-class-pattern */\n :where(.collaboration-cursor__label) {\n display: flex;\n gap: 0.1875em;\n align-items: center;\n\n :where(.lb-icon-container) {\n margin-inline-start: -0.125em;\n\n &,\n & svg {\n inline-size: 1em;\n block-size: 1em;\n }\n }\n }\n}\n\n.lb-tiptap-ai-toolbar-content {\n display: grid;\n grid-template-columns: auto 1fr auto;\n inline-size: 100%;\n min-inline-size: 0;\n outline: none;\n}\n\n.lb-tiptap-ai-toolbar-output-container,\n.lb-tiptap-ai-toolbar-content {\n max-block-size: calc(6lh + 2 * var(--lb-tiptap-ai-toolbar-padding));\n padding: var(--lb-tiptap-ai-toolbar-padding);\n\n /* overflow-block: auto; doesn't work as expected */\n /* stylelint-disable-next-line plugin/use-logical-properties-and-values */\n overflow-y: auto;\n}\n\n.lb-tiptap-ai-toolbar-custom-prompt-container {\n position: relative;\n z-index: auto;\n display: grid;\n margin-block: calc(-1 * var(--lb-tiptap-ai-toolbar-padding));\n line-height: $lb-button-size;\n\n &::before {\n /* The space is important when handling new lines */\n content: attr(data-value) \" \";\n visibility: hidden;\n }\n}\n\n.lb-tiptap-ai-toolbar-icon-container,\n.lb-tiptap-ai-toolbar-actions {\n display: flex;\n flex: none;\n block-size: $lb-button-size;\n}\n\n.lb-tiptap-ai-toolbar-icon-container {\n position: sticky;\n inset-block-start: 0;\n align-items: center;\n align-self: start;\n color: var(--lb-foreground-moderate);\n}\n\n.lb-tiptap-ai-toolbar-actions {\n position: sticky;\n inset-block-end: 0;\n gap: var(--lb-tiptap-ai-toolbar-padding);\n align-self: end;\n}\n\n.lb-tiptap-ai-toolbar-custom-prompt {\n all: unset;\n background: transparent;\n color: var(--lb-foreground);\n outline: none;\n resize: none;\n\n &::placeholder {\n color: var(--lb-foreground-moderate);\n }\n}\n\n.lb-tiptap-ai-toolbar-custom-prompt,\n.lb-tiptap-ai-toolbar-custom-prompt-container::before {\n /* Overlap the textarea and its value to auto-size it */\n grid-area: 1 / 1 / 2 / 2;\n box-sizing: inherit;\n inline-size: 100%;\n min-inline-size: 0;\n padding: var(--lb-tiptap-ai-toolbar-padding);\n font: inherit;\n letter-spacing: inherit;\n white-space: pre-wrap;\n}\n\n.lb-tiptap-ai-toolbar-halo {\n --lb-tiptap-ai-toolbar-halo-blur: 16px;\n --lb-tiptap-ai-toolbar-halo-outset: 8px;\n\n position: absolute;\n inset: calc(-1 * var(--lb-tiptap-ai-toolbar-halo-outset));\n z-index: -1;\n overflow: hidden;\n border-radius: calc(\n var(--lb-radius) + var(--lb-tiptap-ai-toolbar-halo-outset)\n );\n filter: blur(var(--lb-tiptap-ai-toolbar-halo-blur));\n pointer-events: none;\n transition-duration: 1s;\n transition-property: opacity;\n\n &:where(:not([data-active])) {\n opacity: 0.5;\n }\n}\n\n:is(\n .lb-tiptap-ai-toolbar-halo-horizontal,\n .lb-tiptap-ai-toolbar-halo-vertical\n) {\n position: absolute;\n inset: 0;\n\n &::before,\n &::after {\n content: \"\";\n position: absolute;\n inset: 0;\n opacity: 0.25;\n animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955);\n animation-iteration-count: infinite;\n }\n}\n\n.lb-tiptap-ai-toolbar-halo-horizontal {\n &::before {\n inline-size: 200%;\n block-size: 100%;\n background: linear-gradient(\n 30deg,\n transparent 20%,\n var(--lb-accent) 50%,\n transparent 80%\n );\n background-position: top left;\n background-size: 50% 100%;\n animation-name: lb-animation-ai-toolbar-halo-horizontal;\n animation-duration: 8s;\n animation-direction: alternate;\n }\n\n &::after {\n inset-inline-start: -50%;\n inline-size: 400%;\n block-size: 100%;\n background: linear-gradient(\n 90deg,\n transparent 20%,\n var(--lb-accent) 50%,\n transparent 80%\n );\n background-position: top left;\n background-size: 800px 100%;\n background-repeat: space;\n animation-name: lb-animation-ai-toolbar-halo-horizontal;\n animation-duration: 6s;\n animation-delay: -2s;\n animation-direction: alternate-reverse;\n }\n}\n\n.lb-tiptap-ai-toolbar-halo-vertical {\n opacity: 0;\n\n &::before {\n inset-block-start: -50%;\n inline-size: 100%;\n block-size: 400%;\n background: linear-gradient(\n 1deg,\n transparent 40%,\n var(--lb-accent) 50%,\n transparent 60%\n );\n background-position: top left;\n background-size: 100% 600px;\n background-repeat: round;\n animation-name: lb-animation-ai-toolbar-halo-vertical;\n animation-duration: 4s;\n animation-delay: -2s;\n animation-direction: alternate-reverse;\n }\n\n &::after {\n inset-block-start: -50%;\n inline-size: 100%;\n block-size: 400%;\n background: linear-gradient(\n -2deg,\n transparent 40%,\n var(--lb-accent) 50%,\n transparent 60%\n );\n background-position: top left;\n background-size: 100% 400px;\n background-repeat: round;\n animation-name: lb-animation-ai-toolbar-halo-vertical;\n animation-duration: 3s;\n animation-delay: -1s;\n animation-direction: alternate;\n }\n}\n\n.lb-tiptap-ai-toolbar-thinking {\n display: flex;\n flex: 1 0 auto;\n align-items: center;\n min-inline-size: 0;\n padding-inline: var(--lb-tiptap-ai-toolbar-padding);\n color: var(--lb-foreground-moderate);\n cursor: wait;\n user-select: none;\n animation: lb-animation-shimmer 8s linear infinite;\n}\n\n.lb-tiptap-ai-toolbar-dropdown {\n inline-size: min(250px, 100%);\n margin-block-start: 8px;\n}\n\n/*************************************\n * Collab Cursors *\n *************************************/\n\n/* Give a remote user a caret */\n/* stylelint-disable-next-line selector-class-pattern */\n.collaboration-cursor__caret {\n position: relative;\n margin-inline-start: -1px;\n margin-inline-end: -1px;\n border-inline-start: 1px solid #0d0d0d;\n border-inline-end: 1px solid #0d0d0d;\n word-break: normal;\n pointer-events: none;\n}\n\n/* Render the username above the caret */\n/* stylelint-disable-next-line selector-class-pattern */\n.collaboration-cursor__label {\n position: absolute;\n inset-inline-start: -1px;\n inset-block-start: -1.4em;\n padding: 2px 6px;\n border-radius: 6px;\n border-end-start-radius: 0;\n color: #fff;\n font-weight: 600;\n font-style: normal;\n font-size: 14px;\n line-height: normal;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n/*************************************\n * Animations *\n *************************************/\n\n@keyframes lb-animation-ai-toolbar-halo-horizontal {\n from {\n transform: translateX(-50%);\n }\n\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes lb-animation-ai-toolbar-halo-vertical {\n from {\n transform: translateY(0);\n }\n\n to {\n transform: translateY(-50%);\n }\n}\n\n/*************************************\n * Ai Changes *\n *************************************/\n\n.lb-changed-removed {\n color: rgb(255 255 255 / 13%);\n text-decoration: line-through;\n text-decoration-thickness: 1px;\n}\n\n.lb-changed-added {\n border-block-end: 2px solid rgb(35 131 226 / 15%);\n background: rgb(35 131 226 / 5.4%);\n color: rgb(79 167 255);\n}\n","@mixin invisible-selection {\n &::selection,\n *::selection {\n background: transparent;\n }\n}\n\n@mixin invisible-scrollbar {\n & {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n"]}
|