@liveblocks/react-ui 3.15.0-thread1 → 3.15.0

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 (149) hide show
  1. package/README.md +6 -16
  2. package/dist/_private/index.cjs +3 -5
  3. package/dist/_private/index.cjs.map +1 -1
  4. package/dist/_private/index.d.cts +10 -4
  5. package/dist/_private/index.d.ts +10 -4
  6. package/dist/_private/index.js +2 -2
  7. package/dist/components/AiChat.cjs +10 -2
  8. package/dist/components/AiChat.cjs.map +1 -1
  9. package/dist/components/AiChat.js +10 -2
  10. package/dist/components/AiChat.js.map +1 -1
  11. package/dist/components/AvatarStack.cjs +117 -0
  12. package/dist/components/AvatarStack.cjs.map +1 -0
  13. package/dist/components/AvatarStack.js +115 -0
  14. package/dist/components/AvatarStack.js.map +1 -0
  15. package/dist/components/Comment.cjs +13 -31
  16. package/dist/components/Comment.cjs.map +1 -1
  17. package/dist/components/Comment.js +15 -14
  18. package/dist/components/Comment.js.map +1 -1
  19. package/dist/components/CommentPin.cjs +36 -0
  20. package/dist/components/CommentPin.cjs.map +1 -0
  21. package/dist/components/CommentPin.js +34 -0
  22. package/dist/components/CommentPin.js.map +1 -0
  23. package/dist/components/Composer.cjs +2 -4
  24. package/dist/components/Composer.cjs.map +1 -1
  25. package/dist/components/Composer.js +3 -5
  26. package/dist/components/Composer.js.map +1 -1
  27. package/dist/components/Cursor.cjs +40 -0
  28. package/dist/components/Cursor.cjs.map +1 -0
  29. package/dist/components/Cursor.js +38 -0
  30. package/dist/components/Cursor.js.map +1 -0
  31. package/dist/components/Cursors.cjs +256 -0
  32. package/dist/components/Cursors.cjs.map +1 -0
  33. package/dist/components/Cursors.js +254 -0
  34. package/dist/components/Cursors.js.map +1 -0
  35. package/dist/components/FloatingComposer.cjs +82 -0
  36. package/dist/components/FloatingComposer.cjs.map +1 -0
  37. package/dist/components/FloatingComposer.js +80 -0
  38. package/dist/components/FloatingComposer.js.map +1 -0
  39. package/dist/components/FloatingThread.cjs +82 -0
  40. package/dist/components/FloatingThread.cjs.map +1 -0
  41. package/dist/components/FloatingThread.js +80 -0
  42. package/dist/components/FloatingThread.js.map +1 -0
  43. package/dist/components/InboxNotification.cjs +4 -6
  44. package/dist/components/InboxNotification.cjs.map +1 -1
  45. package/dist/components/InboxNotification.js +5 -7
  46. package/dist/components/InboxNotification.js.map +1 -1
  47. package/dist/components/Thread.cjs +21 -29
  48. package/dist/components/Thread.cjs.map +1 -1
  49. package/dist/components/Thread.js +21 -10
  50. package/dist/components/Thread.js.map +1 -1
  51. package/dist/components/internal/AiComposer.cjs +1 -2
  52. package/dist/components/internal/AiComposer.cjs.map +1 -1
  53. package/dist/components/internal/AiComposer.js +1 -2
  54. package/dist/components/internal/AiComposer.js.map +1 -1
  55. package/dist/components/internal/Avatar.cjs +10 -13
  56. package/dist/components/internal/Avatar.cjs.map +1 -1
  57. package/dist/components/internal/Avatar.js +11 -14
  58. package/dist/components/internal/Avatar.js.map +1 -1
  59. package/dist/components/internal/CodeBlock.cjs +1 -2
  60. package/dist/components/internal/CodeBlock.cjs.map +1 -1
  61. package/dist/components/internal/CodeBlock.js +1 -2
  62. package/dist/components/internal/CodeBlock.js.map +1 -1
  63. package/dist/components/internal/Dropdown.cjs +7 -28
  64. package/dist/components/internal/Dropdown.cjs.map +1 -1
  65. package/dist/components/internal/Dropdown.js +7 -7
  66. package/dist/components/internal/Dropdown.js.map +1 -1
  67. package/dist/components/internal/EmojiPicker.cjs +6 -27
  68. package/dist/components/internal/EmojiPicker.cjs.map +1 -1
  69. package/dist/components/internal/EmojiPicker.js +6 -6
  70. package/dist/components/internal/EmojiPicker.js.map +1 -1
  71. package/dist/components/internal/List.cjs +2 -2
  72. package/dist/components/internal/List.cjs.map +1 -1
  73. package/dist/components/internal/List.js +2 -2
  74. package/dist/components/internal/List.js.map +1 -1
  75. package/dist/components/internal/Tooltip.cjs +7 -28
  76. package/dist/components/internal/Tooltip.cjs.map +1 -1
  77. package/dist/components/internal/Tooltip.js +7 -7
  78. package/dist/components/internal/Tooltip.js.map +1 -1
  79. package/dist/index.cjs +12 -0
  80. package/dist/index.cjs.map +1 -1
  81. package/dist/index.d.cts +232 -137
  82. package/dist/index.d.ts +232 -137
  83. package/dist/index.js +6 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/primitives/AiComposer/index.cjs +5 -4
  86. package/dist/primitives/AiComposer/index.cjs.map +1 -1
  87. package/dist/primitives/AiComposer/index.js +5 -4
  88. package/dist/primitives/AiComposer/index.js.map +1 -1
  89. package/dist/primitives/AiMessage/index.cjs +2 -2
  90. package/dist/primitives/AiMessage/index.cjs.map +1 -1
  91. package/dist/primitives/AiMessage/index.js +2 -2
  92. package/dist/primitives/AiMessage/index.js.map +1 -1
  93. package/dist/primitives/Collapsible/index.cjs +4 -4
  94. package/dist/primitives/Collapsible/index.cjs.map +1 -1
  95. package/dist/primitives/Collapsible/index.js +4 -4
  96. package/dist/primitives/Collapsible/index.js.map +1 -1
  97. package/dist/primitives/Comment/index.cjs +4 -4
  98. package/dist/primitives/Comment/index.cjs.map +1 -1
  99. package/dist/primitives/Comment/index.js +4 -4
  100. package/dist/primitives/Comment/index.js.map +1 -1
  101. package/dist/primitives/Composer/index.cjs +23 -35
  102. package/dist/primitives/Composer/index.cjs.map +1 -1
  103. package/dist/primitives/Composer/index.js +23 -16
  104. package/dist/primitives/Composer/index.js.map +1 -1
  105. package/dist/primitives/Duration.cjs +2 -2
  106. package/dist/primitives/Duration.cjs.map +1 -1
  107. package/dist/primitives/Duration.js +2 -2
  108. package/dist/primitives/Duration.js.map +1 -1
  109. package/dist/primitives/FileSize.cjs +2 -2
  110. package/dist/primitives/FileSize.cjs.map +1 -1
  111. package/dist/primitives/FileSize.js +2 -2
  112. package/dist/primitives/FileSize.js.map +1 -1
  113. package/dist/primitives/Markdown.cjs +2 -2
  114. package/dist/primitives/Markdown.cjs.map +1 -1
  115. package/dist/primitives/Markdown.js +2 -2
  116. package/dist/primitives/Markdown.js.map +1 -1
  117. package/dist/primitives/Timestamp.cjs +2 -2
  118. package/dist/primitives/Timestamp.cjs.map +1 -1
  119. package/dist/primitives/Timestamp.js +2 -2
  120. package/dist/primitives/Timestamp.js.map +1 -1
  121. package/dist/utils/Portal.cjs +2 -2
  122. package/dist/utils/Portal.cjs.map +1 -1
  123. package/dist/utils/Portal.js +2 -2
  124. package/dist/utils/Portal.js.map +1 -1
  125. package/dist/utils/animation-loop.cjs +44 -0
  126. package/dist/utils/animation-loop.cjs.map +1 -0
  127. package/dist/utils/animation-loop.js +42 -0
  128. package/dist/utils/animation-loop.js.map +1 -0
  129. package/dist/utils/use-pre-resolve-user.cjs +18 -0
  130. package/dist/utils/use-pre-resolve-user.cjs.map +1 -0
  131. package/dist/utils/use-pre-resolve-user.js +16 -0
  132. package/dist/utils/use-pre-resolve-user.js.map +1 -0
  133. package/dist/utils/use-stable-component.cjs +32 -0
  134. package/dist/utils/use-stable-component.cjs.map +1 -0
  135. package/dist/utils/use-stable-component.js +30 -0
  136. package/dist/utils/use-stable-component.js.map +1 -0
  137. package/dist/version.cjs +1 -1
  138. package/dist/version.cjs.map +1 -1
  139. package/dist/version.js +1 -1
  140. package/dist/version.js.map +1 -1
  141. package/package.json +7 -10
  142. package/src/styles/dark/index.css +1 -1
  143. package/src/styles/index.css +252 -4
  144. package/styles/dark/attributes.css +1 -1
  145. package/styles/dark/attributes.css.map +1 -1
  146. package/styles/dark/media-query.css +1 -1
  147. package/styles/dark/media-query.css.map +1 -1
  148. package/styles.css +1 -1
  149. package/styles.css.map +1 -1
@@ -0,0 +1,16 @@
1
+ import { kInternal } from '@liveblocks/core';
2
+ import { useClient } from '@liveblocks/react';
3
+ import { useCallback } from 'react';
4
+
5
+ function usePreResolveUser() {
6
+ const client = useClient();
7
+ return useCallback(
8
+ (userId) => {
9
+ void client[kInternal].usersStore.enqueue(userId);
10
+ },
11
+ [client]
12
+ );
13
+ }
14
+
15
+ export { usePreResolveUser };
16
+ //# sourceMappingURL=use-pre-resolve-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-pre-resolve-user.js","sources":["../../src/utils/use-pre-resolve-user.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useCallback } from \"react\";\n\n/**\n * Returns a function that resolves a user ID ahead of time to\n * make subsequent calls to `useUser` cached. This is useful for\n * known scenarios like resolving the current user's info\n * before they post a comment.\n *\n * This function is a no-op if the user ID is already resolved.\n */\nexport function usePreResolveUser() {\n const client = useClient();\n\n return useCallback(\n (userId: string) => {\n void client[kInternal].usersStore.enqueue(userId);\n },\n [client]\n );\n}\n"],"names":[],"mappings":";;;;AAYO,SAAS,iBAAoB,GAAA;AAClC,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,EAAO,OAAA,WAAA;AAAA,IACL,CAAC,MAAmB,KAAA;AAClB,MAAA,KAAK,MAAO,CAAA,SAAS,CAAE,CAAA,UAAA,CAAW,QAAQ,MAAM,CAAA,CAAA;AAAA,KAClD;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,GACT,CAAA;AACF;;;;"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+
6
+ function isClassComponent(Component) {
7
+ return Boolean(
8
+ Component.prototype && "isReactComponent" in Component.prototype
9
+ );
10
+ }
11
+ function useStableComponent(Component, DefaultComponent) {
12
+ const Default = DefaultComponent;
13
+ const ref = react.useRef(Component);
14
+ ref.current = Component;
15
+ const Stable = react.useMemo(
16
+ () => (props) => {
17
+ const Component2 = ref.current;
18
+ if (!Component2) {
19
+ return /* @__PURE__ */ jsxRuntime.jsx(Default, { ...props });
20
+ }
21
+ if (isClassComponent(Component2)) {
22
+ return /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props });
23
+ }
24
+ return Component2(props);
25
+ },
26
+ [Default]
27
+ );
28
+ return Stable;
29
+ }
30
+
31
+ exports.useStableComponent = useStableComponent;
32
+ //# sourceMappingURL=use-stable-component.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stable-component.cjs","sources":["../../src/utils/use-stable-component.tsx"],"sourcesContent":["import {\n type ComponentClass,\n type ComponentType,\n type FunctionComponent,\n useMemo,\n useRef,\n} from \"react\";\n\nfunction isClassComponent<P>(\n Component: ComponentType<P>\n): Component is ComponentClass<P> {\n return Boolean(\n Component.prototype && \"isReactComponent\" in Component.prototype\n );\n}\n\n/**\n * Stabilizes a component by creating a stable wrapper that will not be remounted\n * when the component changes.\n */\nexport function useStableComponent<\n P extends object,\n D extends ComponentType<P>,\n>(Component: ComponentType<P> | undefined, DefaultComponent: D): D {\n const Default: ComponentType<P> = DefaultComponent;\n const ref = useRef(Component);\n ref.current = Component;\n\n const Stable = useMemo<FunctionComponent<P>>(\n () => (props) => {\n const Component = ref.current;\n\n if (!Component) {\n return <Default {...props} />;\n }\n\n if (isClassComponent(Component)) {\n return <Component {...props} />;\n }\n\n return Component(props);\n },\n [Default]\n );\n\n return Stable as D;\n}\n"],"names":["useRef","useMemo","Component","jsx"],"mappings":";;;;;AAQA,SAAS,iBACP,SACgC,EAAA;AAChC,EAAO,OAAA,OAAA;AAAA,IACL,SAAA,CAAU,SAAa,IAAA,kBAAA,IAAsB,SAAU,CAAA,SAAA;AAAA,GACzD,CAAA;AACF,CAAA;AAMgB,SAAA,kBAAA,CAGd,WAAyC,gBAAwB,EAAA;AACjE,EAAA,MAAM,OAA4B,GAAA,gBAAA,CAAA;AAClC,EAAM,MAAA,GAAA,GAAMA,aAAO,SAAS,CAAA,CAAA;AAC5B,EAAA,GAAA,CAAI,OAAU,GAAA,SAAA,CAAA;AAEd,EAAA,MAAM,MAAS,GAAAC,aAAA;AAAA,IACb,MAAM,CAAC,KAAU,KAAA;AACf,MAAA,MAAMC,aAAY,GAAI,CAAA,OAAA,CAAA;AAEtB,MAAA,IAAI,CAACA,UAAW,EAAA;AACd,QAAO,uBAAAC,cAAA,CAAC,OAAS,EAAA,EAAA,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,OAC7B;AAEA,MAAI,IAAA,gBAAA,CAAiBD,UAAS,CAAG,EAAA;AAC/B,QAAA,uBAAQA,cAAAA,CAAAA,UAAAA,EAAA,EAAW,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,OAC/B;AAEA,MAAA,OAAOA,WAAU,KAAK,CAAA,CAAA;AAAA,KACxB;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
@@ -0,0 +1,30 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useRef, useMemo } from 'react';
3
+
4
+ function isClassComponent(Component) {
5
+ return Boolean(
6
+ Component.prototype && "isReactComponent" in Component.prototype
7
+ );
8
+ }
9
+ function useStableComponent(Component, DefaultComponent) {
10
+ const Default = DefaultComponent;
11
+ const ref = useRef(Component);
12
+ ref.current = Component;
13
+ const Stable = useMemo(
14
+ () => (props) => {
15
+ const Component2 = ref.current;
16
+ if (!Component2) {
17
+ return /* @__PURE__ */ jsx(Default, { ...props });
18
+ }
19
+ if (isClassComponent(Component2)) {
20
+ return /* @__PURE__ */ jsx(Component2, { ...props });
21
+ }
22
+ return Component2(props);
23
+ },
24
+ [Default]
25
+ );
26
+ return Stable;
27
+ }
28
+
29
+ export { useStableComponent };
30
+ //# sourceMappingURL=use-stable-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-stable-component.js","sources":["../../src/utils/use-stable-component.tsx"],"sourcesContent":["import {\n type ComponentClass,\n type ComponentType,\n type FunctionComponent,\n useMemo,\n useRef,\n} from \"react\";\n\nfunction isClassComponent<P>(\n Component: ComponentType<P>\n): Component is ComponentClass<P> {\n return Boolean(\n Component.prototype && \"isReactComponent\" in Component.prototype\n );\n}\n\n/**\n * Stabilizes a component by creating a stable wrapper that will not be remounted\n * when the component changes.\n */\nexport function useStableComponent<\n P extends object,\n D extends ComponentType<P>,\n>(Component: ComponentType<P> | undefined, DefaultComponent: D): D {\n const Default: ComponentType<P> = DefaultComponent;\n const ref = useRef(Component);\n ref.current = Component;\n\n const Stable = useMemo<FunctionComponent<P>>(\n () => (props) => {\n const Component = ref.current;\n\n if (!Component) {\n return <Default {...props} />;\n }\n\n if (isClassComponent(Component)) {\n return <Component {...props} />;\n }\n\n return Component(props);\n },\n [Default]\n );\n\n return Stable as D;\n}\n"],"names":["Component"],"mappings":";;;AAQA,SAAS,iBACP,SACgC,EAAA;AAChC,EAAO,OAAA,OAAA;AAAA,IACL,SAAA,CAAU,SAAa,IAAA,kBAAA,IAAsB,SAAU,CAAA,SAAA;AAAA,GACzD,CAAA;AACF,CAAA;AAMgB,SAAA,kBAAA,CAGd,WAAyC,gBAAwB,EAAA;AACjE,EAAA,MAAM,OAA4B,GAAA,gBAAA,CAAA;AAClC,EAAM,MAAA,GAAA,GAAM,OAAO,SAAS,CAAA,CAAA;AAC5B,EAAA,GAAA,CAAI,OAAU,GAAA,SAAA,CAAA;AAEd,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IACb,MAAM,CAAC,KAAU,KAAA;AACf,MAAA,MAAMA,aAAY,GAAI,CAAA,OAAA,CAAA;AAEtB,MAAA,IAAI,CAACA,UAAW,EAAA;AACd,QAAO,uBAAA,GAAA,CAAC,OAAS,EAAA,EAAA,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,OAC7B;AAEA,MAAI,IAAA,gBAAA,CAAiBA,UAAS,CAAG,EAAA;AAC/B,QAAA,uBAAQA,GAAAA,CAAAA,UAAAA,EAAA,EAAW,GAAG,KAAO,EAAA,CAAA,CAAA;AAAA,OAC/B;AAEA,MAAA,OAAOA,WAAU,KAAK,CAAA,CAAA;AAAA,KACxB;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
package/dist/version.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const PKG_NAME = "@liveblocks/react-ui";
4
- const PKG_VERSION = typeof "3.15.0-thread1" === "string" && "3.15.0-thread1";
4
+ const PKG_VERSION = typeof "3.15.0" === "string" && "3.15.0";
5
5
  const PKG_FORMAT = typeof "cjs" === "string" && "cjs";
6
6
 
7
7
  exports.PKG_FORMAT = PKG_FORMAT;
@@ -1 +1 @@
1
- {"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\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,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,gBAAA,KAAgB,QAAY,IAAA,iBAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;;;"}
1
+ {"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\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,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,QAAA,KAAgB,QAAY,IAAA,SAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;;;"}
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  const PKG_NAME = "@liveblocks/react-ui";
2
- const PKG_VERSION = typeof "3.15.0-thread1" === "string" && "3.15.0-thread1";
2
+ const PKG_VERSION = typeof "3.15.0" === "string" && "3.15.0";
3
3
  const PKG_FORMAT = typeof "esm" === "string" && "esm";
4
4
 
5
5
  export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
@@ -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-ui\";\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,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,gBAAA,KAAgB,QAAY,IAAA,iBAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;"}
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-ui\";\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,uBAAA;AACX,MAAA,WAAA,GAAc,OAAO,QAAA,KAAgB,QAAY,IAAA,SAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@liveblocks/react-ui",
3
- "version": "3.15.0-thread1",
3
+ "version": "3.15.0",
4
4
  "description": "A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.",
5
5
  "license": "Apache-2.0",
6
+ "author": "Liveblocks Inc.",
6
7
  "type": "module",
7
8
  "main": "./dist/index.cjs",
8
9
  "types": "./dist/index.d.cts",
@@ -76,17 +77,13 @@
76
77
  "test:watch": "vitest"
77
78
  },
78
79
  "dependencies": {
79
- "@floating-ui/react-dom": "^2.1.2",
80
- "@liveblocks/client": "3.15.0-thread1",
81
- "@liveblocks/core": "3.15.0-thread1",
82
- "@liveblocks/react": "3.15.0-thread1",
83
- "@radix-ui/react-dropdown-menu": "^2.1.2",
84
- "@radix-ui/react-popover": "^1.1.2",
85
- "@radix-ui/react-slot": "^1.1.0",
86
- "@radix-ui/react-toggle": "^1.1.0",
87
- "@radix-ui/react-tooltip": "^1.1.3",
80
+ "@floating-ui/react-dom": "^2.1.0",
81
+ "@liveblocks/client": "3.15.0",
82
+ "@liveblocks/core": "3.15.0",
83
+ "@liveblocks/react": "3.15.0",
88
84
  "frimousse": "^0.2.0",
89
85
  "marked": "^15.0.11",
86
+ "radix-ui": "^1.4.0",
90
87
  "slate": "^0.110.2",
91
88
  "slate-history": "^0.110.3",
92
89
  "slate-hyperscript": "^0.100.0",
@@ -23,7 +23,7 @@
23
23
 
24
24
  color-scheme: dark;
25
25
 
26
- &:where(.lb-elevation, .lb-tooltip) {
26
+ &:where(.lb-elevation, .lb-tooltip, .lb-comment-pin) {
27
27
  --lb-background: #333;
28
28
  --lb-foreground-contrast: 10%;
29
29
  }
@@ -1346,6 +1346,7 @@
1346
1346
  padding: var(--lb-spacing);
1347
1347
  background: var(--lb-dynamic-background);
1348
1348
  color: var(--lb-foreground);
1349
+ outline: none;
1349
1350
  font-weight: 400;
1350
1351
  scroll-margin: var(--lb-spacing);
1351
1352
 
@@ -1371,7 +1372,7 @@
1371
1372
  --lb-dynamic-background: var(--lb-background-accent-faint);
1372
1373
  }
1373
1374
 
1374
- &:where([data-editing]) {
1375
+ &:where([data-editing], :focus-visible) {
1375
1376
  --lb-dynamic-background: var(--lb-background-foreground-faint);
1376
1377
  }
1377
1378
  }
@@ -1651,6 +1652,239 @@
1651
1652
  }
1652
1653
  }
1653
1654
 
1655
+ /*************************************
1656
+ * Floating Thread *
1657
+ *************************************/
1658
+
1659
+ .lb-floating-thread {
1660
+ --lb-floating-thread-size: 350px;
1661
+
1662
+ inline-size: var(--lb-floating-thread-size);
1663
+ }
1664
+
1665
+ /*************************************
1666
+ * Floating Thread Composer *
1667
+ *************************************/
1668
+
1669
+ .lb-floating-thread-composer {
1670
+ --lb-floating-thread-composer-size: 350px;
1671
+
1672
+ inline-size: var(--lb-floating-thread-composer-size);
1673
+
1674
+ :where(.lb-thread, .lb-composer) {
1675
+ inline-size: 100%;
1676
+ }
1677
+ }
1678
+
1679
+ /*************************************
1680
+ * Floating Composer *
1681
+ *************************************/
1682
+
1683
+ .lb-floating-composer {
1684
+ --lb-floating-composer-size: 350px;
1685
+
1686
+ inline-size: var(--lb-floating-composer-size);
1687
+ }
1688
+
1689
+ /*************************************
1690
+ * Comment Pin *
1691
+ *************************************/
1692
+
1693
+ .lb-comment-pin {
1694
+ --lb-comment-pin-size: 32px;
1695
+ --lb-comment-pin-padding: 4px;
1696
+
1697
+ @include button;
1698
+
1699
+ position: relative;
1700
+ display: flex;
1701
+ justify-content: center;
1702
+ align-items: center;
1703
+ inline-size: var(--lb-comment-pin-size);
1704
+ block-size: var(--lb-comment-pin-size);
1705
+ padding: var(--lb-comment-pin-padding);
1706
+ border-radius: $lb-radius-full;
1707
+ background: var(--lb-background);
1708
+ box-shadow: var(--lb-elevation-shadow);
1709
+ isolation: isolate;
1710
+
1711
+ &::after {
1712
+ content: "";
1713
+ position: absolute;
1714
+ inset: 0;
1715
+ z-index: 1;
1716
+ border-radius: inherit;
1717
+ box-shadow: var(--lb-inset-shadow);
1718
+ pointer-events: none;
1719
+ }
1720
+
1721
+ &:where([data-corner="top-left"]) {
1722
+ border-start-start-radius: 2px;
1723
+ transform: translate(0, 0);
1724
+ }
1725
+
1726
+ &:where([data-corner="top-right"]) {
1727
+ border-start-end-radius: 2px;
1728
+ transform: translate(-100%, 0);
1729
+ }
1730
+
1731
+ &:where([data-corner="bottom-right"]) {
1732
+ border-end-end-radius: 2px;
1733
+ transform: translate(-100%, -100%);
1734
+ }
1735
+
1736
+ &:where([data-corner="bottom-left"]) {
1737
+ border-end-start-radius: 2px;
1738
+ transform: translate(0, -100%);
1739
+ }
1740
+ }
1741
+
1742
+ .lb-comment-pin-avatar {
1743
+ inline-size: 100%;
1744
+ block-size: 100%;
1745
+ }
1746
+
1747
+ /*************************************
1748
+ * Avatar Stack *
1749
+ *************************************/
1750
+
1751
+ .lb-avatar-stack {
1752
+ --lb-avatar-stack-size: 24px;
1753
+ --lb-avatar-stack-overlap: calc(0.25 * var(--lb-avatar-stack-size));
1754
+ --lb-avatar-stack-gap: 2px;
1755
+
1756
+ display: flex;
1757
+ flex-direction: row;
1758
+ isolation: isolate;
1759
+ }
1760
+
1761
+ .lb-avatar-stack-avatar {
1762
+ position: relative;
1763
+ z-index: calc(
1764
+ var(--lb-avatar-stack-count) - var(--lb-avatar-stack-avatar-index)
1765
+ );
1766
+ inline-size: var(--lb-avatar-stack-size);
1767
+ block-size: var(--lb-avatar-stack-size);
1768
+ margin-inline-end: calc(-1 * var(--lb-avatar-stack-overlap));
1769
+ border-radius: $lb-radius-full;
1770
+
1771
+ &:where(:not(:first-child)) {
1772
+ --lb-avatar-stack-mask-size: calc(
1773
+ var(--lb-avatar-stack-size) / 2 + var(--lb-avatar-stack-gap)
1774
+ );
1775
+
1776
+ mask-image: radial-gradient(
1777
+ circle at
1778
+ calc(var(--lb-avatar-stack-overlap) - var(--lb-avatar-stack-size) / 2)
1779
+ 50%,
1780
+ transparent var(--lb-avatar-stack-mask-size),
1781
+ black calc(var(--lb-avatar-stack-mask-size) + 0.375px)
1782
+ );
1783
+ }
1784
+ }
1785
+
1786
+ /*************************************
1787
+ * Users Tooltip *
1788
+ *************************************/
1789
+
1790
+ .lb-users-tooltip-list {
1791
+ --lb-users-tooltip-avatar-size: 1rem;
1792
+
1793
+ display: flex;
1794
+ flex-direction: column;
1795
+ gap: calc(0.625 * var(--lb-spacing));
1796
+ margin: 0;
1797
+ padding-inline: 0;
1798
+ padding-block: calc(0.75 * var(--lb-spacing));
1799
+ list-style: none;
1800
+ }
1801
+
1802
+ .lb-users-tooltip-list-item {
1803
+ display: flex;
1804
+ gap: calc(0.625 * var(--lb-spacing));
1805
+ align-items: center;
1806
+
1807
+ :where(.lb-avatar) {
1808
+ inline-size: var(--lb-users-tooltip-avatar-size);
1809
+ block-size: var(--lb-users-tooltip-avatar-size);
1810
+ }
1811
+ }
1812
+
1813
+ /*************************************
1814
+ * Cursor *
1815
+ *************************************/
1816
+
1817
+ .lb-cursor {
1818
+ --lb-cursor-color: var(--lb-accent);
1819
+ --lb-cursor-pointer-size: 1rem;
1820
+
1821
+ position: relative;
1822
+ inline-size: 0;
1823
+ block-size: 0;
1824
+ color: var(--lb-cursor-color);
1825
+ filter: drop-shadow(0 2px 6px rgb(0 0 0 / 5%))
1826
+ drop-shadow(0 8px 26px rgb(0 0 0 / 6%));
1827
+ pointer-events: none;
1828
+ isolation: isolate;
1829
+ }
1830
+
1831
+ .lb-cursor-pointer {
1832
+ position: absolute;
1833
+ inset-inline-start: 0;
1834
+ inset-block-start: 0;
1835
+ inline-size: var(--lb-cursor-pointer-size);
1836
+ block-size: var(--lb-cursor-pointer-size);
1837
+ }
1838
+
1839
+ .lb-cursor-bubble {
1840
+ position: absolute;
1841
+ inset-inline-start: calc(0.8125 * var(--lb-cursor-pointer-size));
1842
+ inset-block-start: calc(0.8125 * var(--lb-cursor-pointer-size));
1843
+ padding: calc(0.375 * var(--lb-spacing)) calc(0.6875 * var(--lb-spacing));
1844
+ border-radius: $lb-radius-full;
1845
+ background: currentcolor;
1846
+ font-size: 0.8125rem;
1847
+ will-change: transform;
1848
+ }
1849
+
1850
+ .lb-cursor-bubble-label {
1851
+ font-weight: 500;
1852
+ line-height: 1;
1853
+ white-space: nowrap;
1854
+
1855
+ /* Use relative color to derive a text color legible against the background. */
1856
+ @supports (color: oklch(from black l c h)) {
1857
+ color: oklch(
1858
+ from var(--lb-cursor-color) clamp(0, (l / 0.623 - 1) * -infinity, 1) 0 h
1859
+ );
1860
+ }
1861
+
1862
+ /* Use a filter trick if relative color is not supported. */
1863
+ @supports not (color: oklch(from black l c h)) {
1864
+ opacity: 0.95;
1865
+ filter: invert(1) grayscale(1) brightness(1.3) contrast(9000);
1866
+ mix-blend-mode: luminosity;
1867
+ }
1868
+ }
1869
+
1870
+ /*************************************
1871
+ * Cursors *
1872
+ *************************************/
1873
+
1874
+ .lb-cursors {
1875
+ position: relative;
1876
+ overflow: clip;
1877
+ isolation: isolate;
1878
+ }
1879
+
1880
+ .lb-cursors-container {
1881
+ position: absolute;
1882
+ inset: 0;
1883
+ z-index: 1;
1884
+ pointer-events: none;
1885
+ isolation: isolate;
1886
+ }
1887
+
1654
1888
  /*************************************
1655
1889
  * Attachments *
1656
1890
  *************************************/
@@ -2252,6 +2486,7 @@
2252
2486
  border-radius: var(--lb-radius);
2253
2487
  background: var(--lb-dynamic-background);
2254
2488
  box-shadow: var(--lb-elevation-shadow);
2489
+ isolation: isolate;
2255
2490
 
2256
2491
  &::after {
2257
2492
  content: "";
@@ -2332,7 +2567,10 @@
2332
2567
  .lb-composer-suggestions,
2333
2568
  .lb-composer-floating-toolbar,
2334
2569
  .lb-tooltip,
2335
- .lb-emoji-picker {
2570
+ .lb-emoji-picker,
2571
+ .lb-floating-thread,
2572
+ .lb-floating-composer,
2573
+ .lb-floating-thread-composer {
2336
2574
  animation-duration: var(--lb-transition-duration);
2337
2575
  animation-timing-function: var(--lb-transition-easing);
2338
2576
  will-change: transform, opacity;
@@ -2354,12 +2592,19 @@
2354
2592
  }
2355
2593
  }
2356
2594
 
2595
+ :is(.lb-floating-thread, .lb-floating-composer, .lb-floating-thread-composer) {
2596
+ animation-name: lb-animation-appear;
2597
+ }
2598
+
2357
2599
  :is(
2358
2600
  .lb-dropdown,
2359
2601
  .lb-emoji-picker,
2360
2602
  .lb-tooltip,
2361
2603
  .lb-composer-suggestions,
2362
- .lb-composer-floating-toolbar
2604
+ .lb-composer-floating-toolbar,
2605
+ .lb-floating-thread,
2606
+ .lb-floating-composer,
2607
+ .lb-floating-thread-composer
2363
2608
  ) {
2364
2609
  &:where([data-state="closed"]) {
2365
2610
  animation-name: lb-animation-disappear;
@@ -2370,7 +2615,10 @@
2370
2615
  .lb-dropdown:where(:not([data-state="closed"])),
2371
2616
  .lb-emoji-picker:where(:not([data-state="closed"])),
2372
2617
  .lb-tooltip:where([data-state="delayed-open"]:not([data-state="closed"])),
2373
- .lb-composer-suggestions:where(:not([data-state="closed"])) {
2618
+ .lb-composer-suggestions:where(:not([data-state="closed"])),
2619
+ .lb-floating-thread:where(:not([data-state="closed"])),
2620
+ .lb-floating-composer:where(:not([data-state="closed"])),
2621
+ .lb-floating-thread-composer:where(:not([data-state="closed"])) {
2374
2622
  animation-name: lb-animation-appear;
2375
2623
  }
2376
2624
  }
@@ -1 +1 @@
1
- @keyframes lb-animation-shimmer-text-invert{0%,to{-webkit-mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);-webkit-mask-size:300% 100%;mask-size:300% 100%}0%{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])),:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root){--lb-accent:#4af;--lb-destructive:#f77;--lb-background:#222;--lb-foreground:#fff;--lb-accent-contrast:16%;--lb-destructive-contrast:16%;--lb-foreground-contrast:10%;--lb-inset-shadow:inset 0 0 0 1px #ffffff0f;--lb-highlight-shadow:inset 0 0 0 1px #ffffff1f;--lb-elevation-shadow:0 0 0 1px #0000000a,0 2px 6px #00000014,0 8px 26px #0000001f;--lb-elevation-shadow-moderate:0 0 0 1px #0000000a,0 2px 6px #0000000d,0 8px 26px #0000000f;--lb-tooltip-shadow:0 2px 4px #00000014,0 4px 12px #0000001f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])):where(.lb-elevation,.lb-tooltip),:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root):where(.lb-elevation,.lb-tooltip){--lb-background:#333;--lb-foreground-contrast:10%}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])):where(.lb-elevation-moderate),:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root):where(.lb-elevation-moderate){--lb-background:#2a2a2a;--lb-foreground-contrast:10%}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])) .lb-ai-chat-pending,:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root) .lb-ai-chat-pending{animation-name:lb-animation-shimmer-text-invert}
1
+ @keyframes lb-animation-shimmer-text-invert{0%,to{-webkit-mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);-webkit-mask-size:300% 100%;mask-size:300% 100%}0%{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])),:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root){--lb-accent:#4af;--lb-destructive:#f77;--lb-background:#222;--lb-foreground:#fff;--lb-accent-contrast:16%;--lb-destructive-contrast:16%;--lb-foreground-contrast:10%;--lb-inset-shadow:inset 0 0 0 1px #ffffff0f;--lb-highlight-shadow:inset 0 0 0 1px #ffffff1f;--lb-elevation-shadow:0 0 0 1px #0000000a,0 2px 6px #00000014,0 8px 26px #0000001f;--lb-elevation-shadow-moderate:0 0 0 1px #0000000a,0 2px 6px #0000000d,0 8px 26px #0000000f;--lb-tooltip-shadow:0 2px 4px #00000014,0 4px 12px #0000001f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])):where(.lb-elevation,.lb-tooltip,.lb-comment-pin),:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root):where(.lb-elevation,.lb-tooltip,.lb-comment-pin){--lb-background:#333;--lb-foreground-contrast:10%}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])):where(.lb-elevation-moderate),:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root):where(.lb-elevation-moderate){--lb-background:#2a2a2a;--lb-foreground-contrast:10%}.lb-root:where(:is(.dark,[data-theme=dark],[data-dark])) .lb-ai-chat-pending,:is(.dark,[data-theme=dark],[data-dark]) :where(.lb-root) .lb-ai-chat-pending{animation-name:lb-animation-shimmer-text-invert}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styles/dark/src/styles/dark/index.css","../../src/styles/dark/src/styles/dark/attributes.css"],"names":[],"mappings":"AAwCA,4CAAA,MAAA,uFAAA,CAAA,+EAAA,CAAA,2BAAA,CAAA,mBAAA,CAAA,GAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,yBAAA,CAAA,iBAAA,CAAA,CCpCA,mHAAA,gBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,oBAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,4BAAA,CAAA,2CAAA,CAAA,+CAAA,CAAA,kFAAA,CAAA,2FAAA,CAAA,4DAAA,CAAA,sBAAA,CAAA,2BAAA,CAAA,iBAAA,CDqBE,qLAAA,oBAAA,CAAA,4BAAA,CAKA,+KAAA,uBAAA,CAAA,4BAAA,CAKA,2JAAA,+CAAA","file":"attributes.css","sourcesContent":["@import \"../constants\";\n\n@mixin dark-styles {\n /**\n * Colors\n */\n --lb-accent: #4af;\n --lb-destructive: #f77;\n --lb-background: #222;\n --lb-foreground: #fff;\n --lb-accent-contrast: 16%;\n --lb-destructive-contrast: 16%;\n --lb-foreground-contrast: 10%;\n\n /**\n * Shadows\n */\n --lb-inset-shadow: inset 0 0 0 1px rgb(255 255 255 / 6%);\n --lb-highlight-shadow: inset 0 0 0 1px rgb(255 255 255 / 12%);\n --lb-elevation-shadow: $lb-elevation-shadow;\n --lb-elevation-shadow-moderate: $lb-elevation-shadow-moderate;\n --lb-tooltip-shadow: $lb-tooltip-shadow;\n\n color-scheme: dark;\n\n &:where(.lb-elevation, .lb-tooltip) {\n --lb-background: #333;\n --lb-foreground-contrast: 10%;\n }\n\n &:where(.lb-elevation-moderate) {\n --lb-background: #2a2a2a;\n --lb-foreground-contrast: 10%;\n }\n\n .lb-ai-chat-pending {\n animation-name: lb-animation-shimmer-text-invert;\n }\n}\n\n@keyframes lb-animation-shimmer-text-invert {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n rgb(0 0 0 / 50%) 36%,\n rgb(0 0 0 / 95%) 48%,\n rgb(0 0 0 / 95%) 52%,\n rgb(0 0 0 / 50%) 64%\n );\n mask-size: 300% 100%;\n }\n\n from {\n mask-position: 100% 0;\n }\n\n to {\n mask-position: 0% 0;\n }\n}\n","/* stylelint-disable selector-class-pattern */\n\n@import \"./index\";\n\n.lb-root:where(:is(.dark, [data-theme=\"dark\"], [data-dark])),\n:is(.dark, [data-theme=\"dark\"], [data-dark]) :where(.lb-root) {\n @include dark-styles;\n}\n"]}
1
+ {"version":3,"sources":["../../src/styles/dark/src/styles/dark/index.css","../../src/styles/dark/src/styles/dark/attributes.css"],"names":[],"mappings":"AAwCA,4CAAA,MAAA,uFAAA,CAAA,+EAAA,CAAA,2BAAA,CAAA,mBAAA,CAAA,GAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,yBAAA,CAAA,iBAAA,CAAA,CCpCA,mHAAA,gBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,oBAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,4BAAA,CAAA,2CAAA,CAAA,+CAAA,CAAA,kFAAA,CAAA,2FAAA,CAAA,4DAAA,CAAA,sBAAA,CAAA,2BAAA,CAAA,iBAAA,CDqBE,qNAAA,oBAAA,CAAA,4BAAA,CAKA,+KAAA,uBAAA,CAAA,4BAAA,CAKA,2JAAA,+CAAA","file":"attributes.css","sourcesContent":["@import \"../constants\";\n\n@mixin dark-styles {\n /**\n * Colors\n */\n --lb-accent: #4af;\n --lb-destructive: #f77;\n --lb-background: #222;\n --lb-foreground: #fff;\n --lb-accent-contrast: 16%;\n --lb-destructive-contrast: 16%;\n --lb-foreground-contrast: 10%;\n\n /**\n * Shadows\n */\n --lb-inset-shadow: inset 0 0 0 1px rgb(255 255 255 / 6%);\n --lb-highlight-shadow: inset 0 0 0 1px rgb(255 255 255 / 12%);\n --lb-elevation-shadow: $lb-elevation-shadow;\n --lb-elevation-shadow-moderate: $lb-elevation-shadow-moderate;\n --lb-tooltip-shadow: $lb-tooltip-shadow;\n\n color-scheme: dark;\n\n &:where(.lb-elevation, .lb-tooltip, .lb-comment-pin) {\n --lb-background: #333;\n --lb-foreground-contrast: 10%;\n }\n\n &:where(.lb-elevation-moderate) {\n --lb-background: #2a2a2a;\n --lb-foreground-contrast: 10%;\n }\n\n .lb-ai-chat-pending {\n animation-name: lb-animation-shimmer-text-invert;\n }\n}\n\n@keyframes lb-animation-shimmer-text-invert {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n rgb(0 0 0 / 50%) 36%,\n rgb(0 0 0 / 95%) 48%,\n rgb(0 0 0 / 95%) 52%,\n rgb(0 0 0 / 50%) 64%\n );\n mask-size: 300% 100%;\n }\n\n from {\n mask-position: 100% 0;\n }\n\n to {\n mask-position: 0% 0;\n }\n}\n","/* stylelint-disable selector-class-pattern */\n\n@import \"./index\";\n\n.lb-root:where(:is(.dark, [data-theme=\"dark\"], [data-dark])),\n:is(.dark, [data-theme=\"dark\"], [data-dark]) :where(.lb-root) {\n @include dark-styles;\n}\n"]}
@@ -1 +1 @@
1
- @keyframes lb-animation-shimmer-text-invert{0%,to{-webkit-mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);-webkit-mask-size:300% 100%;mask-size:300% 100%}0%{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}@media (prefers-color-scheme:dark){.lb-root{--lb-accent:#4af;--lb-destructive:#f77;--lb-background:#222;--lb-foreground:#fff;--lb-accent-contrast:16%;--lb-destructive-contrast:16%;--lb-foreground-contrast:10%;--lb-inset-shadow:inset 0 0 0 1px #ffffff0f;--lb-highlight-shadow:inset 0 0 0 1px #ffffff1f;--lb-elevation-shadow:0 0 0 1px #0000000a,0 2px 6px #00000014,0 8px 26px #0000001f;--lb-elevation-shadow-moderate:0 0 0 1px #0000000a,0 2px 6px #0000000d,0 8px 26px #0000000f;--lb-tooltip-shadow:0 2px 4px #00000014,0 4px 12px #0000001f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.lb-root:where(.lb-elevation,.lb-tooltip){--lb-background:#333;--lb-foreground-contrast:10%}.lb-root:where(.lb-elevation-moderate){--lb-background:#2a2a2a;--lb-foreground-contrast:10%}.lb-root .lb-ai-chat-pending{animation-name:lb-animation-shimmer-text-invert}}
1
+ @keyframes lb-animation-shimmer-text-invert{0%,to{-webkit-mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);mask-image:linear-gradient(90deg,#00000080 36%,#000000f2 48% 52%,#00000080 64%);-webkit-mask-size:300% 100%;mask-size:300% 100%}0%{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}@media (prefers-color-scheme:dark){.lb-root{--lb-accent:#4af;--lb-destructive:#f77;--lb-background:#222;--lb-foreground:#fff;--lb-accent-contrast:16%;--lb-destructive-contrast:16%;--lb-foreground-contrast:10%;--lb-inset-shadow:inset 0 0 0 1px #ffffff0f;--lb-highlight-shadow:inset 0 0 0 1px #ffffff1f;--lb-elevation-shadow:0 0 0 1px #0000000a,0 2px 6px #00000014,0 8px 26px #0000001f;--lb-elevation-shadow-moderate:0 0 0 1px #0000000a,0 2px 6px #0000000d,0 8px 26px #0000000f;--lb-tooltip-shadow:0 2px 4px #00000014,0 4px 12px #0000001f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.lb-root:where(.lb-elevation,.lb-tooltip,.lb-comment-pin){--lb-background:#333;--lb-foreground-contrast:10%}.lb-root:where(.lb-elevation-moderate){--lb-background:#2a2a2a;--lb-foreground-contrast:10%}.lb-root .lb-ai-chat-pending{animation-name:lb-animation-shimmer-text-invert}}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styles/dark/src/styles/dark/index.css","../../src/styles/dark/src/styles/dark/media-query.css"],"names":[],"mappings":"AAwCA,4CAAA,MAAA,uFAAA,CAAA,+EAAA,CAAA,2BAAA,CAAA,mBAAA,CAAA,GAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,yBAAA,CAAA,iBAAA,CAAA,CCtCA,mCACE,SAAA,gBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,oBAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,4BAAA,CAAA,2CAAA,CAAA,+CAAA,CAAA,kFAAA,CAAA,2FAAA,CAAA,4DAAA,CAAA,sBAAA,CAAA,2BAAA,CAAA,iBAAA,CDsBA,0CAAA,oBAAA,CAAA,4BAAA,CAKA,uCAAA,uBAAA,CAAA,4BAAA,CAKA,6BAAA,+CAAA,CAAA","file":"media-query.css","sourcesContent":["@import \"../constants\";\n\n@mixin dark-styles {\n /**\n * Colors\n */\n --lb-accent: #4af;\n --lb-destructive: #f77;\n --lb-background: #222;\n --lb-foreground: #fff;\n --lb-accent-contrast: 16%;\n --lb-destructive-contrast: 16%;\n --lb-foreground-contrast: 10%;\n\n /**\n * Shadows\n */\n --lb-inset-shadow: inset 0 0 0 1px rgb(255 255 255 / 6%);\n --lb-highlight-shadow: inset 0 0 0 1px rgb(255 255 255 / 12%);\n --lb-elevation-shadow: $lb-elevation-shadow;\n --lb-elevation-shadow-moderate: $lb-elevation-shadow-moderate;\n --lb-tooltip-shadow: $lb-tooltip-shadow;\n\n color-scheme: dark;\n\n &:where(.lb-elevation, .lb-tooltip) {\n --lb-background: #333;\n --lb-foreground-contrast: 10%;\n }\n\n &:where(.lb-elevation-moderate) {\n --lb-background: #2a2a2a;\n --lb-foreground-contrast: 10%;\n }\n\n .lb-ai-chat-pending {\n animation-name: lb-animation-shimmer-text-invert;\n }\n}\n\n@keyframes lb-animation-shimmer-text-invert {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n rgb(0 0 0 / 50%) 36%,\n rgb(0 0 0 / 95%) 48%,\n rgb(0 0 0 / 95%) 52%,\n rgb(0 0 0 / 50%) 64%\n );\n mask-size: 300% 100%;\n }\n\n from {\n mask-position: 100% 0;\n }\n\n to {\n mask-position: 0% 0;\n }\n}\n","@import \"./index\";\n\n@media (prefers-color-scheme: dark) {\n .lb-root {\n @include dark-styles;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/styles/dark/src/styles/dark/index.css","../../src/styles/dark/src/styles/dark/media-query.css"],"names":[],"mappings":"AAwCA,4CAAA,MAAA,uFAAA,CAAA,+EAAA,CAAA,2BAAA,CAAA,mBAAA,CAAA,GAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,yBAAA,CAAA,iBAAA,CAAA,CCtCA,mCACE,SAAA,gBAAA,CAAA,qBAAA,CAAA,oBAAA,CAAA,oBAAA,CAAA,wBAAA,CAAA,6BAAA,CAAA,4BAAA,CAAA,2CAAA,CAAA,+CAAA,CAAA,kFAAA,CAAA,2FAAA,CAAA,4DAAA,CAAA,sBAAA,CAAA,2BAAA,CAAA,iBAAA,CDsBA,0DAAA,oBAAA,CAAA,4BAAA,CAKA,uCAAA,uBAAA,CAAA,4BAAA,CAKA,6BAAA,+CAAA,CAAA","file":"media-query.css","sourcesContent":["@import \"../constants\";\n\n@mixin dark-styles {\n /**\n * Colors\n */\n --lb-accent: #4af;\n --lb-destructive: #f77;\n --lb-background: #222;\n --lb-foreground: #fff;\n --lb-accent-contrast: 16%;\n --lb-destructive-contrast: 16%;\n --lb-foreground-contrast: 10%;\n\n /**\n * Shadows\n */\n --lb-inset-shadow: inset 0 0 0 1px rgb(255 255 255 / 6%);\n --lb-highlight-shadow: inset 0 0 0 1px rgb(255 255 255 / 12%);\n --lb-elevation-shadow: $lb-elevation-shadow;\n --lb-elevation-shadow-moderate: $lb-elevation-shadow-moderate;\n --lb-tooltip-shadow: $lb-tooltip-shadow;\n\n color-scheme: dark;\n\n &:where(.lb-elevation, .lb-tooltip, .lb-comment-pin) {\n --lb-background: #333;\n --lb-foreground-contrast: 10%;\n }\n\n &:where(.lb-elevation-moderate) {\n --lb-background: #2a2a2a;\n --lb-foreground-contrast: 10%;\n }\n\n .lb-ai-chat-pending {\n animation-name: lb-animation-shimmer-text-invert;\n }\n}\n\n@keyframes lb-animation-shimmer-text-invert {\n from,\n to {\n mask-image: linear-gradient(\n 90deg,\n rgb(0 0 0 / 50%) 36%,\n rgb(0 0 0 / 95%) 48%,\n rgb(0 0 0 / 95%) 52%,\n rgb(0 0 0 / 50%) 64%\n );\n mask-size: 300% 100%;\n }\n\n from {\n mask-position: 100% 0;\n }\n\n to {\n mask-position: 0% 0;\n }\n}\n","@import \"./index\";\n\n@media (prefers-color-scheme: dark) {\n .lb-root {\n @include dark-styles;\n }\n}\n"]}