@tempots/beatui 0.81.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 (237) hide show
  1. package/dist/_commonjsHelpers-DKOUU3wS.cjs +1 -0
  2. package/dist/_commonjsHelpers-DaMA6jEr.js +8 -0
  3. package/dist/{ar-DwHLVgKj.cjs → ar-D7CXDmVZ.cjs} +1 -1
  4. package/dist/{ar-Bo_FZZi7.js → ar-nOSKXpIW.js} +1 -1
  5. package/dist/auth/index.cjs.js +1 -1
  6. package/dist/auth/index.es.js +63 -1349
  7. package/dist/auth-divider-BqZPH1-z.cjs +1 -0
  8. package/dist/auth-divider-Wr-S16kF.js +1355 -0
  9. package/dist/beatui.css +2035 -295
  10. package/dist/beatui.tailwind.css +2036 -296
  11. package/dist/better-auth/index.cjs.js +1 -0
  12. package/dist/better-auth/index.es.js +754 -0
  13. package/dist/{de-zI5mdV4M.cjs → de-WzsOu9Gn.cjs} +1 -1
  14. package/dist/{de-CCqwOkqN.js → de-f2xcEb34.js} +1 -1
  15. package/dist/{deep-merge-1uN6CG6K.js → deep-merge-BYm0y62g.js} +271 -285
  16. package/dist/deep-merge-d7sf0xmN.cjs +1 -0
  17. package/dist/duration-input-B9UNmUCh.cjs +1 -0
  18. package/dist/{duration-input-C9kpsw-t.js → duration-input-DqcJbxKD.js} +31 -29
  19. package/dist/editor-toolbar-group--a-xgsJw.cjs +1 -0
  20. package/dist/editor-toolbar-group-CVpl5mxF.js +31 -0
  21. package/dist/{es-BF02UrPL.js → es-CDqqzpCw.js} +1 -1
  22. package/dist/{es-Cw90CAbu.cjs → es-Ds2Xf3wV.cjs} +1 -1
  23. package/dist/{fa-DPQV4YB8.js → fa-C7tE_hR3.js} +1 -1
  24. package/dist/{fa-B4lssnzR.cjs → fa-Ct1UtDB7.cjs} +1 -1
  25. package/dist/{fr-1Kd6z1F-.cjs → fr-CzAkRFed.cjs} +1 -1
  26. package/dist/{fr-dmxPhwkD.js → fr-yOW_68YY.js} +1 -1
  27. package/dist/{he-BtQbrVt3.js → he-D2oUloCJ.js} +1 -1
  28. package/dist/{he-CJ3XnuPm.cjs → he-DlXALrK7.cjs} +1 -1
  29. package/dist/{hi-BpfnFKHp.cjs → hi-3dBhLwDs.cjs} +1 -1
  30. package/dist/{hi-D_Le4Yka.js → hi-D5ZlZoQq.js} +1 -1
  31. package/dist/{hls.light.min-Bhrf47iR.cjs → hls.light.min-C6xKDzRR.cjs} +1 -1
  32. package/dist/{hls.light.min-C6VwviEa.js → hls.light.min-hEMf_E8u.js} +1 -1
  33. package/dist/{index-CfaWytS2.cjs → index-05UbKOYe.cjs} +1 -1
  34. package/dist/{index-K6u33-GC.cjs → index-Bt7FYl80.cjs} +19 -19
  35. package/dist/{index-YtW7SCWB.js → index-C2Lq1m45.js} +1434 -1463
  36. package/dist/{index-CGEzILlC.js → index-lYhXnu6I.js} +1 -1
  37. package/dist/index.cjs.js +4 -4
  38. package/dist/index.es.js +2389 -2738
  39. package/dist/input-container-C6qEIjcA.cjs +1 -0
  40. package/dist/input-container-DiCjOzR2.js +247 -0
  41. package/dist/{it-DyHjSuHN.js → it-6e6X-4BB.js} +1 -1
  42. package/dist/{it-COCZ9NyB.cjs → it-DohtcWi9.cjs} +1 -1
  43. package/dist/{ja-X43lABza.js → ja-BxNuNo2H.js} +1 -1
  44. package/dist/{ja--NdggLU9.cjs → ja-eyTArrgS.cjs} +1 -1
  45. package/dist/json-schema/index.cjs.js +1 -8
  46. package/dist/json-schema/index.es.js +1359 -7608
  47. package/dist/json-schema-display/index.cjs.js +1 -0
  48. package/dist/json-schema-display/index.es.js +846 -0
  49. package/dist/json-structure/index.cjs.js +1 -1
  50. package/dist/json-structure/index.es.js +542 -698
  51. package/dist/{ko-BUvb0ggK.cjs → ko-BFLCDMMs.cjs} +1 -1
  52. package/dist/{ko-B9g9iw99.js → ko-Ch0jFsBV.js} +1 -1
  53. package/dist/lexical/index.cjs.js +46 -0
  54. package/dist/lexical/index.es.js +21370 -0
  55. package/dist/lexical.css +1124 -0
  56. package/dist/menu-CZzRsQP_.js +372 -0
  57. package/dist/menu-ClrU72xH.cjs +1 -0
  58. package/dist/modal-I5srcntN.cjs +1 -0
  59. package/dist/modal-v3u2Fpnd.js +488 -0
  60. package/dist/{nl-0S25Gsld.cjs → nl-Bx2ACvr4.cjs} +1 -1
  61. package/dist/{nl-Ew5jnSsT.js → nl-NuTdZO1s.js} +1 -1
  62. package/dist/{notice-C-964yaY.js → notice-BuZvdvZh.js} +84 -82
  63. package/dist/notice-CLDdy1MW.cjs +1 -0
  64. package/dist/oneof-branch-detection-DsM1K5xc.cjs +8 -0
  65. package/dist/oneof-branch-detection-Dt8ss9lc.js +6281 -0
  66. package/dist/{pl-C9f6UBSe.js → pl-Bs4nLJ__.js} +1 -1
  67. package/dist/{pl-B3k-K3S4.cjs → pl-QHl6sl8f.cjs} +1 -1
  68. package/dist/prosemirror/index.cjs.js +1 -1
  69. package/dist/prosemirror/index.es.js +1 -1
  70. package/dist/{pt-DYtAvbrw.js → pt-BETjHZrL.js} +1 -1
  71. package/dist/{pt-CKoikRO5.cjs → pt-DZGw2Z-1.cjs} +1 -1
  72. package/dist/{ru-ZexN-b8V.js → ru-Bi1_DEKM.js} +1 -1
  73. package/dist/{ru-COb7RSDt.cjs → ru-D03IuLqh.cjs} +1 -1
  74. package/dist/session-id-3KiilioY.js +8 -0
  75. package/dist/session-id-B5lJMzbB.cjs +1 -0
  76. package/dist/stack-BJgsPJ9A.js +873 -0
  77. package/dist/stack-DcZ_u50f.cjs +1 -0
  78. package/dist/string-B9vVyfq3.cjs +1 -0
  79. package/dist/string-DYyMxBl-.js +19 -0
  80. package/dist/styles-url-B2dzXrYt.cjs +1 -0
  81. package/dist/styles-url-Cw_mxshe.js +4 -0
  82. package/dist/text-input-B3VBat1k.js +44 -0
  83. package/dist/text-input-Ds8e7Z1G.cjs +1 -0
  84. package/dist/{toolbar-DNpBIoJo.js → toolbar-D994_E_s.js} +4 -4
  85. package/dist/toolbar-x0_8lmKu.cjs +1 -0
  86. package/dist/{tr-tO_EH-Y2.cjs → tr-B_-_1wua.cjs} +1 -1
  87. package/dist/{tr-BDvn05-H.js → tr-DiYB-FwX.js} +1 -1
  88. package/dist/translations-B4-Zd2LM.cjs +1 -0
  89. package/dist/translations-Cq8bUKJP.js +584 -0
  90. package/dist/{translations-DwGC_94w.cjs → translations-D62qqNV9.cjs} +1 -1
  91. package/dist/{translations-CfWR4loD.js → translations-DPr6c05Z.js} +1 -1
  92. package/dist/types/better-auth/bridge.d.ts +2 -0
  93. package/dist/types/better-auth/callbacks.d.ts +6 -0
  94. package/dist/types/better-auth/components/authenticated.d.ts +4 -0
  95. package/dist/types/better-auth/components/better-auth-container.d.ts +4 -0
  96. package/dist/types/better-auth/components/better-auth-modal.d.ts +4 -0
  97. package/dist/types/better-auth/components/magic-link-form.d.ts +7 -0
  98. package/dist/types/better-auth/components/passkey-management.d.ts +6 -0
  99. package/dist/types/better-auth/components/passkey-signin.d.ts +12 -0
  100. package/dist/types/better-auth/components/two-factor-setup.d.ts +8 -0
  101. package/dist/types/better-auth/components/two-factor-verify.d.ts +10 -0
  102. package/dist/types/better-auth/i18n/default.d.ts +29 -0
  103. package/dist/types/better-auth/i18n/locales/en.d.ts +28 -0
  104. package/dist/types/better-auth/i18n/translations.d.ts +27 -0
  105. package/dist/types/better-auth/index.d.ts +22 -0
  106. package/dist/types/better-auth/provider.d.ts +6 -0
  107. package/dist/types/better-auth/session.d.ts +14 -0
  108. package/dist/types/better-auth/social-mapping.d.ts +2 -0
  109. package/dist/types/better-auth/types.d.ts +164 -0
  110. package/dist/types/components/auth/auth-container.d.ts +1 -1
  111. package/dist/types/components/auth/social-providers.d.ts +1 -1
  112. package/dist/types/components/auth/types.d.ts +2 -0
  113. package/dist/types/components/editor-toolbar/editor-toolbar-button.d.ts +16 -0
  114. package/dist/types/components/editor-toolbar/editor-toolbar-group.d.ts +9 -0
  115. package/dist/types/components/editor-toolbar/index.d.ts +2 -0
  116. package/dist/types/components/json-schema-display/display-widget-customization.d.ts +61 -0
  117. package/dist/types/components/json-schema-display/display-wrapper.d.ts +14 -0
  118. package/dist/types/components/json-schema-display/displays/any-display.d.ts +14 -0
  119. package/dist/types/components/json-schema-display/displays/array-display.d.ts +13 -0
  120. package/dist/types/components/json-schema-display/displays/boolean-display.d.ts +13 -0
  121. package/dist/types/components/json-schema-display/displays/composition-display.d.ts +14 -0
  122. package/dist/types/components/json-schema-display/displays/enum-const-display.d.ts +13 -0
  123. package/dist/types/components/json-schema-display/displays/generic-display.d.ts +18 -0
  124. package/dist/types/components/json-schema-display/displays/null-display.d.ts +13 -0
  125. package/dist/types/components/json-schema-display/displays/number-display.d.ts +13 -0
  126. package/dist/types/components/json-schema-display/displays/object-display.d.ts +13 -0
  127. package/dist/types/components/json-schema-display/displays/string-display.d.ts +14 -0
  128. package/dist/types/components/json-schema-display/index.d.ts +14 -0
  129. package/dist/types/components/json-schema-display/json-schema-display.d.ts +25 -0
  130. package/dist/types/components/json-schema-display/mismatch.d.ts +14 -0
  131. package/dist/types/components/json-structure/controls/control-utils.d.ts +19 -0
  132. package/dist/types/components/json-structure/controls/index.d.ts +1 -0
  133. package/dist/types/components/lexical/bare-editor.d.ts +29 -0
  134. package/dist/types/components/lexical/code/index.d.ts +1 -0
  135. package/dist/types/components/lexical/code/language-selector.d.ts +13 -0
  136. package/dist/types/components/lexical/contextual-editor.d.ts +22 -0
  137. package/dist/types/components/lexical/docked-editor.d.ts +23 -0
  138. package/dist/types/components/lexical/floating/block-handle.d.ts +16 -0
  139. package/dist/types/components/lexical/floating/floating-toolbar.d.ts +12 -0
  140. package/dist/types/components/lexical/floating/index.d.ts +6 -0
  141. package/dist/types/components/lexical/floating/slash-command-palette.d.ts +20 -0
  142. package/dist/types/components/lexical/index.d.ts +8 -0
  143. package/dist/types/components/lexical/lexical-editor-input.d.ts +30 -0
  144. package/dist/types/components/lexical/table/index.d.ts +1 -0
  145. package/dist/types/components/lexical/table/table-controls.d.ts +12 -0
  146. package/dist/types/components/lexical/toolbar/index.d.ts +6 -0
  147. package/dist/types/components/lexical/toolbar/lexical-toolbar.d.ts +12 -0
  148. package/dist/types/components/lexical/toolbar/toolbar-button.d.ts +1 -0
  149. package/dist/types/components/lexical/toolbar/toolbar-group.d.ts +1 -0
  150. package/dist/types/components/lexical/toolbar/toolbar-helpers.d.ts +30 -0
  151. package/dist/types/components/prosemirror/etoolbar-button.d.ts +1 -11
  152. package/dist/types/components/prosemirror/etoolbar-group.d.ts +1 -4
  153. package/dist/types/json-schema-display/index.d.ts +1 -0
  154. package/dist/types/lexical/commands/index.d.ts +17 -0
  155. package/dist/types/lexical/headless.d.ts +39 -0
  156. package/dist/types/lexical/horizontal-rule-node.d.ts +20 -0
  157. package/dist/types/lexical/index.d.ts +20 -0
  158. package/dist/types/lexical/lazy-loader.d.ts +35 -0
  159. package/dist/types/lexical/nodes.d.ts +29 -0
  160. package/dist/types/lexical/plugins/auto-link.d.ts +7 -0
  161. package/dist/types/lexical/plugins/clipboard.d.ts +11 -0
  162. package/dist/types/lexical/plugins/code-shiki.d.ts +11 -0
  163. package/dist/types/lexical/plugins/code.d.ts +7 -0
  164. package/dist/types/lexical/plugins/dragon.d.ts +6 -0
  165. package/dist/types/lexical/plugins/file-io.d.ts +10 -0
  166. package/dist/types/lexical/plugins/hashtag.d.ts +7 -0
  167. package/dist/types/lexical/plugins/history.d.ts +7 -0
  168. package/dist/types/lexical/plugins/horizontal-rule.d.ts +12 -0
  169. package/dist/types/lexical/plugins/html-io.d.ts +9 -0
  170. package/dist/types/lexical/plugins/index.d.ts +24 -0
  171. package/dist/types/lexical/plugins/link.d.ts +6 -0
  172. package/dist/types/lexical/plugins/list.d.ts +6 -0
  173. package/dist/types/lexical/plugins/mark.d.ts +15 -0
  174. package/dist/types/lexical/plugins/markdown-io.d.ts +13 -0
  175. package/dist/types/lexical/plugins/offset.d.ts +6 -0
  176. package/dist/types/lexical/plugins/overflow.d.ts +7 -0
  177. package/dist/types/lexical/plugins/plain-text.d.ts +6 -0
  178. package/dist/types/lexical/plugins/rich-text.d.ts +6 -0
  179. package/dist/types/lexical/plugins/selection.d.ts +6 -0
  180. package/dist/types/lexical/plugins/slash-commands.d.ts +26 -0
  181. package/dist/types/lexical/plugins/table.d.ts +11 -0
  182. package/dist/types/lexical/plugins/text.d.ts +13 -0
  183. package/dist/types/lexical/plugins/yjs.d.ts +9 -0
  184. package/dist/types/lexical/styles-url.d.ts +2 -0
  185. package/dist/types/lexical/styles.d.ts +2 -0
  186. package/dist/types/lexical/types.d.ts +634 -0
  187. package/dist/types/lexical-i18n/default.d.ts +92 -0
  188. package/dist/types/lexical-i18n/index.d.ts +21 -0
  189. package/dist/types/lexical-i18n/locales/ar.d.ts +91 -0
  190. package/dist/types/lexical-i18n/locales/de.d.ts +91 -0
  191. package/dist/types/lexical-i18n/locales/en.d.ts +91 -0
  192. package/dist/types/lexical-i18n/locales/es.d.ts +91 -0
  193. package/dist/types/lexical-i18n/locales/fa.d.ts +91 -0
  194. package/dist/types/lexical-i18n/locales/fr.d.ts +91 -0
  195. package/dist/types/lexical-i18n/locales/he.d.ts +91 -0
  196. package/dist/types/lexical-i18n/locales/hi.d.ts +91 -0
  197. package/dist/types/lexical-i18n/locales/it.d.ts +91 -0
  198. package/dist/types/lexical-i18n/locales/ja.d.ts +91 -0
  199. package/dist/types/lexical-i18n/locales/ko.d.ts +91 -0
  200. package/dist/types/lexical-i18n/locales/nl.d.ts +91 -0
  201. package/dist/types/lexical-i18n/locales/pl.d.ts +91 -0
  202. package/dist/types/lexical-i18n/locales/pt.d.ts +91 -0
  203. package/dist/types/lexical-i18n/locales/ru.d.ts +91 -0
  204. package/dist/types/lexical-i18n/locales/tr.d.ts +91 -0
  205. package/dist/types/lexical-i18n/locales/ur.d.ts +91 -0
  206. package/dist/types/lexical-i18n/locales/vi.d.ts +91 -0
  207. package/dist/types/lexical-i18n/locales/zh.d.ts +91 -0
  208. package/dist/types/lexical-i18n/translations.d.ts +21 -0
  209. package/dist/{ur-DbEqQgS6.js → ur-B69X-xNs.js} +1 -1
  210. package/dist/{ur-BbnYJ3HS.cjs → ur-DyUSmIbo.cjs} +1 -1
  211. package/dist/use-animated-toggle-ChycsEoj.js +175 -0
  212. package/dist/use-animated-toggle-DR6CyMac.cjs +1 -0
  213. package/dist/use-form-B56E_x5Y.js +859 -0
  214. package/dist/use-form-Cnp3XQ5X.cjs +2 -0
  215. package/dist/utils-DEbsp9Q9.js +129 -0
  216. package/dist/utils-DIUEhA-Z.cjs +1 -0
  217. package/dist/{vi-CpZUeuSj.js → vi-BdzxA60L.js} +1 -1
  218. package/dist/{vi-ByBwvGQY.cjs → vi-CBmPaHxg.cjs} +1 -1
  219. package/dist/widget-customization-Dk7XcVly.cjs +1 -0
  220. package/dist/widget-customization-Ds9sicAg.js +1073 -0
  221. package/dist/{zh-DnxK0ieB.cjs → zh-Cb1b8uik.cjs} +1 -1
  222. package/dist/{zh-DJyhKO0I.js → zh-Dn1UJiZa.js} +1 -1
  223. package/package.json +59 -8
  224. package/dist/_commonjsHelpers-C6fGbg64.js +0 -6
  225. package/dist/_commonjsHelpers-DwGv2jUC.cjs +0 -1
  226. package/dist/deep-merge-CBIkQM4E.cjs +0 -1
  227. package/dist/duration-input-DHWhQJnn.cjs +0 -1
  228. package/dist/modal-CSHIhHvI.js +0 -654
  229. package/dist/modal-cc8Ehngz.cjs +0 -1
  230. package/dist/notice-C_BWqu2K.cjs +0 -1
  231. package/dist/toolbar-D5FcnRju.cjs +0 -1
  232. package/dist/translations-0tLX4x7M.js +0 -866
  233. package/dist/translations-WPN3ibDg.cjs +0 -1
  234. package/dist/use-form-D4JFOcjo.cjs +0 -2
  235. package/dist/use-form-D4rqJkvG.js +0 -1731
  236. package/dist/widget-customization-BSjJz3_Y.js +0 -1195
  237. package/dist/widget-customization-CrFVrt4V.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;
@@ -4512,445 +4735,1962 @@ a:focus-visible {
4512
4735
  color: var(--color-danger-400);
4513
4736
  }
4514
4737
 
4515
- /**
4516
- * JSON Structure Form Component Styles
4517
- *
4518
- * CSS styles for JSON Structure form components.
4519
- * Uses BEM-like naming with bc-json-structure- prefix.
4520
- */
4521
-
4522
- /* =============================================================================
4523
- Base Styles
4524
- ============================================================================= */
4738
+ /* JSON Schema Display - Read-only value rendering */
4525
4739
 
4526
- .bc-json-structure-form {
4527
- display: flex;
4528
- flex-direction: column;
4529
- gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
4740
+ /* Grid containers — parent holds the shared column tracks */
4741
+ .bc-json-schema-display__fields,
4742
+ .bc-json-schema-display__object {
4743
+ display: grid;
4744
+ grid-template-columns: auto 1fr;
4745
+ column-gap: calc(var(--spacing-base) * 3);
4530
4746
  }
4531
4747
 
4532
- /* =============================================================================
4533
- Object Layout
4534
- ============================================================================= */
4748
+ /* Each field spans both parent columns and inherits their sizing via subgrid */
4749
+ .bc-json-schema-display__field {
4750
+ display: grid;
4751
+ grid-template-columns: subgrid;
4752
+ grid-column: 1 / -1;
4753
+ row-gap: calc(var(--spacing-base) * 0.25);
4754
+ align-items: baseline;
4755
+ padding-block: calc(var(--spacing-base) * 0.5);
4756
+ }
4535
4757
 
4536
- .bc-json-structure-object {
4537
- border-left: calc(var(--spacing-base) * 2) solid var(--color-base-200);
4538
- padding-inline-start: calc(var(--spacing-base) * 2);
4758
+ /* Extra properties also participate in the shared grid */
4759
+ .bc-json-schema-display__extra-property {
4760
+ display: grid;
4761
+ grid-template-columns: subgrid;
4762
+ grid-column: 1 / -1;
4539
4763
  }
4540
4764
 
4541
- .bc-json-structure-object-fields {
4765
+ .bc-json-schema-display__label-row {
4542
4766
  display: flex;
4543
- flex-direction: column;
4544
- gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
4767
+ align-items: center;
4768
+ gap: calc(var(--spacing-base) * 1);
4769
+ grid-column: 1;
4770
+ max-width: 16rem;
4771
+ overflow: hidden;
4772
+ text-overflow: ellipsis;
4773
+ white-space: nowrap;
4545
4774
  }
4546
4775
 
4547
- .bc-json-structure-object--nested {
4548
- margin-top: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4776
+ .bc-json-schema-display__description,
4777
+ .bc-json-schema-display__mismatches {
4778
+ grid-column: 1 / -1;
4549
4779
  }
4550
4780
 
4551
- /* Additional properties */
4552
- .bc-json-structure-additional-property {
4553
- display: flex;
4554
- flex-direction: column;
4555
- gap: var(--spacing-stack-xs, var(--spacing-base));
4556
- padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4557
- border: 1px solid var(--color-base-200);
4558
- border-radius: var(--radius-sm);
4559
- background: var(--color-base-50);
4781
+ .bc-json-schema-display__label {
4782
+ font-size: var(--font-size-sm);
4783
+ font-weight: var(--font-weight-normal);
4784
+ color: var(--color-neutral-500);
4560
4785
  }
4561
4786
 
4562
- .bc-json-structure-additional-property-header {
4563
- display: flex;
4564
- justify-content: space-between;
4565
- align-items: center;
4566
- gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4787
+ .b-dark .bc-json-schema-display__label {
4788
+ color: var(--color-neutral-400);
4567
4789
  }
4568
4790
 
4569
- .bc-json-structure-additional-property-value {
4570
- padding-inline-start: calc(var(--spacing-base) * 2);
4791
+ .bc-json-schema-display__required {
4792
+ font-size: var(--font-size-sm);
4793
+ color: var(--color-danger-600);
4794
+ font-weight: var(--font-weight-bold);
4571
4795
  }
4572
4796
 
4573
- /* =============================================================================
4574
- Array/Set/Map Layout
4575
- ============================================================================= */
4797
+ .b-dark .bc-json-schema-display__required {
4798
+ color: var(--color-danger-400);
4799
+ }
4576
4800
 
4577
- .bc-json-structure-array,
4578
- .bc-json-structure-set,
4579
- .bc-json-structure-map {
4580
- display: flex;
4581
- flex-direction: column;
4582
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4801
+ .bc-json-schema-display__deprecated {
4802
+ font-size: var(--font-size-xs);
4803
+ color: var(--color-warning-600);
4804
+ background-color: var(--color-warning-100);
4805
+ padding: 0.1em calc(var(--spacing-base) * 1);
4806
+ border-radius: var(--radius-sm);
4807
+ font-weight: var(--font-weight-medium);
4583
4808
  }
4584
4809
 
4585
- .bc-json-structure-array-items,
4586
- .bc-json-structure-set-items,
4587
- .bc-json-structure-map-entries {
4588
- display: flex;
4589
- flex-direction: column;
4590
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4810
+ .b-dark .bc-json-schema-display__deprecated {
4811
+ color: var(--color-warning-300);
4812
+ background-color: var(--color-warning-900);
4591
4813
  }
4592
4814
 
4593
- .bc-json-structure-array-item,
4594
- .bc-json-structure-set-item,
4595
- .bc-json-structure-map-entry {
4596
- display: flex;
4597
- align-items: flex-start;
4598
- gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4815
+ .bc-json-schema-display__description {
4816
+ font-size: var(--font-size-xs);
4817
+ color: var(--text-muted-light);
4599
4818
  }
4600
4819
 
4601
- .bc-json-structure-array-item-content,
4602
- .bc-json-structure-set-item-content,
4603
- .bc-json-structure-map-entry-content {
4604
- flex: 1;
4605
- min-width: 0;
4820
+ .b-dark .bc-json-schema-display__description {
4821
+ color: var(--text-muted-dark);
4606
4822
  }
4607
4823
 
4608
- .bc-json-structure-array-item-actions,
4609
- .bc-json-structure-set-item-actions,
4610
- .bc-json-structure-map-entry-actions {
4611
- flex-shrink: 0;
4612
- }
4613
-
4614
- .bc-json-structure-collection-add {
4615
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
4824
+ .bc-json-schema-display__value {
4825
+ font-size: var(--font-size-sm);
4826
+ font-weight: var(--font-weight-medium);
4827
+ color: var(--color-neutral-900);
4616
4828
  }
4617
4829
 
4618
- /* Map entry specific styles */
4619
- .bc-json-structure-map-entry-header {
4620
- display: flex;
4621
- justify-content: space-between;
4622
- align-items: center;
4623
- gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4624
- margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
4830
+ .b-dark .bc-json-schema-display__value {
4831
+ color: var(--color-neutral-100);
4625
4832
  }
4626
4833
 
4627
- .bc-json-structure-map-entry-key {
4628
- font-family: var(--font-family-mono);
4629
- font-weight: 600;
4630
- color: var(--color-base-700);
4834
+ .bc-json-schema-display__value--null {
4835
+ font-size: var(--font-size-sm);
4836
+ color: var(--color-neutral-400);
4837
+ font-style: italic;
4631
4838
  }
4632
4839
 
4633
- .bc-json-structure-map-entry-value {
4634
- padding-inline-start: calc(var(--spacing-base) * 2);
4840
+ .b-dark .bc-json-schema-display__value--null {
4841
+ color: var(--color-neutral-500);
4635
4842
  }
4636
4843
 
4637
- /* Set error indicator */
4638
- .bc-json-structure-set-error {
4639
- color: var(--color-error-500, #dc2626);
4844
+ .bc-json-schema-display__value--missing {
4640
4845
  font-size: var(--font-size-sm);
4641
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
4846
+ color: var(--color-danger-600);
4847
+ font-style: italic;
4642
4848
  }
4643
4849
 
4644
- /* =============================================================================
4645
- Tuple Layout
4646
- ============================================================================= */
4850
+ .b-dark .bc-json-schema-display__value--missing {
4851
+ color: var(--color-danger-400);
4852
+ }
4647
4853
 
4648
- .bc-json-structure-tuple {
4649
- display: flex;
4650
- flex-direction: column;
4651
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4854
+ .bc-json-schema-display__value-context {
4855
+ font-size: var(--font-size-xs);
4856
+ color: var(--color-neutral-400);
4857
+ margin-left: calc(var(--spacing-base) * 1);
4652
4858
  }
4653
4859
 
4654
- .bc-json-structure-tuple-label {
4655
- font-weight: 600;
4656
- color: var(--color-base-700);
4657
- margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
4860
+ .b-dark .bc-json-schema-display__value-context {
4861
+ color: var(--color-neutral-500);
4658
4862
  }
4659
4863
 
4660
- .bc-json-structure-tuple-description {
4661
- color: var(--color-base-500);
4864
+ /* Links */
4865
+ .bc-json-schema-display__link {
4866
+ color: var(--color-primary-600);
4867
+ text-decoration: underline;
4662
4868
  font-size: var(--font-size-sm);
4663
- margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
4664
4869
  }
4665
4870
 
4666
- .bc-json-structure-tuple-elements {
4667
- display: flex;
4668
- flex-direction: column;
4669
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4871
+ .bc-json-schema-display__link:hover {
4872
+ color: var(--color-primary-700);
4670
4873
  }
4671
4874
 
4672
- .bc-json-structure-tuple-element {
4673
- display: flex;
4674
- flex-direction: column;
4675
- gap: var(--spacing-stack-xs, var(--spacing-base));
4875
+ .b-dark .bc-json-schema-display__link {
4876
+ color: var(--color-primary-400);
4676
4877
  }
4677
4878
 
4678
- .bc-json-structure-tuple-element-header {
4679
- display: flex;
4680
- align-items: center;
4681
- gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
4682
- color: var(--color-base-600);
4683
- font-size: var(--font-size-sm);
4879
+ .b-dark .bc-json-schema-display__link:hover {
4880
+ color: var(--color-primary-300);
4684
4881
  }
4685
4882
 
4686
- .bc-json-structure-tuple-position {
4687
- font-family: var(--font-family-mono);
4688
- font-weight: 600;
4689
- color: var(--color-base-500);
4883
+ /* Color swatch */
4884
+ .bc-json-schema-display__color-display {
4885
+ display: inline-flex;
4886
+ align-items: center;
4887
+ gap: calc(var(--spacing-base) * 1);
4690
4888
  }
4691
4889
 
4692
- .bc-json-structure-tuple-element-name {
4693
- font-weight: 500;
4890
+ .bc-json-schema-display__color-swatch {
4891
+ display: inline-block;
4892
+ width: 1.25rem;
4893
+ height: 1.25rem;
4894
+ border-radius: var(--radius-sm);
4895
+ border: 1px solid var(--color-neutral-300);
4896
+ vertical-align: middle;
4694
4897
  }
4695
4898
 
4696
- .bc-json-structure-tuple-element-control {
4697
- padding-inline-start: calc(var(--spacing-base) * 2);
4899
+ .b-dark .bc-json-schema-display__color-swatch {
4900
+ border-color: var(--color-neutral-600);
4698
4901
  }
4699
4902
 
4700
- /* =============================================================================
4701
- Choice Layout
4702
- ============================================================================= */
4703
-
4704
- .bc-json-structure-choice {
4705
- display: flex;
4706
- flex-direction: column;
4707
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4903
+ /* Monospace */
4904
+ .bc-json-schema-display__monospace {
4905
+ font-family: var(--font-family-mono, monospace);
4906
+ font-size: var(--font-size-sm);
4708
4907
  }
4709
4908
 
4710
- .bc-json-structure-choice-selector {
4711
- margin-bottom: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4909
+ /* Pre-formatted */
4910
+ .bc-json-schema-display__pre {
4911
+ font-family: var(--font-family-mono, monospace);
4912
+ font-size: var(--font-size-sm);
4913
+ white-space: pre-wrap;
4914
+ word-break: break-word;
4915
+ background-color: var(--color-neutral-50);
4916
+ padding: calc(var(--spacing-base) * 2);
4917
+ border-radius: var(--radius-md);
4918
+ border: 1px solid var(--color-neutral-200);
4919
+ margin: 0;
4920
+ overflow-x: auto;
4712
4921
  }
4713
4922
 
4714
- .bc-json-structure-choice-options {
4715
- padding-inline-start: calc(var(--spacing-base) * 2);
4923
+ .b-dark .bc-json-schema-display__pre {
4924
+ background-color: var(--color-neutral-800);
4925
+ border-color: var(--color-neutral-700);
4716
4926
  }
4717
4927
 
4718
- /* =============================================================================
4719
- Grid Layout (for objects with many properties)
4720
- ============================================================================= */
4721
-
4722
- .bc-structure-grid {
4723
- display: grid;
4928
+ /* Boolean */
4929
+ .bc-json-schema-display__boolean {
4930
+ display: inline-block;
4931
+ font-size: var(--font-size-sm);
4932
+ font-weight: var(--font-weight-medium);
4933
+ padding: 0 calc(var(--spacing-base) * 1.5);
4934
+ border-radius: var(--radius-full);
4935
+ line-height: 1.6;
4724
4936
  }
4725
4937
 
4726
- .bc-structure-grid--gap-4 {
4727
- gap: var(--spacing-stack-lg, calc(var(--spacing-base) * 4));
4938
+ .bc-json-schema-display__boolean--true {
4939
+ color: var(--color-success-700);
4940
+ background-color: var(--color-success-100);
4728
4941
  }
4729
4942
 
4730
- .bc-structure-grid--cols-1 {
4731
- grid-template-columns: repeat(1, minmax(0, 1fr));
4943
+ .bc-json-schema-display__boolean--false {
4944
+ color: var(--color-danger-700);
4945
+ background-color: var(--color-danger-100);
4732
4946
  }
4733
4947
 
4734
- .bc-structure-grid--cols-2 {
4735
- grid-template-columns: repeat(2, minmax(0, 1fr));
4948
+ .b-dark .bc-json-schema-display__boolean--true {
4949
+ color: var(--color-success-300);
4950
+ background-color: var(--color-success-900);
4736
4951
  }
4737
4952
 
4738
- .bc-structure-grid--cols-3 {
4739
- grid-template-columns: repeat(3, minmax(0, 1fr));
4953
+ .b-dark .bc-json-schema-display__boolean--false {
4954
+ color: var(--color-danger-300);
4955
+ background-color: var(--color-danger-900);
4740
4956
  }
4741
4957
 
4742
- .bc-structure-grid--cols-4 {
4743
- grid-template-columns: repeat(4, minmax(0, 1fr));
4958
+ /* Object */
4959
+ .bc-json-schema-display__object {
4960
+ border-left: calc(var(--spacing-base) * 2) solid var(--color-base-200);
4961
+ padding-inline-start: calc(var(--spacing-base) * 2);
4744
4962
  }
4745
4963
 
4746
- @media (width >= 40rem) {
4747
- .bc-structure-grid--cols-sm-1 {
4748
- grid-template-columns: repeat(1, minmax(0, 1fr));
4749
- }
4750
- .bc-structure-grid--cols-sm-2 {
4751
- grid-template-columns: repeat(2, minmax(0, 1fr));
4752
- }
4753
- .bc-structure-grid--cols-sm-3 {
4754
- grid-template-columns: repeat(3, minmax(0, 1fr));
4755
- }
4756
- .bc-structure-grid--cols-sm-4 {
4757
- grid-template-columns: repeat(4, minmax(0, 1fr));
4758
- }
4964
+ .b-dark .bc-json-schema-display__object {
4965
+ border-left-color: var(--color-neutral-700);
4759
4966
  }
4760
4967
 
4761
- @media (width >= 48rem) {
4762
- .bc-structure-grid--cols-md-1 {
4763
- grid-template-columns: repeat(1, minmax(0, 1fr));
4764
- }
4765
- .bc-structure-grid--cols-md-2 {
4766
- grid-template-columns: repeat(2, minmax(0, 1fr));
4767
- }
4768
- .bc-structure-grid--cols-md-3 {
4769
- grid-template-columns: repeat(3, minmax(0, 1fr));
4770
- }
4771
- .bc-structure-grid--cols-md-4 {
4772
- grid-template-columns: repeat(4, minmax(0, 1fr));
4773
- }
4968
+ /* Extra properties */
4969
+ .bc-json-schema-display__extra-property {
4970
+ opacity: 0.7;
4971
+ border-left: 2px dashed var(--color-warning-400);
4972
+ padding-inline-start: calc(var(--spacing-base) * 2);
4774
4973
  }
4775
4974
 
4776
- @media (width >= 64rem) {
4777
- .bc-structure-grid--cols-lg-1 {
4778
- grid-template-columns: repeat(1, minmax(0, 1fr));
4779
- }
4780
- .bc-structure-grid--cols-lg-2 {
4781
- grid-template-columns: repeat(2, minmax(0, 1fr));
4782
- }
4783
- .bc-structure-grid--cols-lg-3 {
4784
- grid-template-columns: repeat(3, minmax(0, 1fr));
4785
- }
4786
- .bc-structure-grid--cols-lg-4 {
4787
- grid-template-columns: repeat(4, minmax(0, 1fr));
4788
- }
4975
+ .b-dark .bc-json-schema-display__extra-property {
4976
+ border-left-color: var(--color-warning-600);
4789
4977
  }
4790
4978
 
4791
- /* =============================================================================
4792
- Validation States
4793
- ============================================================================= */
4979
+ /* Array */
4980
+ .bc-json-schema-display__array {
4981
+ display: flex;
4982
+ flex-direction: column;
4983
+ }
4794
4984
 
4795
- .bc-json-structure-error {
4796
- color: var(--color-error-500, #dc2626);
4797
- font-size: var(--font-size-sm);
4798
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
4985
+ .bc-json-schema-display__array-item {
4986
+ display: flex;
4987
+ gap: calc(var(--spacing-base) * 1.5);
4988
+ align-items: baseline;
4799
4989
  }
4800
4990
 
4801
- .bc-json-structure-field--invalid {
4802
- --field-border-color: var(--color-error-500, #dc2626);
4991
+ /* Strip field wrapper padding inside array items */
4992
+ .bc-json-schema-display__array-item > .bc-json-schema-display__field {
4993
+ padding-block: 0;
4803
4994
  }
4804
4995
 
4805
- .bc-json-structure-field--valid {
4806
- --field-border-color: var(--color-success-500, #16a34a);
4996
+ .bc-json-schema-display__array-index {
4997
+ font-size: var(--font-size-sm);
4998
+ font-weight: var(--font-weight-normal);
4999
+ color: var(--color-neutral-400);
5000
+ font-family: var(--font-family-mono, monospace);
5001
+ min-width: 2rem;
5002
+ text-align: right;
5003
+ flex-shrink: 0;
4807
5004
  }
4808
5005
 
4809
- /* =============================================================================
4810
- Metadata Display
4811
- ============================================================================= */
5006
+ .b-dark .bc-json-schema-display__array-index {
5007
+ color: var(--color-neutral-500);
5008
+ }
4812
5009
 
4813
- .bc-json-structure-description {
4814
- color: var(--color-base-500);
5010
+ .bc-json-schema-display__empty {
4815
5011
  font-size: var(--font-size-sm);
4816
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
5012
+ color: var(--color-neutral-400);
5013
+ font-style: italic;
4817
5014
  }
4818
5015
 
4819
- .bc-json-structure-deprecated {
4820
- opacity: 0.7;
4821
- position: relative;
5016
+ .b-dark .bc-json-schema-display__empty {
5017
+ color: var(--color-neutral-500);
4822
5018
  }
4823
5019
 
4824
- .bc-json-structure-deprecated::before {
4825
- content: '(deprecated)';
4826
- position: absolute;
4827
- top: 0;
4828
- right: 0;
5020
+ /* Composition (oneOf/anyOf) branch label */
5021
+ .bc-json-schema-display__branch-label {
4829
5022
  font-size: var(--font-size-xs);
4830
- color: var(--color-warning-500, #d97706);
4831
- background: var(--color-warning-100, #fef3c7);
4832
- padding: 0.125em 0.5em;
5023
+ font-weight: var(--font-weight-medium);
5024
+ color: var(--color-primary-600);
5025
+ padding: 0 calc(var(--spacing-base) * 1);
5026
+ background-color: var(--color-primary-50);
4833
5027
  border-radius: var(--radius-sm);
5028
+ display: inline-block;
5029
+ margin-bottom: calc(var(--spacing-base) * 1);
4834
5030
  }
4835
5031
 
4836
- .bc-json-structure-deprecated-badge {
4837
- display: inline-flex;
4838
- align-items: center;
4839
- gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
4840
- font-size: var(--font-size-xs);
4841
- color: var(--color-warning-700);
4842
- background: var(--color-warning-100);
4843
- padding: 0.125em 0.5em;
4844
- border-radius: var(--radius-sm);
4845
- margin-inline-start: var(
4846
- --spacing-inline-xs,
4847
- calc(var(--spacing-base) * 0.5)
4848
- );
5032
+ .b-dark .bc-json-schema-display__branch-label {
5033
+ color: var(--color-primary-300);
5034
+ background-color: var(--color-primary-900);
4849
5035
  }
4850
5036
 
4851
- .bc-json-structure-required-indicator {
4852
- color: var(--color-error-500, #dc2626);
4853
- margin-inline-start: 0.25em;
5037
+ .bc-json-schema-display__branch-label--ambiguous {
5038
+ color: var(--color-warning-700);
5039
+ background-color: var(--color-warning-100);
4854
5040
  }
4855
5041
 
4856
- /* =============================================================================
4857
- Const/Enum Display
4858
- ============================================================================= */
5042
+ .b-dark .bc-json-schema-display__branch-label--ambiguous {
5043
+ color: var(--color-warning-300);
5044
+ background-color: var(--color-warning-900);
5045
+ }
4859
5046
 
4860
- .bc-json-structure-const {
4861
- font-family: var(--font-family-mono);
4862
- background: var(--color-base-100);
4863
- padding: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5))
4864
- var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4865
- border-radius: var(--radius-sm);
4866
- color: var(--color-base-600);
5047
+ .bc-json-schema-display__branch-label--no-match {
5048
+ color: var(--color-danger-700);
5049
+ background-color: var(--color-danger-100);
4867
5050
  }
4868
5051
 
4869
- /* =============================================================================
4870
- Read-Only State
4871
- ============================================================================= */
5052
+ .b-dark .bc-json-schema-display__branch-label--no-match {
5053
+ color: var(--color-danger-300);
5054
+ background-color: var(--color-danger-900);
5055
+ }
4872
5056
 
4873
- .bc-json-structure-readonly {
4874
- pointer-events: none;
4875
- opacity: 0.7;
5057
+ /* Mismatch indicators */
5058
+ .bc-json-schema-display__mismatches {
5059
+ display: flex;
5060
+ flex-wrap: wrap;
5061
+ gap: calc(var(--spacing-base) * 1);
4876
5062
  }
4877
5063
 
4878
- .bc-json-structure-readonly input,
4879
- .bc-json-structure-readonly select,
4880
- .bc-json-structure-readonly textarea {
4881
- background: var(--color-base-100);
4882
- cursor: not-allowed;
5064
+ .bc-json-schema-display__mismatch {
5065
+ font-size: var(--font-size-xs);
5066
+ font-weight: var(--font-weight-medium);
5067
+ padding: 0 calc(var(--spacing-base) * 1.5);
5068
+ border-radius: var(--radius-full);
5069
+ line-height: 1.6;
5070
+ }
5071
+
5072
+ .bc-json-schema-display__mismatch--type-mismatch {
5073
+ color: var(--color-danger-700);
5074
+ background-color: var(--color-danger-100);
5075
+ }
5076
+
5077
+ .bc-json-schema-display__mismatch--missing-required {
5078
+ color: var(--color-danger-700);
5079
+ background-color: var(--color-danger-100);
5080
+ }
5081
+
5082
+ .bc-json-schema-display__mismatch--extra-property {
5083
+ color: var(--color-warning-700);
5084
+ background-color: var(--color-warning-100);
5085
+ }
5086
+
5087
+ .bc-json-schema-display__mismatch--enum-mismatch {
5088
+ color: var(--color-warning-700);
5089
+ background-color: var(--color-warning-100);
5090
+ }
5091
+
5092
+ .bc-json-schema-display__mismatch--const-mismatch {
5093
+ color: var(--color-warning-700);
5094
+ background-color: var(--color-warning-100);
5095
+ }
5096
+
5097
+ .bc-json-schema-display__mismatch--constraint-violation {
5098
+ color: var(--color-danger-700);
5099
+ background-color: var(--color-danger-100);
5100
+ }
5101
+
5102
+ .bc-json-schema-display__mismatch-indicator {
5103
+ font-size: var(--font-size-xs);
5104
+ color: var(--color-danger-600);
5105
+ font-style: italic;
5106
+ margin-left: calc(var(--spacing-base) * 1);
5107
+ }
5108
+
5109
+ .b-dark .bc-json-schema-display__mismatch--type-mismatch,
5110
+ .b-dark .bc-json-schema-display__mismatch--missing-required {
5111
+ color: var(--color-danger-300);
5112
+ background-color: var(--color-danger-900);
5113
+ }
5114
+
5115
+ .b-dark .bc-json-schema-display__mismatch--extra-property,
5116
+ .b-dark .bc-json-schema-display__mismatch--enum-mismatch,
5117
+ .b-dark .bc-json-schema-display__mismatch--const-mismatch {
5118
+ color: var(--color-warning-300);
5119
+ background-color: var(--color-warning-900);
4883
5120
  }
4884
5121
 
5122
+ .b-dark .bc-json-schema-display__mismatch--constraint-violation {
5123
+ color: var(--color-danger-300);
5124
+ background-color: var(--color-danger-900);
5125
+ }
5126
+
5127
+ .b-dark .bc-json-schema-display__mismatch-indicator {
5128
+ color: var(--color-danger-400);
5129
+ }
5130
+
5131
+ /**
5132
+ * JSON Structure Form Component Styles
5133
+ *
5134
+ * CSS styles for JSON Structure form components.
5135
+ * Uses BEM-like naming with bc-json-structure- prefix.
5136
+ */
5137
+
4885
5138
  /* =============================================================================
4886
- Placeholder Styles (temporary, for development)
5139
+ Base Styles
4887
5140
  ============================================================================= */
4888
5141
 
4889
- .bc-json-structure-placeholder {
5142
+ .bc-json-structure-form {
5143
+ display: flex;
5144
+ flex-direction: column;
5145
+ gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
5146
+ }
5147
+
5148
+ /* =============================================================================
5149
+ Object Layout
5150
+ ============================================================================= */
5151
+
5152
+ .bc-json-structure-object {
5153
+ border-left: calc(var(--spacing-base) * 2) solid var(--color-base-200);
5154
+ padding-inline-start: calc(var(--spacing-base) * 2);
5155
+ }
5156
+
5157
+ .bc-json-structure-object-fields {
5158
+ display: flex;
5159
+ flex-direction: column;
5160
+ gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
5161
+ }
5162
+
5163
+ .bc-json-structure-object--nested {
5164
+ margin-top: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5165
+ }
5166
+
5167
+ /* Additional properties */
5168
+ .bc-json-structure-additional-property {
4890
5169
  display: flex;
4891
5170
  flex-direction: column;
4892
5171
  gap: var(--spacing-stack-xs, var(--spacing-base));
4893
5172
  padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4894
- border: 1px dashed var(--color-base-300);
4895
- border-radius: var(--radius-md);
5173
+ border: 1px solid var(--color-base-200);
5174
+ border-radius: var(--radius-sm);
4896
5175
  background: var(--color-base-50);
4897
5176
  }
4898
5177
 
4899
- .bc-json-structure-placeholder > span:first-child {
4900
- font-size: var(--font-size-xs);
4901
- color: var(--color-base-400);
5178
+ .bc-json-structure-additional-property-header {
5179
+ display: flex;
5180
+ justify-content: space-between;
5181
+ align-items: center;
5182
+ gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5183
+ }
5184
+
5185
+ .bc-json-structure-additional-property-value {
5186
+ padding-inline-start: calc(var(--spacing-base) * 2);
5187
+ }
5188
+
5189
+ /* =============================================================================
5190
+ Array/Set/Map Layout
5191
+ ============================================================================= */
5192
+
5193
+ .bc-json-structure-array,
5194
+ .bc-json-structure-set,
5195
+ .bc-json-structure-map {
5196
+ display: flex;
5197
+ flex-direction: column;
5198
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5199
+ }
5200
+
5201
+ .bc-json-structure-array-items,
5202
+ .bc-json-structure-set-items,
5203
+ .bc-json-structure-map-entries {
5204
+ display: flex;
5205
+ flex-direction: column;
5206
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5207
+ }
5208
+
5209
+ .bc-json-structure-array-item,
5210
+ .bc-json-structure-set-item,
5211
+ .bc-json-structure-map-entry {
5212
+ display: flex;
5213
+ align-items: flex-start;
5214
+ gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5215
+ }
5216
+
5217
+ .bc-json-structure-array-item-content,
5218
+ .bc-json-structure-set-item-content,
5219
+ .bc-json-structure-map-entry-content {
5220
+ flex: 1;
5221
+ min-width: 0;
5222
+ }
5223
+
5224
+ .bc-json-structure-array-item-actions,
5225
+ .bc-json-structure-set-item-actions,
5226
+ .bc-json-structure-map-entry-actions {
5227
+ flex-shrink: 0;
5228
+ }
5229
+
5230
+ .bc-json-structure-collection-add {
5231
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5232
+ }
5233
+
5234
+ /* Map entry specific styles */
5235
+ .bc-json-structure-map-entry-header {
5236
+ display: flex;
5237
+ justify-content: space-between;
5238
+ align-items: center;
5239
+ gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5240
+ margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5241
+ }
5242
+
5243
+ .bc-json-structure-map-entry-key {
4902
5244
  font-family: var(--font-family-mono);
5245
+ font-weight: 600;
5246
+ color: var(--color-base-700);
4903
5247
  }
4904
5248
 
4905
- .bc-json-structure-unknown {
5249
+ .bc-json-structure-map-entry-value {
5250
+ padding-inline-start: calc(var(--spacing-base) * 2);
5251
+ }
5252
+
5253
+ /* Set error indicator */
5254
+ .bc-json-structure-set-error {
5255
+ color: var(--color-error-500, #dc2626);
5256
+ font-size: var(--font-size-sm);
5257
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5258
+ }
5259
+
5260
+ /* =============================================================================
5261
+ Tuple Layout
5262
+ ============================================================================= */
5263
+
5264
+ .bc-json-structure-tuple {
5265
+ display: flex;
5266
+ flex-direction: column;
5267
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5268
+ }
5269
+
5270
+ .bc-json-structure-tuple-label {
5271
+ font-weight: 600;
5272
+ color: var(--color-base-700);
5273
+ margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5274
+ }
5275
+
5276
+ .bc-json-structure-tuple-description {
5277
+ color: var(--color-base-500);
5278
+ font-size: var(--font-size-sm);
5279
+ margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5280
+ }
5281
+
5282
+ .bc-json-structure-tuple-elements {
5283
+ display: flex;
5284
+ flex-direction: column;
5285
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5286
+ }
5287
+
5288
+ .bc-json-structure-tuple-element {
4906
5289
  display: flex;
4907
5290
  flex-direction: column;
4908
5291
  gap: var(--spacing-stack-xs, var(--spacing-base));
4909
- padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4910
- border: 1px solid var(--color-warning-300);
4911
- border-radius: var(--radius-md);
4912
- background: var(--color-warning-50);
4913
- color: var(--color-warning-700);
4914
5292
  }
4915
5293
 
4916
- .bc-label {
5294
+ .bc-json-structure-tuple-element-header {
5295
+ display: flex;
5296
+ align-items: center;
5297
+ gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
5298
+ color: var(--color-base-600);
4917
5299
  font-size: var(--font-size-sm);
4918
- line-height: var(--line-height-normal);
4919
- font-family: var(
4920
- --default-ui-font-family,
4921
- var(--font-ui, var(--font-body, var(--font-family-sans)))
4922
- );
4923
5300
  }
4924
5301
 
4925
- .bc-label--emphasis {
4926
- font-weight: var(--font-weight-bold);
5302
+ .bc-json-structure-tuple-position {
5303
+ font-family: var(--font-family-mono);
5304
+ font-weight: 600;
5305
+ color: var(--color-base-500);
4927
5306
  }
4928
5307
 
4929
- .bc-label--default {
4930
- font-weight: var(--font-weight-medium);
5308
+ .bc-json-structure-tuple-element-name {
5309
+ font-weight: 500;
4931
5310
  }
4932
5311
 
4933
- .bc-label--muted {
4934
- font-weight: var(--font-weight-medium);
4935
- opacity: 0.5;
5312
+ .bc-json-structure-tuple-element-control {
5313
+ padding-inline-start: calc(var(--spacing-base) * 2);
4936
5314
  }
4937
5315
 
4938
- .bc-label--danger {
4939
- font-weight: var(--font-weight-medium);
4940
- color: var(--color-danger-500);
5316
+ /* =============================================================================
5317
+ Choice Layout
5318
+ ============================================================================= */
5319
+
5320
+ .bc-json-structure-choice {
5321
+ display: flex;
5322
+ flex-direction: column;
5323
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4941
5324
  }
4942
5325
 
4943
- /* Dark mode styles */
4944
- .b-dark .bc-label {
4945
- color: var(--text-normal-dark);
5326
+ .bc-json-structure-choice-selector {
5327
+ margin-bottom: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
4946
5328
  }
4947
5329
 
4948
- .b-dark .bc-label--muted {
4949
- color: var(--text-muted-dark);
5330
+ .bc-json-structure-choice-options {
5331
+ padding-inline-start: calc(var(--spacing-base) * 2);
4950
5332
  }
4951
5333
 
4952
- .b-dark .bc-label--danger {
4953
- color: var(--color-danger-400);
5334
+ /* =============================================================================
5335
+ Grid Layout (for objects with many properties)
5336
+ ============================================================================= */
5337
+
5338
+ .bc-structure-grid {
5339
+ display: grid;
5340
+ }
5341
+
5342
+ .bc-structure-grid--gap-4 {
5343
+ gap: var(--spacing-stack-lg, calc(var(--spacing-base) * 4));
5344
+ }
5345
+
5346
+ .bc-structure-grid--cols-1 {
5347
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5348
+ }
5349
+
5350
+ .bc-structure-grid--cols-2 {
5351
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5352
+ }
5353
+
5354
+ .bc-structure-grid--cols-3 {
5355
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5356
+ }
5357
+
5358
+ .bc-structure-grid--cols-4 {
5359
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5360
+ }
5361
+
5362
+ @media (width >= 40rem) {
5363
+ .bc-structure-grid--cols-sm-1 {
5364
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5365
+ }
5366
+ .bc-structure-grid--cols-sm-2 {
5367
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5368
+ }
5369
+ .bc-structure-grid--cols-sm-3 {
5370
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5371
+ }
5372
+ .bc-structure-grid--cols-sm-4 {
5373
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5374
+ }
5375
+ }
5376
+
5377
+ @media (width >= 48rem) {
5378
+ .bc-structure-grid--cols-md-1 {
5379
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5380
+ }
5381
+ .bc-structure-grid--cols-md-2 {
5382
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5383
+ }
5384
+ .bc-structure-grid--cols-md-3 {
5385
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5386
+ }
5387
+ .bc-structure-grid--cols-md-4 {
5388
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5389
+ }
5390
+ }
5391
+
5392
+ @media (width >= 64rem) {
5393
+ .bc-structure-grid--cols-lg-1 {
5394
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5395
+ }
5396
+ .bc-structure-grid--cols-lg-2 {
5397
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5398
+ }
5399
+ .bc-structure-grid--cols-lg-3 {
5400
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5401
+ }
5402
+ .bc-structure-grid--cols-lg-4 {
5403
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5404
+ }
5405
+ }
5406
+
5407
+ /* =============================================================================
5408
+ Validation States
5409
+ ============================================================================= */
5410
+
5411
+ .bc-json-structure-error {
5412
+ color: var(--color-error-500, #dc2626);
5413
+ font-size: var(--font-size-sm);
5414
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5415
+ }
5416
+
5417
+ .bc-json-structure-field--invalid {
5418
+ --field-border-color: var(--color-error-500, #dc2626);
5419
+ }
5420
+
5421
+ .bc-json-structure-field--valid {
5422
+ --field-border-color: var(--color-success-500, #16a34a);
5423
+ }
5424
+
5425
+ /* =============================================================================
5426
+ Metadata Display
5427
+ ============================================================================= */
5428
+
5429
+ .bc-json-structure-description {
5430
+ color: var(--color-base-500);
5431
+ font-size: var(--font-size-sm);
5432
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5433
+ }
5434
+
5435
+ .bc-json-structure-deprecated {
5436
+ opacity: 0.7;
5437
+ position: relative;
5438
+ }
5439
+
5440
+ .bc-json-structure-deprecated::before {
5441
+ content: '(deprecated)';
5442
+ position: absolute;
5443
+ top: 0;
5444
+ right: 0;
5445
+ font-size: var(--font-size-xs);
5446
+ color: var(--color-warning-500, #d97706);
5447
+ background: var(--color-warning-100, #fef3c7);
5448
+ padding: 0.125em 0.5em;
5449
+ border-radius: var(--radius-sm);
5450
+ }
5451
+
5452
+ .bc-json-structure-deprecated-badge {
5453
+ display: inline-flex;
5454
+ align-items: center;
5455
+ gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
5456
+ font-size: var(--font-size-xs);
5457
+ color: var(--color-warning-700);
5458
+ background: var(--color-warning-100);
5459
+ padding: 0.125em 0.5em;
5460
+ border-radius: var(--radius-sm);
5461
+ margin-inline-start: var(
5462
+ --spacing-inline-xs,
5463
+ calc(var(--spacing-base) * 0.5)
5464
+ );
5465
+ }
5466
+
5467
+ .bc-json-structure-required-indicator {
5468
+ color: var(--color-error-500, #dc2626);
5469
+ margin-inline-start: 0.25em;
5470
+ }
5471
+
5472
+ /* =============================================================================
5473
+ Const/Enum Display
5474
+ ============================================================================= */
5475
+
5476
+ .bc-json-structure-const {
5477
+ font-family: var(--font-family-mono);
5478
+ background: var(--color-base-100);
5479
+ padding: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5))
5480
+ var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5481
+ border-radius: var(--radius-sm);
5482
+ color: var(--color-base-600);
5483
+ }
5484
+
5485
+ /* =============================================================================
5486
+ Read-Only State
5487
+ ============================================================================= */
5488
+
5489
+ .bc-json-structure-readonly {
5490
+ pointer-events: none;
5491
+ opacity: 0.7;
5492
+ }
5493
+
5494
+ .bc-json-structure-readonly input,
5495
+ .bc-json-structure-readonly select,
5496
+ .bc-json-structure-readonly textarea {
5497
+ background: var(--color-base-100);
5498
+ cursor: not-allowed;
5499
+ }
5500
+
5501
+ /* =============================================================================
5502
+ Placeholder Styles (temporary, for development)
5503
+ ============================================================================= */
5504
+
5505
+ .bc-json-structure-placeholder {
5506
+ display: flex;
5507
+ flex-direction: column;
5508
+ gap: var(--spacing-stack-xs, var(--spacing-base));
5509
+ padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5510
+ border: 1px dashed var(--color-base-300);
5511
+ border-radius: var(--radius-md);
5512
+ background: var(--color-base-50);
5513
+ }
5514
+
5515
+ .bc-json-structure-placeholder > span:first-child {
5516
+ font-size: var(--font-size-xs);
5517
+ color: var(--color-base-400);
5518
+ font-family: var(--font-family-mono);
5519
+ }
5520
+
5521
+ .bc-json-structure-unknown {
5522
+ display: flex;
5523
+ flex-direction: column;
5524
+ gap: var(--spacing-stack-xs, var(--spacing-base));
5525
+ padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5526
+ border: 1px solid var(--color-warning-300);
5527
+ border-radius: var(--radius-md);
5528
+ background: var(--color-warning-50);
5529
+ color: var(--color-warning-700);
5530
+ }
5531
+
5532
+ .bc-label {
5533
+ font-size: var(--font-size-sm);
5534
+ line-height: var(--line-height-normal);
5535
+ font-family: var(
5536
+ --default-ui-font-family,
5537
+ var(--font-ui, var(--font-body, var(--font-family-sans)))
5538
+ );
5539
+ }
5540
+
5541
+ .bc-label--emphasis {
5542
+ font-weight: var(--font-weight-bold);
5543
+ }
5544
+
5545
+ .bc-label--default {
5546
+ font-weight: var(--font-weight-medium);
5547
+ }
5548
+
5549
+ .bc-label--muted {
5550
+ font-weight: var(--font-weight-medium);
5551
+ opacity: 0.5;
5552
+ }
5553
+
5554
+ .bc-label--danger {
5555
+ font-weight: var(--font-weight-medium);
5556
+ color: var(--color-danger-500);
5557
+ }
5558
+
5559
+ /* Dark mode styles */
5560
+ .b-dark .bc-label {
5561
+ color: var(--text-normal-dark);
5562
+ }
5563
+
5564
+ .b-dark .bc-label--muted {
5565
+ color: var(--text-muted-dark);
5566
+ }
5567
+
5568
+ .b-dark .bc-label--danger {
5569
+ color: var(--color-danger-400);
5570
+ }
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
+ }
4954
6694
  }
4955
6695
 
4956
6696
  /* Link Component */