@liveblocks/react-ui 3.15.0-thread2 → 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 (142) hide show
  1. package/README.md +6 -16
  2. package/dist/_private/index.cjs +1 -5
  3. package/dist/_private/index.cjs.map +1 -1
  4. package/dist/_private/index.d.cts +4 -4
  5. package/dist/_private/index.d.ts +4 -4
  6. package/dist/_private/index.js +1 -2
  7. package/dist/_private/index.js.map +1 -1
  8. package/dist/components/AvatarStack.cjs +117 -0
  9. package/dist/components/AvatarStack.cjs.map +1 -0
  10. package/dist/components/AvatarStack.js +115 -0
  11. package/dist/components/AvatarStack.js.map +1 -0
  12. package/dist/components/Comment.cjs +10 -28
  13. package/dist/components/Comment.cjs.map +1 -1
  14. package/dist/components/Comment.js +12 -11
  15. package/dist/components/Comment.js.map +1 -1
  16. package/dist/components/CommentPin.cjs +36 -0
  17. package/dist/components/CommentPin.cjs.map +1 -0
  18. package/dist/components/CommentPin.js +34 -0
  19. package/dist/components/CommentPin.js.map +1 -0
  20. package/dist/components/Composer.cjs +2 -4
  21. package/dist/components/Composer.cjs.map +1 -1
  22. package/dist/components/Composer.js +3 -5
  23. package/dist/components/Composer.js.map +1 -1
  24. package/dist/components/Cursor.cjs +40 -0
  25. package/dist/components/Cursor.cjs.map +1 -0
  26. package/dist/components/Cursor.js +38 -0
  27. package/dist/components/Cursor.js.map +1 -0
  28. package/dist/components/Cursors.cjs +256 -0
  29. package/dist/components/Cursors.cjs.map +1 -0
  30. package/dist/components/Cursors.js +254 -0
  31. package/dist/components/Cursors.js.map +1 -0
  32. package/dist/components/FloatingComposer.cjs +82 -0
  33. package/dist/components/FloatingComposer.cjs.map +1 -0
  34. package/dist/components/FloatingComposer.js +80 -0
  35. package/dist/components/FloatingComposer.js.map +1 -0
  36. package/dist/components/FloatingThread.cjs +82 -0
  37. package/dist/components/FloatingThread.cjs.map +1 -0
  38. package/dist/components/FloatingThread.js +80 -0
  39. package/dist/components/FloatingThread.js.map +1 -0
  40. package/dist/components/InboxNotification.cjs +4 -6
  41. package/dist/components/InboxNotification.cjs.map +1 -1
  42. package/dist/components/InboxNotification.js +5 -7
  43. package/dist/components/InboxNotification.js.map +1 -1
  44. package/dist/components/Thread.cjs +19 -28
  45. package/dist/components/Thread.cjs.map +1 -1
  46. package/dist/components/Thread.js +19 -9
  47. package/dist/components/Thread.js.map +1 -1
  48. package/dist/components/internal/AiComposer.cjs +1 -2
  49. package/dist/components/internal/AiComposer.cjs.map +1 -1
  50. package/dist/components/internal/AiComposer.js +1 -2
  51. package/dist/components/internal/AiComposer.js.map +1 -1
  52. package/dist/components/internal/Avatar.cjs +10 -13
  53. package/dist/components/internal/Avatar.cjs.map +1 -1
  54. package/dist/components/internal/Avatar.js +11 -14
  55. package/dist/components/internal/Avatar.js.map +1 -1
  56. package/dist/components/internal/CodeBlock.cjs +1 -2
  57. package/dist/components/internal/CodeBlock.cjs.map +1 -1
  58. package/dist/components/internal/CodeBlock.js +1 -2
  59. package/dist/components/internal/CodeBlock.js.map +1 -1
  60. package/dist/components/internal/Dropdown.cjs +7 -28
  61. package/dist/components/internal/Dropdown.cjs.map +1 -1
  62. package/dist/components/internal/Dropdown.js +7 -7
  63. package/dist/components/internal/Dropdown.js.map +1 -1
  64. package/dist/components/internal/EmojiPicker.cjs +6 -27
  65. package/dist/components/internal/EmojiPicker.cjs.map +1 -1
  66. package/dist/components/internal/EmojiPicker.js +6 -6
  67. package/dist/components/internal/EmojiPicker.js.map +1 -1
  68. package/dist/components/internal/List.cjs +2 -2
  69. package/dist/components/internal/List.cjs.map +1 -1
  70. package/dist/components/internal/List.js +2 -2
  71. package/dist/components/internal/List.js.map +1 -1
  72. package/dist/components/internal/Tooltip.cjs +7 -28
  73. package/dist/components/internal/Tooltip.cjs.map +1 -1
  74. package/dist/components/internal/Tooltip.js +7 -7
  75. package/dist/components/internal/Tooltip.js.map +1 -1
  76. package/dist/index.cjs +12 -0
  77. package/dist/index.cjs.map +1 -1
  78. package/dist/index.d.cts +232 -137
  79. package/dist/index.d.ts +232 -137
  80. package/dist/index.js +6 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/primitives/AiComposer/index.cjs +5 -4
  83. package/dist/primitives/AiComposer/index.cjs.map +1 -1
  84. package/dist/primitives/AiComposer/index.js +5 -4
  85. package/dist/primitives/AiComposer/index.js.map +1 -1
  86. package/dist/primitives/AiMessage/index.cjs +2 -2
  87. package/dist/primitives/AiMessage/index.cjs.map +1 -1
  88. package/dist/primitives/AiMessage/index.js +2 -2
  89. package/dist/primitives/AiMessage/index.js.map +1 -1
  90. package/dist/primitives/Collapsible/index.cjs +4 -4
  91. package/dist/primitives/Collapsible/index.cjs.map +1 -1
  92. package/dist/primitives/Collapsible/index.js +4 -4
  93. package/dist/primitives/Collapsible/index.js.map +1 -1
  94. package/dist/primitives/Comment/index.cjs +4 -4
  95. package/dist/primitives/Comment/index.cjs.map +1 -1
  96. package/dist/primitives/Comment/index.js +4 -4
  97. package/dist/primitives/Comment/index.js.map +1 -1
  98. package/dist/primitives/Composer/index.cjs +23 -35
  99. package/dist/primitives/Composer/index.cjs.map +1 -1
  100. package/dist/primitives/Composer/index.js +23 -16
  101. package/dist/primitives/Composer/index.js.map +1 -1
  102. package/dist/primitives/Duration.cjs +2 -2
  103. package/dist/primitives/Duration.cjs.map +1 -1
  104. package/dist/primitives/Duration.js +2 -2
  105. package/dist/primitives/Duration.js.map +1 -1
  106. package/dist/primitives/FileSize.cjs +2 -2
  107. package/dist/primitives/FileSize.cjs.map +1 -1
  108. package/dist/primitives/FileSize.js +2 -2
  109. package/dist/primitives/FileSize.js.map +1 -1
  110. package/dist/primitives/Markdown.cjs +2 -2
  111. package/dist/primitives/Markdown.cjs.map +1 -1
  112. package/dist/primitives/Markdown.js +2 -2
  113. package/dist/primitives/Markdown.js.map +1 -1
  114. package/dist/primitives/Timestamp.cjs +2 -2
  115. package/dist/primitives/Timestamp.cjs.map +1 -1
  116. package/dist/primitives/Timestamp.js +2 -2
  117. package/dist/primitives/Timestamp.js.map +1 -1
  118. package/dist/utils/Portal.cjs +2 -2
  119. package/dist/utils/Portal.cjs.map +1 -1
  120. package/dist/utils/Portal.js +2 -2
  121. package/dist/utils/Portal.js.map +1 -1
  122. package/dist/utils/animation-loop.cjs +44 -0
  123. package/dist/utils/animation-loop.cjs.map +1 -0
  124. package/dist/utils/animation-loop.js +42 -0
  125. package/dist/utils/animation-loop.js.map +1 -0
  126. package/dist/utils/use-pre-resolve-user.cjs +18 -0
  127. package/dist/utils/use-pre-resolve-user.cjs.map +1 -0
  128. package/dist/utils/use-pre-resolve-user.js +16 -0
  129. package/dist/utils/use-pre-resolve-user.js.map +1 -0
  130. package/dist/version.cjs +1 -1
  131. package/dist/version.cjs.map +1 -1
  132. package/dist/version.js +1 -1
  133. package/dist/version.js.map +1 -1
  134. package/package.json +7 -10
  135. package/src/styles/dark/index.css +1 -1
  136. package/src/styles/index.css +252 -4
  137. package/styles/dark/attributes.css +1 -1
  138. package/styles/dark/attributes.css.map +1 -1
  139. package/styles/dark/media-query.css +1 -1
  140. package/styles/dark/media-query.css.map +1 -1
  141. package/styles.css +1 -1
  142. 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;;;;"}
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-thread2" === "string" && "3.15.0-thread2";
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-thread2" === "string" && "3.15.0-thread2";
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-thread2",
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-thread2",
81
- "@liveblocks/core": "3.15.0-thread2",
82
- "@liveblocks/react": "3.15.0-thread2",
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"]}