@tempots/beatui 0.82.0 → 0.82.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/_commonjsHelpers-DKOUU3wS.cjs +1 -0
  2. package/dist/_commonjsHelpers-DaMA6jEr.js +8 -0
  3. package/dist/auth/index.cjs.js +1 -1
  4. package/dist/auth/index.es.js +63 -1351
  5. package/dist/auth-divider-BqZPH1-z.cjs +1 -0
  6. package/dist/auth-divider-Wr-S16kF.js +1355 -0
  7. package/dist/beatui.css +1347 -0
  8. package/dist/beatui.tailwind.css +1347 -0
  9. package/dist/better-auth/index.cjs.js +1 -0
  10. package/dist/better-auth/index.es.js +754 -0
  11. package/dist/{deep-merge-CiOwVWn8.js → deep-merge-BYm0y62g.js} +34 -33
  12. package/dist/deep-merge-d7sf0xmN.cjs +1 -0
  13. package/dist/duration-input-B9UNmUCh.cjs +1 -0
  14. package/dist/{duration-input-B3vnnwBZ.js → duration-input-DqcJbxKD.js} +23 -22
  15. package/dist/editor-toolbar-group--a-xgsJw.cjs +1 -0
  16. package/dist/editor-toolbar-group-CVpl5mxF.js +31 -0
  17. package/dist/{hls.light.min-Bhrf47iR.cjs → hls.light.min-C6xKDzRR.cjs} +1 -1
  18. package/dist/{hls.light.min-C6VwviEa.js → hls.light.min-hEMf_E8u.js} +1 -1
  19. package/dist/{index-C5YCCgnn.cjs → index-05UbKOYe.cjs} +1 -1
  20. package/dist/{index-ChsRjiIp.cjs → index-Bt7FYl80.cjs} +19 -19
  21. package/dist/{index-DT6-HMMz.js → index-C2Lq1m45.js} +1432 -1462
  22. package/dist/{index-CiAVfKIZ.js → index-lYhXnu6I.js} +1 -1
  23. package/dist/index.cjs.js +4 -4
  24. package/dist/index.es.js +2326 -2680
  25. package/dist/input-container-C6qEIjcA.cjs +1 -0
  26. package/dist/input-container-DiCjOzR2.js +247 -0
  27. package/dist/json-schema/index.cjs.js +1 -1
  28. package/dist/json-schema/index.es.js +33 -32
  29. package/dist/json-schema-display/index.cjs.js +1 -1
  30. package/dist/json-schema-display/index.es.js +1 -1
  31. package/dist/json-structure/index.cjs.js +1 -1
  32. package/dist/json-structure/index.es.js +542 -700
  33. package/dist/lexical/index.cjs.js +46 -0
  34. package/dist/lexical/index.es.js +21370 -0
  35. package/dist/lexical.css +1124 -0
  36. package/dist/menu-CZzRsQP_.js +372 -0
  37. package/dist/menu-ClrU72xH.cjs +1 -0
  38. package/dist/modal-I5srcntN.cjs +1 -0
  39. package/dist/modal-v3u2Fpnd.js +488 -0
  40. package/dist/{notice-CZHWWwOQ.js → notice-BuZvdvZh.js} +48 -47
  41. package/dist/notice-CLDdy1MW.cjs +1 -0
  42. package/dist/{oneof-branch-detection-C8g3eWnx.cjs → oneof-branch-detection-DsM1K5xc.cjs} +1 -1
  43. package/dist/{oneof-branch-detection-BVNoKU9d.js → oneof-branch-detection-Dt8ss9lc.js} +1 -1
  44. package/dist/prosemirror/index.cjs.js +1 -1
  45. package/dist/prosemirror/index.es.js +1 -1
  46. package/dist/session-id-3KiilioY.js +8 -0
  47. package/dist/session-id-B5lJMzbB.cjs +1 -0
  48. package/dist/styles-url-B2dzXrYt.cjs +1 -0
  49. package/dist/styles-url-Cw_mxshe.js +4 -0
  50. package/dist/text-input-B3VBat1k.js +44 -0
  51. package/dist/text-input-Ds8e7Z1G.cjs +1 -0
  52. package/dist/{toolbar-DR2Zd4Oo.js → toolbar-D994_E_s.js} +4 -4
  53. package/dist/toolbar-x0_8lmKu.cjs +1 -0
  54. package/dist/types/better-auth/bridge.d.ts +2 -0
  55. package/dist/types/better-auth/callbacks.d.ts +6 -0
  56. package/dist/types/better-auth/components/authenticated.d.ts +4 -0
  57. package/dist/types/better-auth/components/better-auth-container.d.ts +4 -0
  58. package/dist/types/better-auth/components/better-auth-modal.d.ts +4 -0
  59. package/dist/types/better-auth/components/magic-link-form.d.ts +7 -0
  60. package/dist/types/better-auth/components/passkey-management.d.ts +6 -0
  61. package/dist/types/better-auth/components/passkey-signin.d.ts +12 -0
  62. package/dist/types/better-auth/components/two-factor-setup.d.ts +8 -0
  63. package/dist/types/better-auth/components/two-factor-verify.d.ts +10 -0
  64. package/dist/types/better-auth/i18n/default.d.ts +29 -0
  65. package/dist/types/better-auth/i18n/locales/en.d.ts +28 -0
  66. package/dist/types/better-auth/i18n/translations.d.ts +27 -0
  67. package/dist/types/better-auth/index.d.ts +22 -0
  68. package/dist/types/better-auth/provider.d.ts +6 -0
  69. package/dist/types/better-auth/session.d.ts +14 -0
  70. package/dist/types/better-auth/social-mapping.d.ts +2 -0
  71. package/dist/types/better-auth/types.d.ts +164 -0
  72. package/dist/types/components/auth/auth-container.d.ts +1 -1
  73. package/dist/types/components/auth/social-providers.d.ts +1 -1
  74. package/dist/types/components/auth/types.d.ts +2 -0
  75. package/dist/types/components/editor-toolbar/editor-toolbar-button.d.ts +16 -0
  76. package/dist/types/components/editor-toolbar/editor-toolbar-group.d.ts +9 -0
  77. package/dist/types/components/editor-toolbar/index.d.ts +2 -0
  78. package/dist/types/components/json-structure/controls/control-utils.d.ts +19 -0
  79. package/dist/types/components/json-structure/controls/index.d.ts +1 -0
  80. package/dist/types/components/lexical/bare-editor.d.ts +29 -0
  81. package/dist/types/components/lexical/code/index.d.ts +1 -0
  82. package/dist/types/components/lexical/code/language-selector.d.ts +13 -0
  83. package/dist/types/components/lexical/contextual-editor.d.ts +22 -0
  84. package/dist/types/components/lexical/docked-editor.d.ts +23 -0
  85. package/dist/types/components/lexical/floating/block-handle.d.ts +16 -0
  86. package/dist/types/components/lexical/floating/floating-toolbar.d.ts +12 -0
  87. package/dist/types/components/lexical/floating/index.d.ts +6 -0
  88. package/dist/types/components/lexical/floating/slash-command-palette.d.ts +20 -0
  89. package/dist/types/components/lexical/index.d.ts +8 -0
  90. package/dist/types/components/lexical/lexical-editor-input.d.ts +30 -0
  91. package/dist/types/components/lexical/table/index.d.ts +1 -0
  92. package/dist/types/components/lexical/table/table-controls.d.ts +12 -0
  93. package/dist/types/components/lexical/toolbar/index.d.ts +6 -0
  94. package/dist/types/components/lexical/toolbar/lexical-toolbar.d.ts +12 -0
  95. package/dist/types/components/lexical/toolbar/toolbar-button.d.ts +1 -0
  96. package/dist/types/components/lexical/toolbar/toolbar-group.d.ts +1 -0
  97. package/dist/types/components/lexical/toolbar/toolbar-helpers.d.ts +30 -0
  98. package/dist/types/components/prosemirror/etoolbar-button.d.ts +1 -11
  99. package/dist/types/components/prosemirror/etoolbar-group.d.ts +1 -4
  100. package/dist/types/lexical/commands/index.d.ts +17 -0
  101. package/dist/types/lexical/headless.d.ts +39 -0
  102. package/dist/types/lexical/horizontal-rule-node.d.ts +20 -0
  103. package/dist/types/lexical/index.d.ts +20 -0
  104. package/dist/types/lexical/lazy-loader.d.ts +35 -0
  105. package/dist/types/lexical/nodes.d.ts +29 -0
  106. package/dist/types/lexical/plugins/auto-link.d.ts +7 -0
  107. package/dist/types/lexical/plugins/clipboard.d.ts +11 -0
  108. package/dist/types/lexical/plugins/code-shiki.d.ts +11 -0
  109. package/dist/types/lexical/plugins/code.d.ts +7 -0
  110. package/dist/types/lexical/plugins/dragon.d.ts +6 -0
  111. package/dist/types/lexical/plugins/file-io.d.ts +10 -0
  112. package/dist/types/lexical/plugins/hashtag.d.ts +7 -0
  113. package/dist/types/lexical/plugins/history.d.ts +7 -0
  114. package/dist/types/lexical/plugins/horizontal-rule.d.ts +12 -0
  115. package/dist/types/lexical/plugins/html-io.d.ts +9 -0
  116. package/dist/types/lexical/plugins/index.d.ts +24 -0
  117. package/dist/types/lexical/plugins/link.d.ts +6 -0
  118. package/dist/types/lexical/plugins/list.d.ts +6 -0
  119. package/dist/types/lexical/plugins/mark.d.ts +15 -0
  120. package/dist/types/lexical/plugins/markdown-io.d.ts +13 -0
  121. package/dist/types/lexical/plugins/offset.d.ts +6 -0
  122. package/dist/types/lexical/plugins/overflow.d.ts +7 -0
  123. package/dist/types/lexical/plugins/plain-text.d.ts +6 -0
  124. package/dist/types/lexical/plugins/rich-text.d.ts +6 -0
  125. package/dist/types/lexical/plugins/selection.d.ts +6 -0
  126. package/dist/types/lexical/plugins/slash-commands.d.ts +26 -0
  127. package/dist/types/lexical/plugins/table.d.ts +11 -0
  128. package/dist/types/lexical/plugins/text.d.ts +13 -0
  129. package/dist/types/lexical/plugins/yjs.d.ts +9 -0
  130. package/dist/types/lexical/styles-url.d.ts +2 -0
  131. package/dist/types/lexical/styles.d.ts +2 -0
  132. package/dist/types/lexical/types.d.ts +634 -0
  133. package/dist/types/lexical-i18n/default.d.ts +92 -0
  134. package/dist/types/lexical-i18n/index.d.ts +21 -0
  135. package/dist/types/lexical-i18n/locales/ar.d.ts +91 -0
  136. package/dist/types/lexical-i18n/locales/de.d.ts +91 -0
  137. package/dist/types/lexical-i18n/locales/en.d.ts +91 -0
  138. package/dist/types/lexical-i18n/locales/es.d.ts +91 -0
  139. package/dist/types/lexical-i18n/locales/fa.d.ts +91 -0
  140. package/dist/types/lexical-i18n/locales/fr.d.ts +91 -0
  141. package/dist/types/lexical-i18n/locales/he.d.ts +91 -0
  142. package/dist/types/lexical-i18n/locales/hi.d.ts +91 -0
  143. package/dist/types/lexical-i18n/locales/it.d.ts +91 -0
  144. package/dist/types/lexical-i18n/locales/ja.d.ts +91 -0
  145. package/dist/types/lexical-i18n/locales/ko.d.ts +91 -0
  146. package/dist/types/lexical-i18n/locales/nl.d.ts +91 -0
  147. package/dist/types/lexical-i18n/locales/pl.d.ts +91 -0
  148. package/dist/types/lexical-i18n/locales/pt.d.ts +91 -0
  149. package/dist/types/lexical-i18n/locales/ru.d.ts +91 -0
  150. package/dist/types/lexical-i18n/locales/tr.d.ts +91 -0
  151. package/dist/types/lexical-i18n/locales/ur.d.ts +91 -0
  152. package/dist/types/lexical-i18n/locales/vi.d.ts +91 -0
  153. package/dist/types/lexical-i18n/locales/zh.d.ts +91 -0
  154. package/dist/types/lexical-i18n/translations.d.ts +21 -0
  155. package/dist/use-animated-toggle-ChycsEoj.js +175 -0
  156. package/dist/use-animated-toggle-DR6CyMac.cjs +1 -0
  157. package/dist/{use-form-CgZyrACX.js → use-form-B56E_x5Y.js} +83 -88
  158. package/dist/use-form-Cnp3XQ5X.cjs +2 -0
  159. package/dist/widget-customization-Dk7XcVly.cjs +1 -0
  160. package/dist/{widget-customization-DRA7E9Zf.js → widget-customization-Ds9sicAg.js} +106 -105
  161. package/package.json +48 -3
  162. package/dist/_commonjsHelpers-C6fGbg64.js +0 -6
  163. package/dist/_commonjsHelpers-DwGv2jUC.cjs +0 -1
  164. package/dist/deep-merge-DxZqCkE5.cjs +0 -1
  165. package/dist/duration-input-Dg5SX3lM.cjs +0 -1
  166. package/dist/modal-D2xE47kr.cjs +0 -1
  167. package/dist/modal-hkQD1bqZ.js +0 -655
  168. package/dist/notice-C0SmlheE.cjs +0 -1
  169. package/dist/text-input-CByq5OIo.cjs +0 -1
  170. package/dist/text-input-CFJntP7G.js +0 -287
  171. package/dist/toolbar-TPWYzoiF.cjs +0 -1
  172. package/dist/use-form-JjeKCINk.cjs +0 -2
  173. package/dist/widget-customization-G-QLB1rw.cjs +0 -1
@@ -1649,6 +1649,229 @@ a:focus-visible {
1649
1649
  background-color: var(--color-white);
1650
1650
  }
1651
1651
 
1652
+ /* Two-Factor Authentication Component */
1653
+ .bc-two-factor {
1654
+ display: flex;
1655
+ flex-direction: column;
1656
+ gap: var(--spacing-stack-xl, var(--spacing-xl));
1657
+ width: 100%;
1658
+ }
1659
+
1660
+ .bc-two-factor__form {
1661
+ display: flex;
1662
+ flex-direction: column;
1663
+ gap: var(--spacing-stack-xl, var(--spacing-xl));
1664
+ }
1665
+
1666
+ /* Method selector */
1667
+ .bc-two-factor__methods {
1668
+ display: flex;
1669
+ gap: var(--spacing-sm);
1670
+ border-bottom: 1px solid var(--color-neutral-200);
1671
+ padding-bottom: var(--spacing-sm);
1672
+ }
1673
+
1674
+ .b-dark .bc-two-factor__methods {
1675
+ border-bottom-color: var(--color-neutral-700);
1676
+ }
1677
+
1678
+ .bc-two-factor__method-button {
1679
+ background: none;
1680
+ border: none;
1681
+ padding: var(--spacing-xs) var(--spacing-sm);
1682
+ font-size: var(--font-size-sm);
1683
+ color: var(--text-muted-light);
1684
+ cursor: pointer;
1685
+ border-radius: var(--radius-sm);
1686
+ transition: all
1687
+ var(--motion-transition-fast, var(--motion-duration-fast, 0.2s))
1688
+ var(--motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));
1689
+ }
1690
+
1691
+ .bc-two-factor__method-button:hover {
1692
+ color: var(--text-normal-light);
1693
+ background-color: var(--color-neutral-100);
1694
+ }
1695
+
1696
+ .bc-two-factor__method-button--active {
1697
+ color: var(--color-primary-600);
1698
+ font-weight: var(--font-weight-semibold);
1699
+ border-bottom: 2px solid var(--color-primary-600);
1700
+ }
1701
+
1702
+ .b-dark .bc-two-factor__method-button {
1703
+ color: var(--text-muted-dark);
1704
+ }
1705
+
1706
+ .b-dark .bc-two-factor__method-button:hover {
1707
+ color: var(--text-normal-dark);
1708
+ background-color: var(--color-neutral-800);
1709
+ }
1710
+
1711
+ .b-dark .bc-two-factor__method-button--active {
1712
+ color: var(--color-primary-400);
1713
+ border-bottom-color: var(--color-primary-400);
1714
+ }
1715
+
1716
+ /* TOTP URI display */
1717
+ .bc-two-factor__totp-uri {
1718
+ display: flex;
1719
+ flex-direction: column;
1720
+ gap: var(--spacing-md);
1721
+ align-items: center;
1722
+ }
1723
+
1724
+ .bc-two-factor__code-display {
1725
+ display: block;
1726
+ padding: var(--spacing-md);
1727
+ background-color: var(--color-neutral-100);
1728
+ border-radius: var(--radius-md);
1729
+ font-family: var(--font-mono);
1730
+ font-size: var(--font-size-xs);
1731
+ word-break: break-all;
1732
+ text-align: center;
1733
+ }
1734
+
1735
+ .b-dark .bc-two-factor__code-display {
1736
+ background-color: var(--color-neutral-800);
1737
+ }
1738
+
1739
+ /* Backup codes */
1740
+ .bc-two-factor__backup-codes {
1741
+ display: flex;
1742
+ flex-direction: column;
1743
+ gap: var(--spacing-sm);
1744
+ }
1745
+
1746
+ .bc-two-factor__backup-codes ul {
1747
+ display: grid;
1748
+ grid-template-columns: repeat(2, 1fr);
1749
+ gap: var(--spacing-xs);
1750
+ list-style: none;
1751
+ margin: 0;
1752
+ padding: 0;
1753
+ }
1754
+
1755
+ .bc-two-factor__backup-codes li {
1756
+ padding: var(--spacing-xs) var(--spacing-sm);
1757
+ background-color: var(--color-neutral-100);
1758
+ border-radius: var(--radius-sm);
1759
+ font-family: var(--font-mono);
1760
+ font-size: var(--font-size-sm);
1761
+ text-align: center;
1762
+ }
1763
+
1764
+ .b-dark .bc-two-factor__backup-codes li {
1765
+ background-color: var(--color-neutral-800);
1766
+ }
1767
+
1768
+ /* Complete state */
1769
+ .bc-two-factor__complete {
1770
+ text-align: center;
1771
+ }
1772
+
1773
+ /* Code input */
1774
+ .bc-two-factor__code-input {
1775
+ text-align: center;
1776
+ letter-spacing: 0.5em;
1777
+ font-size: var(--font-size-xl);
1778
+ font-family: var(--font-mono);
1779
+ }
1780
+
1781
+ /* Reduced motion support */
1782
+ @media (prefers-reduced-motion: reduce) {
1783
+ .bc-two-factor__method-button {
1784
+ transition: none;
1785
+ }
1786
+ }
1787
+
1788
+ /* Passkey Components */
1789
+
1790
+ /* Passkey management */
1791
+ .bc-passkey-management {
1792
+ display: flex;
1793
+ flex-direction: column;
1794
+ gap: var(--spacing-xl);
1795
+ width: 100%;
1796
+ }
1797
+
1798
+ /* Passkey list */
1799
+ .bc-passkey-list {
1800
+ display: flex;
1801
+ flex-direction: column;
1802
+ gap: var(--spacing-sm);
1803
+ }
1804
+
1805
+ .bc-passkey-item {
1806
+ display: flex;
1807
+ align-items: center;
1808
+ justify-content: space-between;
1809
+ gap: var(--spacing-md);
1810
+ padding: var(--spacing-sm) var(--spacing-md);
1811
+ background-color: var(--color-neutral-50);
1812
+ border-radius: var(--radius-md);
1813
+ border: 1px solid var(--color-neutral-200);
1814
+ }
1815
+
1816
+ .b-dark .bc-passkey-item {
1817
+ background-color: var(--color-neutral-900);
1818
+ border-color: var(--color-neutral-700);
1819
+ }
1820
+
1821
+ .bc-passkey-item__info {
1822
+ display: flex;
1823
+ flex-direction: column;
1824
+ gap: var(--spacing-xs);
1825
+ flex: 1;
1826
+ min-width: 0;
1827
+ }
1828
+
1829
+ .bc-passkey-item__name {
1830
+ font-size: var(--font-size-sm);
1831
+ font-weight: var(--font-weight-medium);
1832
+ color: var(--text-normal-light);
1833
+ overflow: hidden;
1834
+ text-overflow: ellipsis;
1835
+ white-space: nowrap;
1836
+ }
1837
+
1838
+ .b-dark .bc-passkey-item__name {
1839
+ color: var(--text-normal-dark);
1840
+ }
1841
+
1842
+ .bc-passkey-item__date {
1843
+ font-size: var(--font-size-xs);
1844
+ color: var(--text-muted-light);
1845
+ }
1846
+
1847
+ .b-dark .bc-passkey-item__date {
1848
+ color: var(--text-muted-dark);
1849
+ }
1850
+
1851
+ .bc-passkey-item__edit {
1852
+ flex: 1;
1853
+ min-width: 0;
1854
+ }
1855
+
1856
+ .bc-passkey-item__actions {
1857
+ display: flex;
1858
+ gap: var(--spacing-xs);
1859
+ flex-shrink: 0;
1860
+ }
1861
+
1862
+ /* Add passkey */
1863
+ .bc-passkey-add {
1864
+ display: flex;
1865
+ flex-direction: column;
1866
+ gap: var(--spacing-md);
1867
+ }
1868
+
1869
+ /* Sign-in button */
1870
+ .bc-passkey-signin {
1871
+ width: 100%;
1872
+ justify-content: center;
1873
+ }
1874
+
1652
1875
  /* Badge Component */
1653
1876
  .bc-badge {
1654
1877
  --badge-bg: transparent;
@@ -5346,6 +5569,1130 @@ a:focus-visible {
5346
5569
  color: var(--color-danger-400);
5347
5570
  }
5348
5571
 
5572
+ @layer components {
5573
+ /* Lexical Editor Component */
5574
+
5575
+ /* Container wrapper for toolbar + editor */
5576
+ .bc-lexical-editor-container {
5577
+ display: flex;
5578
+ flex-direction: column;
5579
+ border: 1px solid var(--color-neutral-200);
5580
+ border-radius: var(--radius-control, var(--radius-md));
5581
+ background-color: var(--color-neutral-50);
5582
+ overflow: hidden;
5583
+ transition: all
5584
+ var(--motion-transition-fast, var(--motion-duration-fast, 0.2s))
5585
+ var(--motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));
5586
+ }
5587
+
5588
+ /* Fixed height mode on container: fill parent, constrain children */
5589
+ .bc-lexical-editor-container--fixed {
5590
+ height: 100%;
5591
+ }
5592
+
5593
+ /* Editor surface (contenteditable) */
5594
+ .bc-lexical-editor {
5595
+ position: relative;
5596
+ min-height: 150px;
5597
+ padding: 1rem;
5598
+ outline: none;
5599
+ font-family: inherit;
5600
+ font-size: inherit;
5601
+ line-height: 1.6;
5602
+ color: var(--color-neutral-900);
5603
+ background-color: var(--color-white);
5604
+ }
5605
+
5606
+ /* Fixed height mode: fill container, scroll on overflow */
5607
+ .bc-lexical-editor--fixed {
5608
+ flex: 1 1 0;
5609
+ overflow-y: auto;
5610
+ }
5611
+
5612
+ /* Auto height mode: grow with content */
5613
+ .bc-lexical-editor--auto {
5614
+ overflow-y: visible;
5615
+ }
5616
+
5617
+ /* Focus state */
5618
+ .bc-lexical-editor-container:focus-within {
5619
+ border-color: var(--color-primary-500);
5620
+ box-shadow: 0 0 0 2px var(--color-primary-100);
5621
+ }
5622
+
5623
+ /* Error state */
5624
+ .bc-lexical-editor-container--error {
5625
+ border-color: var(--color-danger-600);
5626
+ }
5627
+
5628
+ .bc-lexical-editor-container--error:focus-within {
5629
+ border-color: var(--color-danger-600);
5630
+ box-shadow: 0 0 0 2px var(--color-danger-100);
5631
+ }
5632
+
5633
+ /* Read-only state */
5634
+ .bc-lexical-editor--readonly {
5635
+ cursor: default;
5636
+ background-color: var(--color-neutral-100);
5637
+ color: var(--color-neutral-700);
5638
+ }
5639
+
5640
+ /* Placeholder styling */
5641
+ .bc-lexical-editor [data-lexical-placeholder] {
5642
+ color: var(--color-neutral-400);
5643
+ pointer-events: none;
5644
+ position: absolute;
5645
+ top: 1rem;
5646
+ left: 1rem;
5647
+ user-select: none;
5648
+ font-style: italic;
5649
+ }
5650
+
5651
+ /* Typography within editor */
5652
+ .bc-lexical-editor h1 {
5653
+ font-size: 2rem;
5654
+ font-weight: 700;
5655
+ line-height: 1.2;
5656
+ margin-top: 1.5rem;
5657
+ margin-bottom: 0.75rem;
5658
+ }
5659
+
5660
+ .bc-lexical-editor h1:first-child {
5661
+ margin-top: 0;
5662
+ }
5663
+
5664
+ .bc-lexical-editor h2 {
5665
+ font-size: 1.5rem;
5666
+ font-weight: 700;
5667
+ line-height: 1.3;
5668
+ margin-top: 1.25rem;
5669
+ margin-bottom: 0.625rem;
5670
+ }
5671
+
5672
+ .bc-lexical-editor h2:first-child {
5673
+ margin-top: 0;
5674
+ }
5675
+
5676
+ .bc-lexical-editor h3 {
5677
+ font-size: 1.25rem;
5678
+ font-weight: 600;
5679
+ line-height: 1.4;
5680
+ margin-top: 1rem;
5681
+ margin-bottom: 0.5rem;
5682
+ }
5683
+
5684
+ .bc-lexical-editor h3:first-child {
5685
+ margin-top: 0;
5686
+ }
5687
+
5688
+ .bc-lexical-editor h4 {
5689
+ font-size: 1.125rem;
5690
+ font-weight: 600;
5691
+ line-height: 1.5;
5692
+ margin-top: 0.875rem;
5693
+ margin-bottom: 0.5rem;
5694
+ }
5695
+
5696
+ .bc-lexical-editor h4:first-child {
5697
+ margin-top: 0;
5698
+ }
5699
+
5700
+ .bc-lexical-editor h5 {
5701
+ font-size: 1rem;
5702
+ font-weight: 600;
5703
+ line-height: 1.5;
5704
+ margin-top: 0.75rem;
5705
+ margin-bottom: 0.5rem;
5706
+ }
5707
+
5708
+ .bc-lexical-editor h5:first-child {
5709
+ margin-top: 0;
5710
+ }
5711
+
5712
+ .bc-lexical-editor h6 {
5713
+ font-size: 0.875rem;
5714
+ font-weight: 600;
5715
+ line-height: 1.5;
5716
+ margin-top: 0.75rem;
5717
+ margin-bottom: 0.5rem;
5718
+ text-transform: uppercase;
5719
+ letter-spacing: 0.05em;
5720
+ }
5721
+
5722
+ .bc-lexical-editor h6:first-child {
5723
+ margin-top: 0;
5724
+ }
5725
+
5726
+ .bc-lexical-editor p {
5727
+ margin-top: 0.5rem;
5728
+ margin-bottom: 0.5rem;
5729
+ }
5730
+
5731
+ .bc-lexical-editor p:first-child {
5732
+ margin-top: 0;
5733
+ }
5734
+
5735
+ .bc-lexical-editor p:last-child {
5736
+ margin-bottom: 0;
5737
+ }
5738
+
5739
+ .bc-lexical-editor blockquote {
5740
+ margin: 1rem 0;
5741
+ padding-left: 1rem;
5742
+ border-left: 4px solid var(--color-neutral-300);
5743
+ color: var(--color-neutral-700);
5744
+ font-style: italic;
5745
+ }
5746
+
5747
+ .bc-lexical-editor ul,
5748
+ .bc-lexical-editor ol {
5749
+ margin: 0.75rem 0;
5750
+ padding-left: 1.5rem;
5751
+ }
5752
+
5753
+ .bc-lexical-editor ul {
5754
+ list-style-type: disc;
5755
+ }
5756
+
5757
+ .bc-lexical-editor ol {
5758
+ list-style-type: decimal;
5759
+ }
5760
+
5761
+ .bc-lexical-editor li {
5762
+ margin: 0.25rem 0;
5763
+ }
5764
+
5765
+ .bc-lexical-editor code {
5766
+ font-family: 'Monaco', 'Courier New', monospace;
5767
+ font-size: 0.875em;
5768
+ background-color: var(--color-neutral-100);
5769
+ color: var(--color-neutral-800);
5770
+ padding: 0.125rem 0.375rem;
5771
+ border-radius: var(--radius-xs, 0.25rem);
5772
+ }
5773
+
5774
+ .bc-lexical-editor pre {
5775
+ margin: 1rem 0;
5776
+ padding: 1rem;
5777
+ background-color: var(--color-neutral-100);
5778
+ border-radius: var(--radius-md, 0.5rem);
5779
+ overflow-x: auto;
5780
+ border: 1px solid var(--color-neutral-200);
5781
+ }
5782
+
5783
+ .bc-lexical-editor pre code {
5784
+ background-color: transparent;
5785
+ padding: 0;
5786
+ border-radius: 0;
5787
+ font-size: 0.875rem;
5788
+ line-height: 1.5;
5789
+ }
5790
+
5791
+ .bc-lexical-editor a {
5792
+ color: var(--color-primary-600);
5793
+ text-decoration: underline;
5794
+ text-underline-offset: 0.125rem;
5795
+ cursor: pointer;
5796
+ }
5797
+
5798
+ .bc-lexical-editor a:hover {
5799
+ color: var(--color-primary-700);
5800
+ }
5801
+
5802
+ .bc-lexical-editor hr {
5803
+ margin: 1.5rem 0;
5804
+ border: none;
5805
+ border-top: 2px solid var(--color-neutral-200);
5806
+ }
5807
+
5808
+ .bc-lexical-editor strong,
5809
+ .bc-lexical-bold {
5810
+ font-weight: 700;
5811
+ }
5812
+
5813
+ .bc-lexical-editor em,
5814
+ .bc-lexical-italic {
5815
+ font-style: italic;
5816
+ }
5817
+
5818
+ .bc-lexical-editor u,
5819
+ .bc-lexical-underline {
5820
+ text-decoration: underline;
5821
+ }
5822
+
5823
+ .bc-lexical-editor s,
5824
+ .bc-lexical-strikethrough {
5825
+ text-decoration: line-through;
5826
+ }
5827
+
5828
+ .bc-lexical-code {
5829
+ font-family: 'Monaco', 'Courier New', monospace;
5830
+ font-size: 0.875em;
5831
+ background-color: var(--color-neutral-100);
5832
+ color: var(--color-neutral-800);
5833
+ padding: 0.125rem 0.375rem;
5834
+ border-radius: var(--radius-xs, 0.25rem);
5835
+ }
5836
+
5837
+ .b-dark .bc-lexical-code {
5838
+ background-color: var(--color-neutral-800);
5839
+ color: var(--color-neutral-200);
5840
+ }
5841
+
5842
+ /* Check list items */
5843
+ .bc-lexical-li-checked,
5844
+ .bc-lexical-li-unchecked {
5845
+ list-style-type: none;
5846
+ position: relative;
5847
+ padding-left: 1.5rem;
5848
+ margin-left: -1.5rem;
5849
+ }
5850
+
5851
+ .bc-lexical-li-checked::before,
5852
+ .bc-lexical-li-unchecked::before {
5853
+ content: '';
5854
+ position: absolute;
5855
+ left: 0;
5856
+ top: 0.35em;
5857
+ width: 1em;
5858
+ height: 1em;
5859
+ border: 2px solid var(--color-neutral-400);
5860
+ border-radius: var(--radius-xs, 0.25rem);
5861
+ cursor: pointer;
5862
+ }
5863
+
5864
+ .bc-lexical-li-checked::before {
5865
+ background-color: var(--color-primary-500);
5866
+ border-color: var(--color-primary-500);
5867
+ }
5868
+
5869
+ .bc-lexical-li-checked::after {
5870
+ content: '';
5871
+ position: absolute;
5872
+ left: 0.25em;
5873
+ top: 0.45em;
5874
+ width: 0.5em;
5875
+ height: 0.25em;
5876
+ border-left: 2px solid white;
5877
+ border-bottom: 2px solid white;
5878
+ transform: rotate(-45deg);
5879
+ }
5880
+
5881
+ .bc-lexical-li-checked {
5882
+ text-decoration: line-through;
5883
+ color: var(--color-neutral-500);
5884
+ }
5885
+
5886
+ .b-dark .bc-lexical-li-checked::before {
5887
+ background-color: var(--color-primary-400);
5888
+ border-color: var(--color-primary-400);
5889
+ }
5890
+
5891
+ .b-dark .bc-lexical-li-unchecked::before {
5892
+ border-color: var(--color-neutral-600);
5893
+ }
5894
+
5895
+ /* Dark mode styles */
5896
+ .b-dark .bc-lexical-editor-container {
5897
+ background-color: var(--color-neutral-800);
5898
+ border-color: var(--color-neutral-700);
5899
+ }
5900
+
5901
+ .b-dark .bc-lexical-editor {
5902
+ background-color: var(--bg-surface-dark);
5903
+ color: var(--text-normal-dark);
5904
+ }
5905
+
5906
+ .b-dark .bc-lexical-editor-container:focus-within {
5907
+ border-color: var(--color-primary-400);
5908
+ box-shadow: 0 0 0 2px var(--color-primary-900);
5909
+ }
5910
+
5911
+ .b-dark .bc-lexical-editor-container--error {
5912
+ border-color: var(--color-danger-400);
5913
+ }
5914
+
5915
+ .b-dark .bc-lexical-editor-container--error:focus-within {
5916
+ border-color: var(--color-danger-400);
5917
+ box-shadow: 0 0 0 2px var(--color-danger-900);
5918
+ }
5919
+
5920
+ .b-dark .bc-lexical-editor--readonly {
5921
+ background-color: var(--color-neutral-900);
5922
+ color: var(--text-muted-dark);
5923
+ }
5924
+
5925
+ .b-dark .bc-lexical-editor [data-lexical-placeholder] {
5926
+ color: var(--color-neutral-500);
5927
+ }
5928
+
5929
+ .b-dark .bc-lexical-editor blockquote {
5930
+ border-left-color: var(--color-neutral-600);
5931
+ color: var(--text-muted-dark);
5932
+ }
5933
+
5934
+ .b-dark .bc-lexical-editor code {
5935
+ background-color: var(--color-neutral-800);
5936
+ color: var(--color-neutral-200);
5937
+ }
5938
+
5939
+ .b-dark .bc-lexical-editor pre {
5940
+ background-color: var(--color-neutral-900);
5941
+ border-color: var(--color-neutral-700);
5942
+ }
5943
+
5944
+ .b-dark .bc-lexical-editor a {
5945
+ color: var(--color-primary-400);
5946
+ }
5947
+
5948
+ .b-dark .bc-lexical-editor a:hover {
5949
+ color: var(--color-primary-300);
5950
+ }
5951
+
5952
+ .b-dark .bc-lexical-editor hr {
5953
+ border-top-color: var(--color-neutral-700);
5954
+ }
5955
+
5956
+ /* Collaboration: Remote cursors and selections */
5957
+ .bc-lexical-collaboration-cursor {
5958
+ position: absolute;
5959
+ pointer-events: none;
5960
+ user-select: none;
5961
+ }
5962
+
5963
+ .bc-lexical-collaboration-cursor__caret {
5964
+ position: absolute;
5965
+ width: 2px;
5966
+ height: 1.2em;
5967
+ background-color: currentColor;
5968
+ animation: bc-lexical-cursor-blink 1s infinite;
5969
+ }
5970
+
5971
+ .bc-lexical-collaboration-cursor__name {
5972
+ position: absolute;
5973
+ top: -20px;
5974
+ left: 0;
5975
+ padding: 2px 6px;
5976
+ background-color: currentColor;
5977
+ color: white;
5978
+ font-size: 0.75rem;
5979
+ font-weight: 500;
5980
+ border-radius: var(--radius-sm);
5981
+ white-space: nowrap;
5982
+ opacity: 0;
5983
+ transition: opacity 0.2s;
5984
+ }
5985
+
5986
+ .bc-lexical-collaboration-cursor:hover
5987
+ .bc-lexical-collaboration-cursor__name {
5988
+ opacity: 1;
5989
+ }
5990
+
5991
+ .bc-lexical-collaboration-selection {
5992
+ position: absolute;
5993
+ pointer-events: none;
5994
+ background-color: currentColor;
5995
+ opacity: 0.3;
5996
+ }
5997
+
5998
+ @keyframes bc-lexical-cursor-blink {
5999
+ 0%,
6000
+ 49% {
6001
+ opacity: 1;
6002
+ }
6003
+ 50%,
6004
+ 100% {
6005
+ opacity: 0;
6006
+ }
6007
+ }
6008
+
6009
+ /* Accessibility */
6010
+ @media (prefers-reduced-motion: reduce) {
6011
+ .bc-lexical-editor-container {
6012
+ transition: none;
6013
+ }
6014
+ }
6015
+
6016
+ @media (prefers-contrast: high) {
6017
+ .bc-lexical-editor-container {
6018
+ border-width: 2px;
6019
+ }
6020
+
6021
+ .bc-lexical-editor-container:focus-within {
6022
+ box-shadow: 0 0 0 3px var(--color-primary-100);
6023
+ }
6024
+
6025
+ .b-dark .bc-lexical-editor-container:focus-within {
6026
+ box-shadow: 0 0 0 3px var(--color-primary-900);
6027
+ }
6028
+ }
6029
+ }
6030
+
6031
+ @layer components {
6032
+ /* Lexical Editor Toolbar */
6033
+
6034
+ /* Toolbar positioned at top of editor container */
6035
+ .bc-lexical-toolbar {
6036
+ border-bottom: 1px solid var(--color-neutral-200);
6037
+ border-radius: 0;
6038
+ border: none;
6039
+ background-color: var(--color-neutral-50);
6040
+ padding: var(--spacing-xs) var(--spacing-sm);
6041
+ flex-wrap: wrap;
6042
+ }
6043
+
6044
+ .b-dark .bc-lexical-toolbar {
6045
+ background-color: var(--color-neutral-800);
6046
+ }
6047
+
6048
+ /* When toolbar is inside the editor container, add bottom border */
6049
+ .bc-lexical-editor-container > .bc-lexical-toolbar {
6050
+ border-bottom: 1px solid var(--color-neutral-200);
6051
+ }
6052
+
6053
+ .b-dark .bc-lexical-editor-container > .bc-lexical-toolbar {
6054
+ border-bottom-color: var(--color-neutral-700);
6055
+ }
6056
+
6057
+ /* Bottom position variant */
6058
+ .bc-lexical-toolbar--bottom {
6059
+ border-bottom: none;
6060
+ border-top: 1px solid var(--color-neutral-200);
6061
+ }
6062
+
6063
+ .b-dark .bc-lexical-toolbar--bottom {
6064
+ border-top-color: var(--color-neutral-700);
6065
+ }
6066
+
6067
+ /* Hidden state for readOnly mode */
6068
+ .bc-lexical-toolbar--hidden {
6069
+ display: none;
6070
+ }
6071
+
6072
+ /* Toolbar selects (font family/size) */
6073
+ .bc-lexical-toolbar-select {
6074
+ height: 28px;
6075
+ padding: 0 var(--spacing-xs);
6076
+ border: 1px solid var(--color-neutral-300);
6077
+ border-radius: var(--radius-sm);
6078
+ background-color: var(--color-surface);
6079
+ color: var(--color-neutral-900);
6080
+ font-size: 0.75rem;
6081
+ cursor: pointer;
6082
+ }
6083
+
6084
+ .b-dark .bc-lexical-toolbar-select {
6085
+ border-color: var(--color-neutral-600);
6086
+ background-color: var(--color-neutral-700);
6087
+ color: var(--color-neutral-100);
6088
+ }
6089
+
6090
+ /* Color picker labels */
6091
+ .bc-lexical-toolbar-color {
6092
+ display: inline-flex;
6093
+ align-items: center;
6094
+ justify-content: center;
6095
+ position: relative;
6096
+ width: 28px;
6097
+ height: 28px;
6098
+ cursor: pointer;
6099
+ border-radius: var(--radius-sm);
6100
+ }
6101
+
6102
+ .bc-lexical-toolbar-color:hover {
6103
+ background-color: var(--color-neutral-200);
6104
+ }
6105
+
6106
+ .b-dark .bc-lexical-toolbar-color:hover {
6107
+ background-color: var(--color-neutral-600);
6108
+ }
6109
+
6110
+ .bc-lexical-toolbar-color input[type='color'] {
6111
+ position: absolute;
6112
+ inset: 0;
6113
+ width: 100%;
6114
+ height: 100%;
6115
+ opacity: 0;
6116
+ cursor: pointer;
6117
+ border: none;
6118
+ padding: 0;
6119
+ }
6120
+
6121
+ .bc-lexical-toolbar-color-icon {
6122
+ font-size: 0.875rem;
6123
+ font-weight: 700;
6124
+ pointer-events: none;
6125
+ line-height: 1;
6126
+ }
6127
+
6128
+ .bc-lexical-toolbar-color-icon--highlight {
6129
+ background-color: #ffff00;
6130
+ padding: 0 2px;
6131
+ border-radius: 2px;
6132
+ }
6133
+
6134
+ .bc-lexical-toolbar-color-icon--bg {
6135
+ font-size: 1rem;
6136
+ }
6137
+
6138
+ /* Responsive: compact toolbar on small containers */
6139
+ @container (max-width: 400px) {
6140
+ .bc-lexical-toolbar {
6141
+ padding: var(--spacing-2xs) var(--spacing-xs);
6142
+ gap: var(--spacing-2xs);
6143
+ }
6144
+ }
6145
+ }
6146
+
6147
+ @layer components {
6148
+ /* Lexical Floating Toolbar */
6149
+
6150
+ .bc-floating-toolbar {
6151
+ display: flex;
6152
+ align-items: center;
6153
+ gap: var(--spacing-xs);
6154
+ padding: var(--spacing-xs);
6155
+ border-radius: var(--radius-md);
6156
+ background-color: var(--color-white);
6157
+ border: 1px solid var(--color-neutral-200);
6158
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
6159
+ z-index: 1000;
6160
+ animation: bc-floating-toolbar-enter 0.15s ease-out;
6161
+ }
6162
+
6163
+ .b-dark .bc-floating-toolbar {
6164
+ background-color: var(--color-neutral-800);
6165
+ border-color: var(--color-neutral-700);
6166
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
6167
+ }
6168
+
6169
+ @keyframes bc-floating-toolbar-enter {
6170
+ from {
6171
+ opacity: 0;
6172
+ transform: translateX(-50%) translateY(4px);
6173
+ }
6174
+ to {
6175
+ opacity: 1;
6176
+ transform: translateX(-50%) translateY(0);
6177
+ }
6178
+ }
6179
+
6180
+ /* Slash Command Palette */
6181
+
6182
+ .bc-slash-command-palette {
6183
+ min-width: 280px;
6184
+ max-width: 360px;
6185
+ max-height: 400px;
6186
+ overflow-y: auto;
6187
+ border-radius: var(--radius-md);
6188
+ background-color: var(--color-white);
6189
+ border: 1px solid var(--color-neutral-200);
6190
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
6191
+ padding: var(--spacing-xs);
6192
+ z-index: 1000;
6193
+ animation: bc-slash-palette-enter 0.12s ease-out;
6194
+ }
6195
+
6196
+ .b-dark .bc-slash-command-palette {
6197
+ background-color: var(--color-neutral-800);
6198
+ border-color: var(--color-neutral-700);
6199
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
6200
+ }
6201
+
6202
+ @keyframes bc-slash-palette-enter {
6203
+ from {
6204
+ opacity: 0;
6205
+ transform: translateY(-4px);
6206
+ }
6207
+ to {
6208
+ opacity: 1;
6209
+ transform: translateY(0);
6210
+ }
6211
+ }
6212
+
6213
+ .bc-slash-command-palette__item {
6214
+ display: flex;
6215
+ align-items: center;
6216
+ gap: var(--spacing-sm);
6217
+ padding: var(--spacing-sm);
6218
+ border-radius: var(--radius-sm);
6219
+ cursor: pointer;
6220
+ transition: background-color 0.12s ease;
6221
+ }
6222
+
6223
+ .bc-slash-command-palette__item:hover,
6224
+ .bc-slash-command-palette__item[aria-selected='true'] {
6225
+ background-color: var(--color-primary-50);
6226
+ }
6227
+
6228
+ .b-dark .bc-slash-command-palette__item:hover,
6229
+ .b-dark .bc-slash-command-palette__item[aria-selected='true'] {
6230
+ background-color: var(--color-primary-900);
6231
+ }
6232
+
6233
+ .bc-slash-command-palette__icon {
6234
+ flex-shrink: 0;
6235
+ display: flex;
6236
+ align-items: center;
6237
+ justify-content: center;
6238
+ width: 20px;
6239
+ height: 20px;
6240
+ }
6241
+
6242
+ .bc-slash-command-palette__content {
6243
+ flex: 1;
6244
+ min-width: 0;
6245
+ }
6246
+
6247
+ .bc-slash-command-palette__label {
6248
+ font-weight: 500;
6249
+ font-size: var(--font-size-sm);
6250
+ color: var(--color-neutral-900);
6251
+ margin-bottom: 2px;
6252
+ }
6253
+
6254
+ .b-dark .bc-slash-command-palette__label {
6255
+ color: var(--color-neutral-100);
6256
+ }
6257
+
6258
+ .bc-slash-command-palette__description {
6259
+ font-size: var(--font-size-xs);
6260
+ color: var(--color-neutral-500);
6261
+ overflow: hidden;
6262
+ text-overflow: ellipsis;
6263
+ white-space: nowrap;
6264
+ }
6265
+
6266
+ .bc-slash-command-palette__category {
6267
+ font-size: var(--font-size-xs);
6268
+ color: var(--color-neutral-500);
6269
+ padding: 2px 6px;
6270
+ border-radius: var(--radius-sm);
6271
+ background-color: var(--color-neutral-100);
6272
+ flex-shrink: 0;
6273
+ }
6274
+
6275
+ .b-dark .bc-slash-command-palette__category {
6276
+ background-color: var(--color-neutral-700);
6277
+ color: var(--color-neutral-400);
6278
+ }
6279
+
6280
+ .bc-slash-command-palette__empty {
6281
+ padding: var(--spacing-md);
6282
+ color: var(--color-neutral-500);
6283
+ text-align: center;
6284
+ font-size: var(--font-size-sm);
6285
+ }
6286
+
6287
+ /* Block Handle */
6288
+
6289
+ .bc-block-handle {
6290
+ z-index: 999;
6291
+ animation: bc-block-handle-enter 0.1s ease-out;
6292
+ }
6293
+
6294
+ @keyframes bc-block-handle-enter {
6295
+ from {
6296
+ opacity: 0;
6297
+ }
6298
+ to {
6299
+ opacity: 1;
6300
+ }
6301
+ }
6302
+
6303
+ .bc-block-handle__button {
6304
+ display: flex;
6305
+ align-items: center;
6306
+ justify-content: center;
6307
+ width: 24px;
6308
+ height: 24px;
6309
+ border: 1px solid var(--color-neutral-200);
6310
+ border-radius: var(--radius-sm);
6311
+ background-color: var(--color-white);
6312
+ color: var(--color-neutral-400);
6313
+ cursor: pointer;
6314
+ padding: 0;
6315
+ transition: all 0.12s ease;
6316
+ }
6317
+
6318
+ .bc-block-handle__button:hover {
6319
+ background-color: var(--color-neutral-100);
6320
+ color: var(--color-neutral-600);
6321
+ border-color: var(--color-neutral-300);
6322
+ }
6323
+
6324
+ .bc-block-handle__button:disabled {
6325
+ opacity: 0.4;
6326
+ cursor: not-allowed;
6327
+ }
6328
+
6329
+ .b-dark .bc-block-handle__button {
6330
+ background-color: var(--color-neutral-800);
6331
+ border-color: var(--color-neutral-700);
6332
+ color: var(--color-neutral-500);
6333
+ }
6334
+
6335
+ .b-dark .bc-block-handle__button:hover {
6336
+ background-color: var(--color-neutral-700);
6337
+ color: var(--color-neutral-300);
6338
+ border-color: var(--color-neutral-600);
6339
+ }
6340
+ }
6341
+
6342
+ @layer components {
6343
+ /* Lexical Table Component */
6344
+
6345
+ /* Table structure */
6346
+ .bc-lexical-table {
6347
+ border-collapse: collapse;
6348
+ border-spacing: 0;
6349
+ width: 100%;
6350
+ margin: 1rem 0;
6351
+ overflow: hidden;
6352
+ table-layout: fixed;
6353
+ }
6354
+
6355
+ .bc-lexical-table-row {
6356
+ border-bottom: 1px solid var(--color-neutral-200);
6357
+ }
6358
+
6359
+ .bc-lexical-table-cell,
6360
+ .bc-lexical-table-cell-header {
6361
+ border: 1px solid var(--color-neutral-200);
6362
+ padding: 0.5rem 0.75rem;
6363
+ position: relative;
6364
+ vertical-align: top;
6365
+ min-width: 75px;
6366
+ }
6367
+
6368
+ .bc-lexical-table-cell-header {
6369
+ background-color: var(--color-neutral-50);
6370
+ font-weight: 600;
6371
+ text-align: left;
6372
+ }
6373
+
6374
+ /* Selected cell highlight */
6375
+ .bc-lexical-table-cell--selected {
6376
+ background-color: var(--color-primary-50);
6377
+ outline: 2px solid var(--color-primary-500);
6378
+ outline-offset: -2px;
6379
+ }
6380
+
6381
+ /* Table context menu */
6382
+ .bc-table-context-menu {
6383
+ display: flex;
6384
+ flex-direction: column;
6385
+ }
6386
+
6387
+ .bc-table-menu-button {
6388
+ font-family: inherit;
6389
+ line-height: 1.5;
6390
+ white-space: nowrap;
6391
+ }
6392
+
6393
+ .bc-table-menu-button:hover:not(:disabled) {
6394
+ background-color: var(--color-neutral-100);
6395
+ }
6396
+
6397
+ .bc-table-menu-button:active:not(:disabled) {
6398
+ background-color: var(--color-neutral-200);
6399
+ }
6400
+
6401
+ .bc-table-menu-button:disabled {
6402
+ opacity: 0.5;
6403
+ cursor: not-allowed;
6404
+ }
6405
+
6406
+ .bc-table-menu-separator {
6407
+ /* Separator styling defined inline in component */
6408
+ }
6409
+
6410
+ /* Dark mode styles */
6411
+ .b-dark .bc-lexical-table-cell,
6412
+ .b-dark .bc-lexical-table-cell-header {
6413
+ border-color: var(--color-neutral-700);
6414
+ }
6415
+
6416
+ .b-dark .bc-lexical-table-row {
6417
+ border-bottom-color: var(--color-neutral-700);
6418
+ }
6419
+
6420
+ .b-dark .bc-lexical-table-cell-header {
6421
+ background-color: var(--color-neutral-800);
6422
+ }
6423
+
6424
+ .b-dark .bc-lexical-table-cell--selected {
6425
+ background-color: var(--color-primary-900);
6426
+ outline-color: var(--color-primary-400);
6427
+ }
6428
+
6429
+ .b-dark .bc-table-context-menu {
6430
+ background-color: var(--color-neutral-800);
6431
+ border-color: var(--color-neutral-700);
6432
+ }
6433
+
6434
+ .b-dark .bc-table-menu-button {
6435
+ color: var(--color-neutral-100);
6436
+ }
6437
+
6438
+ .b-dark .bc-table-menu-button:hover:not(:disabled) {
6439
+ background-color: var(--color-neutral-700);
6440
+ }
6441
+
6442
+ .b-dark .bc-table-menu-button:active:not(:disabled) {
6443
+ background-color: var(--color-neutral-600);
6444
+ }
6445
+
6446
+ .b-dark .bc-table-menu-separator {
6447
+ background-color: var(--color-neutral-700);
6448
+ }
6449
+
6450
+ /* Accessibility */
6451
+ @media (prefers-reduced-motion: reduce) {
6452
+ .bc-table-menu-button {
6453
+ transition: none;
6454
+ }
6455
+ }
6456
+
6457
+ @media (prefers-contrast: high) {
6458
+ .bc-lexical-table-cell,
6459
+ .bc-lexical-table-cell-header {
6460
+ border-width: 2px;
6461
+ }
6462
+
6463
+ .bc-lexical-table-cell--selected {
6464
+ outline-width: 3px;
6465
+ }
6466
+ }
6467
+ }
6468
+
6469
+ @layer components {
6470
+ /* Lexical Code Block Component */
6471
+
6472
+ /* Code block structure */
6473
+ .bc-lexical-code-block {
6474
+ position: relative;
6475
+ margin: 1rem 0;
6476
+ padding: 1rem;
6477
+ background-color: var(--color-neutral-50);
6478
+ border: 1px solid var(--color-neutral-200);
6479
+ border-radius: var(--radius-md);
6480
+ overflow-x: auto;
6481
+ font-family:
6482
+ 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Courier New', monospace;
6483
+ font-size: 0.875rem;
6484
+ line-height: 1.6;
6485
+ }
6486
+
6487
+ /* Language selector */
6488
+ .bc-code-language-selector {
6489
+ /* Positioning handled inline */
6490
+ }
6491
+
6492
+ .bc-code-language-button:hover:not(:disabled) {
6493
+ background-color: var(--color-neutral-200);
6494
+ border-color: var(--color-neutral-400);
6495
+ }
6496
+
6497
+ .bc-code-language-button:disabled {
6498
+ opacity: 0.5;
6499
+ cursor: not-allowed;
6500
+ }
6501
+
6502
+ .bc-code-language-dropdown {
6503
+ /* Dropdown styling handled inline */
6504
+ }
6505
+
6506
+ .bc-code-language-option:hover {
6507
+ background-color: var(--color-neutral-100);
6508
+ }
6509
+
6510
+ .bc-code-language-option:active {
6511
+ background-color: var(--color-neutral-200);
6512
+ }
6513
+
6514
+ /* Syntax highlighting token colors (light theme) */
6515
+ .bc-lexical-code-block .token.comment,
6516
+ .bc-lexical-code-block .token.prolog,
6517
+ .bc-lexical-code-block .token.doctype,
6518
+ .bc-lexical-code-block .token.cdata {
6519
+ color: #6a737d;
6520
+ font-style: italic;
6521
+ }
6522
+
6523
+ .bc-lexical-code-block .token.punctuation {
6524
+ color: #24292e;
6525
+ }
6526
+
6527
+ .bc-lexical-code-block .token.property,
6528
+ .bc-lexical-code-block .token.tag,
6529
+ .bc-lexical-code-block .token.boolean,
6530
+ .bc-lexical-code-block .token.number,
6531
+ .bc-lexical-code-block .token.constant,
6532
+ .bc-lexical-code-block .token.symbol,
6533
+ .bc-lexical-code-block .token.deleted {
6534
+ color: #005cc5;
6535
+ }
6536
+
6537
+ .bc-lexical-code-block .token.selector,
6538
+ .bc-lexical-code-block .token.attr-name,
6539
+ .bc-lexical-code-block .token.string,
6540
+ .bc-lexical-code-block .token.char,
6541
+ .bc-lexical-code-block .token.builtin,
6542
+ .bc-lexical-code-block .token.inserted {
6543
+ color: #032f62;
6544
+ }
6545
+
6546
+ .bc-lexical-code-block .token.operator,
6547
+ .bc-lexical-code-block .token.entity,
6548
+ .bc-lexical-code-block .token.url,
6549
+ .bc-lexical-code-block .language-css .token.string,
6550
+ .bc-lexical-code-block .style .token.string {
6551
+ color: #d73a49;
6552
+ }
6553
+
6554
+ .bc-lexical-code-block .token.atrule,
6555
+ .bc-lexical-code-block .token.attr-value,
6556
+ .bc-lexical-code-block .token.keyword {
6557
+ color: #d73a49;
6558
+ }
6559
+
6560
+ .bc-lexical-code-block .token.function,
6561
+ .bc-lexical-code-block .token.class-name {
6562
+ color: #6f42c1;
6563
+ }
6564
+
6565
+ .bc-lexical-code-block .token.regex,
6566
+ .bc-lexical-code-block .token.important,
6567
+ .bc-lexical-code-block .token.variable {
6568
+ color: #e36209;
6569
+ }
6570
+
6571
+ /* Line numbers (optional) */
6572
+ .bc-lexical-code-block--with-line-numbers {
6573
+ padding-left: 3.5rem;
6574
+ }
6575
+
6576
+ .bc-lexical-code-block .line-number {
6577
+ position: absolute;
6578
+ left: 0;
6579
+ width: 3rem;
6580
+ text-align: right;
6581
+ color: var(--color-neutral-400);
6582
+ user-select: none;
6583
+ padding-right: 1rem;
6584
+ }
6585
+
6586
+ /* Dark mode styles */
6587
+ .b-dark .bc-lexical-code-block {
6588
+ background-color: var(--color-neutral-900);
6589
+ border-color: var(--color-neutral-700);
6590
+ color: var(--color-neutral-100);
6591
+ }
6592
+
6593
+ .b-dark .bc-code-language-button {
6594
+ background-color: var(--color-neutral-800);
6595
+ border-color: var(--color-neutral-600);
6596
+ color: var(--color-neutral-200);
6597
+ }
6598
+
6599
+ .b-dark .bc-code-language-button:hover:not(:disabled) {
6600
+ background-color: var(--color-neutral-700);
6601
+ border-color: var(--color-neutral-500);
6602
+ }
6603
+
6604
+ .b-dark .bc-code-language-dropdown {
6605
+ background-color: var(--color-neutral-800);
6606
+ border-color: var(--color-neutral-700);
6607
+ }
6608
+
6609
+ .b-dark .bc-code-language-option {
6610
+ color: var(--color-neutral-100);
6611
+ }
6612
+
6613
+ .b-dark .bc-code-language-option:hover {
6614
+ background-color: var(--color-neutral-700);
6615
+ }
6616
+
6617
+ .b-dark .bc-code-language-option:active {
6618
+ background-color: var(--color-neutral-600);
6619
+ }
6620
+
6621
+ /* Syntax highlighting token colors (dark theme) */
6622
+ .b-dark .bc-lexical-code-block .token.comment,
6623
+ .b-dark .bc-lexical-code-block .token.prolog,
6624
+ .b-dark .bc-lexical-code-block .token.doctype,
6625
+ .b-dark .bc-lexical-code-block .token.cdata {
6626
+ color: #8b949e;
6627
+ }
6628
+
6629
+ .b-dark .bc-lexical-code-block .token.punctuation {
6630
+ color: #c9d1d9;
6631
+ }
6632
+
6633
+ .b-dark .bc-lexical-code-block .token.property,
6634
+ .b-dark .bc-lexical-code-block .token.tag,
6635
+ .b-dark .bc-lexical-code-block .token.boolean,
6636
+ .b-dark .bc-lexical-code-block .token.number,
6637
+ .b-dark .bc-lexical-code-block .token.constant,
6638
+ .b-dark .bc-lexical-code-block .token.symbol,
6639
+ .b-dark .bc-lexical-code-block .token.deleted {
6640
+ color: #79c0ff;
6641
+ }
6642
+
6643
+ .b-dark .bc-lexical-code-block .token.selector,
6644
+ .b-dark .bc-lexical-code-block .token.attr-name,
6645
+ .b-dark .bc-lexical-code-block .token.string,
6646
+ .b-dark .bc-lexical-code-block .token.char,
6647
+ .b-dark .bc-lexical-code-block .token.builtin,
6648
+ .b-dark .bc-lexical-code-block .token.inserted {
6649
+ color: #a5d6ff;
6650
+ }
6651
+
6652
+ .b-dark .bc-lexical-code-block .token.operator,
6653
+ .b-dark .bc-lexical-code-block .token.entity,
6654
+ .b-dark .bc-lexical-code-block .token.url,
6655
+ .b-dark .bc-lexical-code-block .language-css .token.string,
6656
+ .b-dark .bc-lexical-code-block .style .token.string {
6657
+ color: #ff7b72;
6658
+ }
6659
+
6660
+ .b-dark .bc-lexical-code-block .token.atrule,
6661
+ .b-dark .bc-lexical-code-block .token.attr-value,
6662
+ .b-dark .bc-lexical-code-block .token.keyword {
6663
+ color: #ff7b72;
6664
+ }
6665
+
6666
+ .b-dark .bc-lexical-code-block .token.function,
6667
+ .b-dark .bc-lexical-code-block .token.class-name {
6668
+ color: #d2a8ff;
6669
+ }
6670
+
6671
+ .b-dark .bc-lexical-code-block .token.regex,
6672
+ .b-dark .bc-lexical-code-block .token.important,
6673
+ .b-dark .bc-lexical-code-block .token.variable {
6674
+ color: #ffa657;
6675
+ }
6676
+
6677
+ .b-dark .bc-lexical-code-block .line-number {
6678
+ color: var(--color-neutral-600);
6679
+ }
6680
+
6681
+ /* Accessibility */
6682
+ @media (prefers-reduced-motion: reduce) {
6683
+ .bc-code-language-button,
6684
+ .bc-code-language-option {
6685
+ transition: none;
6686
+ }
6687
+ }
6688
+
6689
+ @media (prefers-contrast: high) {
6690
+ .bc-lexical-code-block {
6691
+ border-width: 2px;
6692
+ }
6693
+ }
6694
+ }
6695
+
5349
6696
  /* Link Component */
5350
6697
  .bc-link {
5351
6698
  --link-color: inherit;