@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
package/dist/beatui.css CHANGED
@@ -1974,6 +1974,229 @@ a:focus-visible {
1974
1974
  background-color: var(--color-white);
1975
1975
  }
1976
1976
 
1977
+ /* Two-Factor Authentication Component */
1978
+ .bc-two-factor {
1979
+ display: flex;
1980
+ flex-direction: column;
1981
+ gap: var(--spacing-stack-xl, var(--spacing-xl));
1982
+ width: 100%;
1983
+ }
1984
+
1985
+ .bc-two-factor__form {
1986
+ display: flex;
1987
+ flex-direction: column;
1988
+ gap: var(--spacing-stack-xl, var(--spacing-xl));
1989
+ }
1990
+
1991
+ /* Method selector */
1992
+ .bc-two-factor__methods {
1993
+ display: flex;
1994
+ gap: var(--spacing-sm);
1995
+ border-bottom: 1px solid var(--color-neutral-200);
1996
+ padding-bottom: var(--spacing-sm);
1997
+ }
1998
+
1999
+ .b-dark .bc-two-factor__methods {
2000
+ border-bottom-color: var(--color-neutral-700);
2001
+ }
2002
+
2003
+ .bc-two-factor__method-button {
2004
+ background: none;
2005
+ border: none;
2006
+ padding: var(--spacing-xs) var(--spacing-sm);
2007
+ font-size: var(--font-size-sm);
2008
+ color: var(--text-muted-light);
2009
+ cursor: pointer;
2010
+ border-radius: var(--radius-sm);
2011
+ transition: all
2012
+ var(--motion-transition-fast, var(--motion-duration-fast, 0.2s))
2013
+ var(--motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));
2014
+ }
2015
+
2016
+ .bc-two-factor__method-button:hover {
2017
+ color: var(--text-normal-light);
2018
+ background-color: var(--color-neutral-100);
2019
+ }
2020
+
2021
+ .bc-two-factor__method-button--active {
2022
+ color: var(--color-primary-600);
2023
+ font-weight: var(--font-weight-semibold);
2024
+ border-bottom: 2px solid var(--color-primary-600);
2025
+ }
2026
+
2027
+ .b-dark .bc-two-factor__method-button {
2028
+ color: var(--text-muted-dark);
2029
+ }
2030
+
2031
+ .b-dark .bc-two-factor__method-button:hover {
2032
+ color: var(--text-normal-dark);
2033
+ background-color: var(--color-neutral-800);
2034
+ }
2035
+
2036
+ .b-dark .bc-two-factor__method-button--active {
2037
+ color: var(--color-primary-400);
2038
+ border-bottom-color: var(--color-primary-400);
2039
+ }
2040
+
2041
+ /* TOTP URI display */
2042
+ .bc-two-factor__totp-uri {
2043
+ display: flex;
2044
+ flex-direction: column;
2045
+ gap: var(--spacing-md);
2046
+ align-items: center;
2047
+ }
2048
+
2049
+ .bc-two-factor__code-display {
2050
+ display: block;
2051
+ padding: var(--spacing-md);
2052
+ background-color: var(--color-neutral-100);
2053
+ border-radius: var(--radius-md);
2054
+ font-family: var(--font-mono);
2055
+ font-size: var(--font-size-xs);
2056
+ word-break: break-all;
2057
+ text-align: center;
2058
+ }
2059
+
2060
+ .b-dark .bc-two-factor__code-display {
2061
+ background-color: var(--color-neutral-800);
2062
+ }
2063
+
2064
+ /* Backup codes */
2065
+ .bc-two-factor__backup-codes {
2066
+ display: flex;
2067
+ flex-direction: column;
2068
+ gap: var(--spacing-sm);
2069
+ }
2070
+
2071
+ .bc-two-factor__backup-codes ul {
2072
+ display: grid;
2073
+ grid-template-columns: repeat(2, 1fr);
2074
+ gap: var(--spacing-xs);
2075
+ list-style: none;
2076
+ margin: 0;
2077
+ padding: 0;
2078
+ }
2079
+
2080
+ .bc-two-factor__backup-codes li {
2081
+ padding: var(--spacing-xs) var(--spacing-sm);
2082
+ background-color: var(--color-neutral-100);
2083
+ border-radius: var(--radius-sm);
2084
+ font-family: var(--font-mono);
2085
+ font-size: var(--font-size-sm);
2086
+ text-align: center;
2087
+ }
2088
+
2089
+ .b-dark .bc-two-factor__backup-codes li {
2090
+ background-color: var(--color-neutral-800);
2091
+ }
2092
+
2093
+ /* Complete state */
2094
+ .bc-two-factor__complete {
2095
+ text-align: center;
2096
+ }
2097
+
2098
+ /* Code input */
2099
+ .bc-two-factor__code-input {
2100
+ text-align: center;
2101
+ letter-spacing: 0.5em;
2102
+ font-size: var(--font-size-xl);
2103
+ font-family: var(--font-mono);
2104
+ }
2105
+
2106
+ /* Reduced motion support */
2107
+ @media (prefers-reduced-motion: reduce) {
2108
+ .bc-two-factor__method-button {
2109
+ transition: none;
2110
+ }
2111
+ }
2112
+
2113
+ /* Passkey Components */
2114
+
2115
+ /* Passkey management */
2116
+ .bc-passkey-management {
2117
+ display: flex;
2118
+ flex-direction: column;
2119
+ gap: var(--spacing-xl);
2120
+ width: 100%;
2121
+ }
2122
+
2123
+ /* Passkey list */
2124
+ .bc-passkey-list {
2125
+ display: flex;
2126
+ flex-direction: column;
2127
+ gap: var(--spacing-sm);
2128
+ }
2129
+
2130
+ .bc-passkey-item {
2131
+ display: flex;
2132
+ align-items: center;
2133
+ justify-content: space-between;
2134
+ gap: var(--spacing-md);
2135
+ padding: var(--spacing-sm) var(--spacing-md);
2136
+ background-color: var(--color-neutral-50);
2137
+ border-radius: var(--radius-md);
2138
+ border: 1px solid var(--color-neutral-200);
2139
+ }
2140
+
2141
+ .b-dark .bc-passkey-item {
2142
+ background-color: var(--color-neutral-900);
2143
+ border-color: var(--color-neutral-700);
2144
+ }
2145
+
2146
+ .bc-passkey-item__info {
2147
+ display: flex;
2148
+ flex-direction: column;
2149
+ gap: var(--spacing-xs);
2150
+ flex: 1;
2151
+ min-width: 0;
2152
+ }
2153
+
2154
+ .bc-passkey-item__name {
2155
+ font-size: var(--font-size-sm);
2156
+ font-weight: var(--font-weight-medium);
2157
+ color: var(--text-normal-light);
2158
+ overflow: hidden;
2159
+ text-overflow: ellipsis;
2160
+ white-space: nowrap;
2161
+ }
2162
+
2163
+ .b-dark .bc-passkey-item__name {
2164
+ color: var(--text-normal-dark);
2165
+ }
2166
+
2167
+ .bc-passkey-item__date {
2168
+ font-size: var(--font-size-xs);
2169
+ color: var(--text-muted-light);
2170
+ }
2171
+
2172
+ .b-dark .bc-passkey-item__date {
2173
+ color: var(--text-muted-dark);
2174
+ }
2175
+
2176
+ .bc-passkey-item__edit {
2177
+ flex: 1;
2178
+ min-width: 0;
2179
+ }
2180
+
2181
+ .bc-passkey-item__actions {
2182
+ display: flex;
2183
+ gap: var(--spacing-xs);
2184
+ flex-shrink: 0;
2185
+ }
2186
+
2187
+ /* Add passkey */
2188
+ .bc-passkey-add {
2189
+ display: flex;
2190
+ flex-direction: column;
2191
+ gap: var(--spacing-md);
2192
+ }
2193
+
2194
+ /* Sign-in button */
2195
+ .bc-passkey-signin {
2196
+ width: 100%;
2197
+ justify-content: center;
2198
+ }
2199
+
1977
2200
  /* Badge Component */
1978
2201
  .bc-badge {
1979
2202
  --badge-bg: transparent;
@@ -4837,445 +5060,1962 @@ a:focus-visible {
4837
5060
  color: var(--color-danger-400);
4838
5061
  }
4839
5062
 
4840
- /**
4841
- * JSON Structure Form Component Styles
4842
- *
4843
- * CSS styles for JSON Structure form components.
4844
- * Uses BEM-like naming with bc-json-structure- prefix.
4845
- */
4846
-
4847
- /* =============================================================================
4848
- Base Styles
4849
- ============================================================================= */
5063
+ /* JSON Schema Display - Read-only value rendering */
4850
5064
 
4851
- .bc-json-structure-form {
4852
- display: flex;
4853
- flex-direction: column;
4854
- gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
5065
+ /* Grid containers — parent holds the shared column tracks */
5066
+ .bc-json-schema-display__fields,
5067
+ .bc-json-schema-display__object {
5068
+ display: grid;
5069
+ grid-template-columns: auto 1fr;
5070
+ column-gap: calc(var(--spacing-base) * 3);
4855
5071
  }
4856
5072
 
4857
- /* =============================================================================
4858
- Object Layout
4859
- ============================================================================= */
5073
+ /* Each field spans both parent columns and inherits their sizing via subgrid */
5074
+ .bc-json-schema-display__field {
5075
+ display: grid;
5076
+ grid-template-columns: subgrid;
5077
+ grid-column: 1 / -1;
5078
+ row-gap: calc(var(--spacing-base) * 0.25);
5079
+ align-items: baseline;
5080
+ padding-block: calc(var(--spacing-base) * 0.5);
5081
+ }
4860
5082
 
4861
- .bc-json-structure-object {
4862
- border-left: calc(var(--spacing-base) * 2) solid var(--color-base-200);
4863
- padding-inline-start: calc(var(--spacing-base) * 2);
5083
+ /* Extra properties also participate in the shared grid */
5084
+ .bc-json-schema-display__extra-property {
5085
+ display: grid;
5086
+ grid-template-columns: subgrid;
5087
+ grid-column: 1 / -1;
4864
5088
  }
4865
5089
 
4866
- .bc-json-structure-object-fields {
5090
+ .bc-json-schema-display__label-row {
4867
5091
  display: flex;
4868
- flex-direction: column;
4869
- gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
5092
+ align-items: center;
5093
+ gap: calc(var(--spacing-base) * 1);
5094
+ grid-column: 1;
5095
+ max-width: 16rem;
5096
+ overflow: hidden;
5097
+ text-overflow: ellipsis;
5098
+ white-space: nowrap;
4870
5099
  }
4871
5100
 
4872
- .bc-json-structure-object--nested {
4873
- margin-top: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5101
+ .bc-json-schema-display__description,
5102
+ .bc-json-schema-display__mismatches {
5103
+ grid-column: 1 / -1;
4874
5104
  }
4875
5105
 
4876
- /* Additional properties */
4877
- .bc-json-structure-additional-property {
4878
- display: flex;
4879
- flex-direction: column;
4880
- gap: var(--spacing-stack-xs, var(--spacing-base));
4881
- padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4882
- border: 1px solid var(--color-base-200);
4883
- border-radius: var(--radius-sm);
4884
- background: var(--color-base-50);
5106
+ .bc-json-schema-display__label {
5107
+ font-size: var(--font-size-sm);
5108
+ font-weight: var(--font-weight-normal);
5109
+ color: var(--color-neutral-500);
4885
5110
  }
4886
5111
 
4887
- .bc-json-structure-additional-property-header {
4888
- display: flex;
4889
- justify-content: space-between;
4890
- align-items: center;
4891
- gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5112
+ .b-dark .bc-json-schema-display__label {
5113
+ color: var(--color-neutral-400);
4892
5114
  }
4893
5115
 
4894
- .bc-json-structure-additional-property-value {
4895
- padding-inline-start: calc(var(--spacing-base) * 2);
5116
+ .bc-json-schema-display__required {
5117
+ font-size: var(--font-size-sm);
5118
+ color: var(--color-danger-600);
5119
+ font-weight: var(--font-weight-bold);
4896
5120
  }
4897
5121
 
4898
- /* =============================================================================
4899
- Array/Set/Map Layout
4900
- ============================================================================= */
5122
+ .b-dark .bc-json-schema-display__required {
5123
+ color: var(--color-danger-400);
5124
+ }
4901
5125
 
4902
- .bc-json-structure-array,
4903
- .bc-json-structure-set,
4904
- .bc-json-structure-map {
4905
- display: flex;
4906
- flex-direction: column;
4907
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5126
+ .bc-json-schema-display__deprecated {
5127
+ font-size: var(--font-size-xs);
5128
+ color: var(--color-warning-600);
5129
+ background-color: var(--color-warning-100);
5130
+ padding: 0.1em calc(var(--spacing-base) * 1);
5131
+ border-radius: var(--radius-sm);
5132
+ font-weight: var(--font-weight-medium);
4908
5133
  }
4909
5134
 
4910
- .bc-json-structure-array-items,
4911
- .bc-json-structure-set-items,
4912
- .bc-json-structure-map-entries {
4913
- display: flex;
4914
- flex-direction: column;
4915
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5135
+ .b-dark .bc-json-schema-display__deprecated {
5136
+ color: var(--color-warning-300);
5137
+ background-color: var(--color-warning-900);
4916
5138
  }
4917
5139
 
4918
- .bc-json-structure-array-item,
4919
- .bc-json-structure-set-item,
4920
- .bc-json-structure-map-entry {
4921
- display: flex;
4922
- align-items: flex-start;
4923
- gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5140
+ .bc-json-schema-display__description {
5141
+ font-size: var(--font-size-xs);
5142
+ color: var(--text-muted-light);
4924
5143
  }
4925
5144
 
4926
- .bc-json-structure-array-item-content,
4927
- .bc-json-structure-set-item-content,
4928
- .bc-json-structure-map-entry-content {
4929
- flex: 1;
4930
- min-width: 0;
5145
+ .b-dark .bc-json-schema-display__description {
5146
+ color: var(--text-muted-dark);
4931
5147
  }
4932
5148
 
4933
- .bc-json-structure-array-item-actions,
4934
- .bc-json-structure-set-item-actions,
4935
- .bc-json-structure-map-entry-actions {
4936
- flex-shrink: 0;
4937
- }
4938
-
4939
- .bc-json-structure-collection-add {
4940
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
5149
+ .bc-json-schema-display__value {
5150
+ font-size: var(--font-size-sm);
5151
+ font-weight: var(--font-weight-medium);
5152
+ color: var(--color-neutral-900);
4941
5153
  }
4942
5154
 
4943
- /* Map entry specific styles */
4944
- .bc-json-structure-map-entry-header {
4945
- display: flex;
4946
- justify-content: space-between;
4947
- align-items: center;
4948
- gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
4949
- margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5155
+ .b-dark .bc-json-schema-display__value {
5156
+ color: var(--color-neutral-100);
4950
5157
  }
4951
5158
 
4952
- .bc-json-structure-map-entry-key {
4953
- font-family: var(--font-family-mono);
4954
- font-weight: 600;
4955
- color: var(--color-base-700);
5159
+ .bc-json-schema-display__value--null {
5160
+ font-size: var(--font-size-sm);
5161
+ color: var(--color-neutral-400);
5162
+ font-style: italic;
4956
5163
  }
4957
5164
 
4958
- .bc-json-structure-map-entry-value {
4959
- padding-inline-start: calc(var(--spacing-base) * 2);
5165
+ .b-dark .bc-json-schema-display__value--null {
5166
+ color: var(--color-neutral-500);
4960
5167
  }
4961
5168
 
4962
- /* Set error indicator */
4963
- .bc-json-structure-set-error {
4964
- color: var(--color-error-500, #dc2626);
5169
+ .bc-json-schema-display__value--missing {
4965
5170
  font-size: var(--font-size-sm);
4966
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
5171
+ color: var(--color-danger-600);
5172
+ font-style: italic;
4967
5173
  }
4968
5174
 
4969
- /* =============================================================================
4970
- Tuple Layout
4971
- ============================================================================= */
5175
+ .b-dark .bc-json-schema-display__value--missing {
5176
+ color: var(--color-danger-400);
5177
+ }
4972
5178
 
4973
- .bc-json-structure-tuple {
4974
- display: flex;
4975
- flex-direction: column;
4976
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5179
+ .bc-json-schema-display__value-context {
5180
+ font-size: var(--font-size-xs);
5181
+ color: var(--color-neutral-400);
5182
+ margin-left: calc(var(--spacing-base) * 1);
4977
5183
  }
4978
5184
 
4979
- .bc-json-structure-tuple-label {
4980
- font-weight: 600;
4981
- color: var(--color-base-700);
4982
- margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5185
+ .b-dark .bc-json-schema-display__value-context {
5186
+ color: var(--color-neutral-500);
4983
5187
  }
4984
5188
 
4985
- .bc-json-structure-tuple-description {
4986
- color: var(--color-base-500);
5189
+ /* Links */
5190
+ .bc-json-schema-display__link {
5191
+ color: var(--color-primary-600);
5192
+ text-decoration: underline;
4987
5193
  font-size: var(--font-size-sm);
4988
- margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
4989
5194
  }
4990
5195
 
4991
- .bc-json-structure-tuple-elements {
4992
- display: flex;
4993
- flex-direction: column;
4994
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5196
+ .bc-json-schema-display__link:hover {
5197
+ color: var(--color-primary-700);
4995
5198
  }
4996
5199
 
4997
- .bc-json-structure-tuple-element {
4998
- display: flex;
4999
- flex-direction: column;
5000
- gap: var(--spacing-stack-xs, var(--spacing-base));
5200
+ .b-dark .bc-json-schema-display__link {
5201
+ color: var(--color-primary-400);
5001
5202
  }
5002
5203
 
5003
- .bc-json-structure-tuple-element-header {
5004
- display: flex;
5005
- align-items: center;
5006
- gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
5007
- color: var(--color-base-600);
5008
- font-size: var(--font-size-sm);
5204
+ .b-dark .bc-json-schema-display__link:hover {
5205
+ color: var(--color-primary-300);
5009
5206
  }
5010
5207
 
5011
- .bc-json-structure-tuple-position {
5012
- font-family: var(--font-family-mono);
5013
- font-weight: 600;
5014
- color: var(--color-base-500);
5208
+ /* Color swatch */
5209
+ .bc-json-schema-display__color-display {
5210
+ display: inline-flex;
5211
+ align-items: center;
5212
+ gap: calc(var(--spacing-base) * 1);
5015
5213
  }
5016
5214
 
5017
- .bc-json-structure-tuple-element-name {
5018
- font-weight: 500;
5215
+ .bc-json-schema-display__color-swatch {
5216
+ display: inline-block;
5217
+ width: 1.25rem;
5218
+ height: 1.25rem;
5219
+ border-radius: var(--radius-sm);
5220
+ border: 1px solid var(--color-neutral-300);
5221
+ vertical-align: middle;
5019
5222
  }
5020
5223
 
5021
- .bc-json-structure-tuple-element-control {
5022
- padding-inline-start: calc(var(--spacing-base) * 2);
5224
+ .b-dark .bc-json-schema-display__color-swatch {
5225
+ border-color: var(--color-neutral-600);
5023
5226
  }
5024
5227
 
5025
- /* =============================================================================
5026
- Choice Layout
5027
- ============================================================================= */
5028
-
5029
- .bc-json-structure-choice {
5030
- display: flex;
5031
- flex-direction: column;
5032
- gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5228
+ /* Monospace */
5229
+ .bc-json-schema-display__monospace {
5230
+ font-family: var(--font-family-mono, monospace);
5231
+ font-size: var(--font-size-sm);
5033
5232
  }
5034
5233
 
5035
- .bc-json-structure-choice-selector {
5036
- margin-bottom: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5234
+ /* Pre-formatted */
5235
+ .bc-json-schema-display__pre {
5236
+ font-family: var(--font-family-mono, monospace);
5237
+ font-size: var(--font-size-sm);
5238
+ white-space: pre-wrap;
5239
+ word-break: break-word;
5240
+ background-color: var(--color-neutral-50);
5241
+ padding: calc(var(--spacing-base) * 2);
5242
+ border-radius: var(--radius-md);
5243
+ border: 1px solid var(--color-neutral-200);
5244
+ margin: 0;
5245
+ overflow-x: auto;
5037
5246
  }
5038
5247
 
5039
- .bc-json-structure-choice-options {
5040
- padding-inline-start: calc(var(--spacing-base) * 2);
5248
+ .b-dark .bc-json-schema-display__pre {
5249
+ background-color: var(--color-neutral-800);
5250
+ border-color: var(--color-neutral-700);
5041
5251
  }
5042
5252
 
5043
- /* =============================================================================
5044
- Grid Layout (for objects with many properties)
5045
- ============================================================================= */
5046
-
5047
- .bc-structure-grid {
5048
- display: grid;
5253
+ /* Boolean */
5254
+ .bc-json-schema-display__boolean {
5255
+ display: inline-block;
5256
+ font-size: var(--font-size-sm);
5257
+ font-weight: var(--font-weight-medium);
5258
+ padding: 0 calc(var(--spacing-base) * 1.5);
5259
+ border-radius: var(--radius-full);
5260
+ line-height: 1.6;
5049
5261
  }
5050
5262
 
5051
- .bc-structure-grid--gap-4 {
5052
- gap: var(--spacing-stack-lg, calc(var(--spacing-base) * 4));
5263
+ .bc-json-schema-display__boolean--true {
5264
+ color: var(--color-success-700);
5265
+ background-color: var(--color-success-100);
5053
5266
  }
5054
5267
 
5055
- .bc-structure-grid--cols-1 {
5056
- grid-template-columns: repeat(1, minmax(0, 1fr));
5268
+ .bc-json-schema-display__boolean--false {
5269
+ color: var(--color-danger-700);
5270
+ background-color: var(--color-danger-100);
5057
5271
  }
5058
5272
 
5059
- .bc-structure-grid--cols-2 {
5060
- grid-template-columns: repeat(2, minmax(0, 1fr));
5273
+ .b-dark .bc-json-schema-display__boolean--true {
5274
+ color: var(--color-success-300);
5275
+ background-color: var(--color-success-900);
5061
5276
  }
5062
5277
 
5063
- .bc-structure-grid--cols-3 {
5064
- grid-template-columns: repeat(3, minmax(0, 1fr));
5278
+ .b-dark .bc-json-schema-display__boolean--false {
5279
+ color: var(--color-danger-300);
5280
+ background-color: var(--color-danger-900);
5065
5281
  }
5066
5282
 
5067
- .bc-structure-grid--cols-4 {
5068
- grid-template-columns: repeat(4, minmax(0, 1fr));
5283
+ /* Object */
5284
+ .bc-json-schema-display__object {
5285
+ border-left: calc(var(--spacing-base) * 2) solid var(--color-base-200);
5286
+ padding-inline-start: calc(var(--spacing-base) * 2);
5069
5287
  }
5070
5288
 
5071
- @media (width >= 40rem) {
5072
- .bc-structure-grid--cols-sm-1 {
5073
- grid-template-columns: repeat(1, minmax(0, 1fr));
5074
- }
5075
- .bc-structure-grid--cols-sm-2 {
5076
- grid-template-columns: repeat(2, minmax(0, 1fr));
5077
- }
5078
- .bc-structure-grid--cols-sm-3 {
5079
- grid-template-columns: repeat(3, minmax(0, 1fr));
5080
- }
5081
- .bc-structure-grid--cols-sm-4 {
5082
- grid-template-columns: repeat(4, minmax(0, 1fr));
5083
- }
5289
+ .b-dark .bc-json-schema-display__object {
5290
+ border-left-color: var(--color-neutral-700);
5084
5291
  }
5085
5292
 
5086
- @media (width >= 48rem) {
5087
- .bc-structure-grid--cols-md-1 {
5088
- grid-template-columns: repeat(1, minmax(0, 1fr));
5089
- }
5090
- .bc-structure-grid--cols-md-2 {
5091
- grid-template-columns: repeat(2, minmax(0, 1fr));
5092
- }
5093
- .bc-structure-grid--cols-md-3 {
5094
- grid-template-columns: repeat(3, minmax(0, 1fr));
5095
- }
5096
- .bc-structure-grid--cols-md-4 {
5097
- grid-template-columns: repeat(4, minmax(0, 1fr));
5098
- }
5293
+ /* Extra properties */
5294
+ .bc-json-schema-display__extra-property {
5295
+ opacity: 0.7;
5296
+ border-left: 2px dashed var(--color-warning-400);
5297
+ padding-inline-start: calc(var(--spacing-base) * 2);
5099
5298
  }
5100
5299
 
5101
- @media (width >= 64rem) {
5102
- .bc-structure-grid--cols-lg-1 {
5103
- grid-template-columns: repeat(1, minmax(0, 1fr));
5104
- }
5105
- .bc-structure-grid--cols-lg-2 {
5106
- grid-template-columns: repeat(2, minmax(0, 1fr));
5107
- }
5108
- .bc-structure-grid--cols-lg-3 {
5109
- grid-template-columns: repeat(3, minmax(0, 1fr));
5110
- }
5111
- .bc-structure-grid--cols-lg-4 {
5112
- grid-template-columns: repeat(4, minmax(0, 1fr));
5113
- }
5300
+ .b-dark .bc-json-schema-display__extra-property {
5301
+ border-left-color: var(--color-warning-600);
5114
5302
  }
5115
5303
 
5116
- /* =============================================================================
5117
- Validation States
5118
- ============================================================================= */
5304
+ /* Array */
5305
+ .bc-json-schema-display__array {
5306
+ display: flex;
5307
+ flex-direction: column;
5308
+ }
5119
5309
 
5120
- .bc-json-structure-error {
5121
- color: var(--color-error-500, #dc2626);
5122
- font-size: var(--font-size-sm);
5123
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
5310
+ .bc-json-schema-display__array-item {
5311
+ display: flex;
5312
+ gap: calc(var(--spacing-base) * 1.5);
5313
+ align-items: baseline;
5124
5314
  }
5125
5315
 
5126
- .bc-json-structure-field--invalid {
5127
- --field-border-color: var(--color-error-500, #dc2626);
5316
+ /* Strip field wrapper padding inside array items */
5317
+ .bc-json-schema-display__array-item > .bc-json-schema-display__field {
5318
+ padding-block: 0;
5128
5319
  }
5129
5320
 
5130
- .bc-json-structure-field--valid {
5131
- --field-border-color: var(--color-success-500, #16a34a);
5321
+ .bc-json-schema-display__array-index {
5322
+ font-size: var(--font-size-sm);
5323
+ font-weight: var(--font-weight-normal);
5324
+ color: var(--color-neutral-400);
5325
+ font-family: var(--font-family-mono, monospace);
5326
+ min-width: 2rem;
5327
+ text-align: right;
5328
+ flex-shrink: 0;
5132
5329
  }
5133
5330
 
5134
- /* =============================================================================
5135
- Metadata Display
5136
- ============================================================================= */
5331
+ .b-dark .bc-json-schema-display__array-index {
5332
+ color: var(--color-neutral-500);
5333
+ }
5137
5334
 
5138
- .bc-json-structure-description {
5139
- color: var(--color-base-500);
5335
+ .bc-json-schema-display__empty {
5140
5336
  font-size: var(--font-size-sm);
5141
- margin-top: var(--spacing-stack-xs, var(--spacing-base));
5337
+ color: var(--color-neutral-400);
5338
+ font-style: italic;
5142
5339
  }
5143
5340
 
5144
- .bc-json-structure-deprecated {
5145
- opacity: 0.7;
5146
- position: relative;
5341
+ .b-dark .bc-json-schema-display__empty {
5342
+ color: var(--color-neutral-500);
5147
5343
  }
5148
5344
 
5149
- .bc-json-structure-deprecated::before {
5150
- content: '(deprecated)';
5151
- position: absolute;
5152
- top: 0;
5153
- right: 0;
5345
+ /* Composition (oneOf/anyOf) branch label */
5346
+ .bc-json-schema-display__branch-label {
5154
5347
  font-size: var(--font-size-xs);
5155
- color: var(--color-warning-500, #d97706);
5156
- background: var(--color-warning-100, #fef3c7);
5157
- padding: 0.125em 0.5em;
5348
+ font-weight: var(--font-weight-medium);
5349
+ color: var(--color-primary-600);
5350
+ padding: 0 calc(var(--spacing-base) * 1);
5351
+ background-color: var(--color-primary-50);
5158
5352
  border-radius: var(--radius-sm);
5353
+ display: inline-block;
5354
+ margin-bottom: calc(var(--spacing-base) * 1);
5159
5355
  }
5160
5356
 
5161
- .bc-json-structure-deprecated-badge {
5162
- display: inline-flex;
5163
- align-items: center;
5164
- gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
5165
- font-size: var(--font-size-xs);
5357
+ .b-dark .bc-json-schema-display__branch-label {
5358
+ color: var(--color-primary-300);
5359
+ background-color: var(--color-primary-900);
5360
+ }
5361
+
5362
+ .bc-json-schema-display__branch-label--ambiguous {
5166
5363
  color: var(--color-warning-700);
5167
- background: var(--color-warning-100);
5168
- padding: 0.125em 0.5em;
5169
- border-radius: var(--radius-sm);
5170
- margin-inline-start: var(
5171
- --spacing-inline-xs,
5172
- calc(var(--spacing-base) * 0.5)
5173
- );
5364
+ background-color: var(--color-warning-100);
5174
5365
  }
5175
5366
 
5176
- .bc-json-structure-required-indicator {
5177
- color: var(--color-error-500, #dc2626);
5178
- margin-inline-start: 0.25em;
5367
+ .b-dark .bc-json-schema-display__branch-label--ambiguous {
5368
+ color: var(--color-warning-300);
5369
+ background-color: var(--color-warning-900);
5179
5370
  }
5180
5371
 
5181
- /* =============================================================================
5182
- Const/Enum Display
5183
- ============================================================================= */
5372
+ .bc-json-schema-display__branch-label--no-match {
5373
+ color: var(--color-danger-700);
5374
+ background-color: var(--color-danger-100);
5375
+ }
5184
5376
 
5185
- .bc-json-structure-const {
5186
- font-family: var(--font-family-mono);
5187
- background: var(--color-base-100);
5188
- padding: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5))
5189
- var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5190
- border-radius: var(--radius-sm);
5191
- color: var(--color-base-600);
5377
+ .b-dark .bc-json-schema-display__branch-label--no-match {
5378
+ color: var(--color-danger-300);
5379
+ background-color: var(--color-danger-900);
5192
5380
  }
5193
5381
 
5194
- /* =============================================================================
5195
- Read-Only State
5196
- ============================================================================= */
5382
+ /* Mismatch indicators */
5383
+ .bc-json-schema-display__mismatches {
5384
+ display: flex;
5385
+ flex-wrap: wrap;
5386
+ gap: calc(var(--spacing-base) * 1);
5387
+ }
5197
5388
 
5198
- .bc-json-structure-readonly {
5199
- pointer-events: none;
5200
- opacity: 0.7;
5389
+ .bc-json-schema-display__mismatch {
5390
+ font-size: var(--font-size-xs);
5391
+ font-weight: var(--font-weight-medium);
5392
+ padding: 0 calc(var(--spacing-base) * 1.5);
5393
+ border-radius: var(--radius-full);
5394
+ line-height: 1.6;
5201
5395
  }
5202
5396
 
5203
- .bc-json-structure-readonly input,
5204
- .bc-json-structure-readonly select,
5205
- .bc-json-structure-readonly textarea {
5206
- background: var(--color-base-100);
5207
- cursor: not-allowed;
5397
+ .bc-json-schema-display__mismatch--type-mismatch {
5398
+ color: var(--color-danger-700);
5399
+ background-color: var(--color-danger-100);
5400
+ }
5401
+
5402
+ .bc-json-schema-display__mismatch--missing-required {
5403
+ color: var(--color-danger-700);
5404
+ background-color: var(--color-danger-100);
5405
+ }
5406
+
5407
+ .bc-json-schema-display__mismatch--extra-property {
5408
+ color: var(--color-warning-700);
5409
+ background-color: var(--color-warning-100);
5410
+ }
5411
+
5412
+ .bc-json-schema-display__mismatch--enum-mismatch {
5413
+ color: var(--color-warning-700);
5414
+ background-color: var(--color-warning-100);
5415
+ }
5416
+
5417
+ .bc-json-schema-display__mismatch--const-mismatch {
5418
+ color: var(--color-warning-700);
5419
+ background-color: var(--color-warning-100);
5420
+ }
5421
+
5422
+ .bc-json-schema-display__mismatch--constraint-violation {
5423
+ color: var(--color-danger-700);
5424
+ background-color: var(--color-danger-100);
5425
+ }
5426
+
5427
+ .bc-json-schema-display__mismatch-indicator {
5428
+ font-size: var(--font-size-xs);
5429
+ color: var(--color-danger-600);
5430
+ font-style: italic;
5431
+ margin-left: calc(var(--spacing-base) * 1);
5432
+ }
5433
+
5434
+ .b-dark .bc-json-schema-display__mismatch--type-mismatch,
5435
+ .b-dark .bc-json-schema-display__mismatch--missing-required {
5436
+ color: var(--color-danger-300);
5437
+ background-color: var(--color-danger-900);
5438
+ }
5439
+
5440
+ .b-dark .bc-json-schema-display__mismatch--extra-property,
5441
+ .b-dark .bc-json-schema-display__mismatch--enum-mismatch,
5442
+ .b-dark .bc-json-schema-display__mismatch--const-mismatch {
5443
+ color: var(--color-warning-300);
5444
+ background-color: var(--color-warning-900);
5208
5445
  }
5209
5446
 
5447
+ .b-dark .bc-json-schema-display__mismatch--constraint-violation {
5448
+ color: var(--color-danger-300);
5449
+ background-color: var(--color-danger-900);
5450
+ }
5451
+
5452
+ .b-dark .bc-json-schema-display__mismatch-indicator {
5453
+ color: var(--color-danger-400);
5454
+ }
5455
+
5456
+ /**
5457
+ * JSON Structure Form Component Styles
5458
+ *
5459
+ * CSS styles for JSON Structure form components.
5460
+ * Uses BEM-like naming with bc-json-structure- prefix.
5461
+ */
5462
+
5210
5463
  /* =============================================================================
5211
- Placeholder Styles (temporary, for development)
5464
+ Base Styles
5212
5465
  ============================================================================= */
5213
5466
 
5214
- .bc-json-structure-placeholder {
5467
+ .bc-json-structure-form {
5468
+ display: flex;
5469
+ flex-direction: column;
5470
+ gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
5471
+ }
5472
+
5473
+ /* =============================================================================
5474
+ Object Layout
5475
+ ============================================================================= */
5476
+
5477
+ .bc-json-structure-object {
5478
+ border-left: calc(var(--spacing-base) * 2) solid var(--color-base-200);
5479
+ padding-inline-start: calc(var(--spacing-base) * 2);
5480
+ }
5481
+
5482
+ .bc-json-structure-object-fields {
5483
+ display: flex;
5484
+ flex-direction: column;
5485
+ gap: var(--spacing-stack-md, calc(var(--spacing-base) * 3));
5486
+ }
5487
+
5488
+ .bc-json-structure-object--nested {
5489
+ margin-top: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5490
+ }
5491
+
5492
+ /* Additional properties */
5493
+ .bc-json-structure-additional-property {
5215
5494
  display: flex;
5216
5495
  flex-direction: column;
5217
5496
  gap: var(--spacing-stack-xs, var(--spacing-base));
5218
5497
  padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5219
- border: 1px dashed var(--color-base-300);
5220
- border-radius: var(--radius-md);
5498
+ border: 1px solid var(--color-base-200);
5499
+ border-radius: var(--radius-sm);
5221
5500
  background: var(--color-base-50);
5222
5501
  }
5223
5502
 
5224
- .bc-json-structure-placeholder > span:first-child {
5225
- font-size: var(--font-size-xs);
5226
- color: var(--color-base-400);
5503
+ .bc-json-structure-additional-property-header {
5504
+ display: flex;
5505
+ justify-content: space-between;
5506
+ align-items: center;
5507
+ gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5508
+ }
5509
+
5510
+ .bc-json-structure-additional-property-value {
5511
+ padding-inline-start: calc(var(--spacing-base) * 2);
5512
+ }
5513
+
5514
+ /* =============================================================================
5515
+ Array/Set/Map Layout
5516
+ ============================================================================= */
5517
+
5518
+ .bc-json-structure-array,
5519
+ .bc-json-structure-set,
5520
+ .bc-json-structure-map {
5521
+ display: flex;
5522
+ flex-direction: column;
5523
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5524
+ }
5525
+
5526
+ .bc-json-structure-array-items,
5527
+ .bc-json-structure-set-items,
5528
+ .bc-json-structure-map-entries {
5529
+ display: flex;
5530
+ flex-direction: column;
5531
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5532
+ }
5533
+
5534
+ .bc-json-structure-array-item,
5535
+ .bc-json-structure-set-item,
5536
+ .bc-json-structure-map-entry {
5537
+ display: flex;
5538
+ align-items: flex-start;
5539
+ gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5540
+ }
5541
+
5542
+ .bc-json-structure-array-item-content,
5543
+ .bc-json-structure-set-item-content,
5544
+ .bc-json-structure-map-entry-content {
5545
+ flex: 1;
5546
+ min-width: 0;
5547
+ }
5548
+
5549
+ .bc-json-structure-array-item-actions,
5550
+ .bc-json-structure-set-item-actions,
5551
+ .bc-json-structure-map-entry-actions {
5552
+ flex-shrink: 0;
5553
+ }
5554
+
5555
+ .bc-json-structure-collection-add {
5556
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5557
+ }
5558
+
5559
+ /* Map entry specific styles */
5560
+ .bc-json-structure-map-entry-header {
5561
+ display: flex;
5562
+ justify-content: space-between;
5563
+ align-items: center;
5564
+ gap: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5565
+ margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5566
+ }
5567
+
5568
+ .bc-json-structure-map-entry-key {
5227
5569
  font-family: var(--font-family-mono);
5570
+ font-weight: 600;
5571
+ color: var(--color-base-700);
5228
5572
  }
5229
5573
 
5230
- .bc-json-structure-unknown {
5574
+ .bc-json-structure-map-entry-value {
5575
+ padding-inline-start: calc(var(--spacing-base) * 2);
5576
+ }
5577
+
5578
+ /* Set error indicator */
5579
+ .bc-json-structure-set-error {
5580
+ color: var(--color-error-500, #dc2626);
5581
+ font-size: var(--font-size-sm);
5582
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5583
+ }
5584
+
5585
+ /* =============================================================================
5586
+ Tuple Layout
5587
+ ============================================================================= */
5588
+
5589
+ .bc-json-structure-tuple {
5590
+ display: flex;
5591
+ flex-direction: column;
5592
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5593
+ }
5594
+
5595
+ .bc-json-structure-tuple-label {
5596
+ font-weight: 600;
5597
+ color: var(--color-base-700);
5598
+ margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5599
+ }
5600
+
5601
+ .bc-json-structure-tuple-description {
5602
+ color: var(--color-base-500);
5603
+ font-size: var(--font-size-sm);
5604
+ margin-bottom: var(--spacing-stack-xs, var(--spacing-base));
5605
+ }
5606
+
5607
+ .bc-json-structure-tuple-elements {
5608
+ display: flex;
5609
+ flex-direction: column;
5610
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5611
+ }
5612
+
5613
+ .bc-json-structure-tuple-element {
5231
5614
  display: flex;
5232
5615
  flex-direction: column;
5233
5616
  gap: var(--spacing-stack-xs, var(--spacing-base));
5234
- padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5235
- border: 1px solid var(--color-warning-300);
5236
- border-radius: var(--radius-md);
5237
- background: var(--color-warning-50);
5238
- color: var(--color-warning-700);
5239
5617
  }
5240
5618
 
5241
- .bc-label {
5619
+ .bc-json-structure-tuple-element-header {
5620
+ display: flex;
5621
+ align-items: center;
5622
+ gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
5623
+ color: var(--color-base-600);
5242
5624
  font-size: var(--font-size-sm);
5243
- line-height: var(--line-height-normal);
5244
- font-family: var(
5245
- --default-ui-font-family,
5246
- var(--font-ui, var(--font-body, var(--font-family-sans)))
5247
- );
5248
5625
  }
5249
5626
 
5250
- .bc-label--emphasis {
5251
- font-weight: var(--font-weight-bold);
5627
+ .bc-json-structure-tuple-position {
5628
+ font-family: var(--font-family-mono);
5629
+ font-weight: 600;
5630
+ color: var(--color-base-500);
5252
5631
  }
5253
5632
 
5254
- .bc-label--default {
5255
- font-weight: var(--font-weight-medium);
5633
+ .bc-json-structure-tuple-element-name {
5634
+ font-weight: 500;
5256
5635
  }
5257
5636
 
5258
- .bc-label--muted {
5259
- font-weight: var(--font-weight-medium);
5260
- opacity: 0.5;
5637
+ .bc-json-structure-tuple-element-control {
5638
+ padding-inline-start: calc(var(--spacing-base) * 2);
5261
5639
  }
5262
5640
 
5263
- .bc-label--danger {
5264
- font-weight: var(--font-weight-medium);
5265
- color: var(--color-danger-500);
5641
+ /* =============================================================================
5642
+ Choice Layout
5643
+ ============================================================================= */
5644
+
5645
+ .bc-json-structure-choice {
5646
+ display: flex;
5647
+ flex-direction: column;
5648
+ gap: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5266
5649
  }
5267
5650
 
5268
- /* Dark mode styles */
5269
- .b-dark .bc-label {
5270
- color: var(--text-normal-dark);
5651
+ .bc-json-structure-choice-selector {
5652
+ margin-bottom: var(--spacing-stack-sm, calc(var(--spacing-base) * 2));
5271
5653
  }
5272
5654
 
5273
- .b-dark .bc-label--muted {
5274
- color: var(--text-muted-dark);
5655
+ .bc-json-structure-choice-options {
5656
+ padding-inline-start: calc(var(--spacing-base) * 2);
5275
5657
  }
5276
5658
 
5277
- .b-dark .bc-label--danger {
5278
- color: var(--color-danger-400);
5659
+ /* =============================================================================
5660
+ Grid Layout (for objects with many properties)
5661
+ ============================================================================= */
5662
+
5663
+ .bc-structure-grid {
5664
+ display: grid;
5665
+ }
5666
+
5667
+ .bc-structure-grid--gap-4 {
5668
+ gap: var(--spacing-stack-lg, calc(var(--spacing-base) * 4));
5669
+ }
5670
+
5671
+ .bc-structure-grid--cols-1 {
5672
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5673
+ }
5674
+
5675
+ .bc-structure-grid--cols-2 {
5676
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5677
+ }
5678
+
5679
+ .bc-structure-grid--cols-3 {
5680
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5681
+ }
5682
+
5683
+ .bc-structure-grid--cols-4 {
5684
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5685
+ }
5686
+
5687
+ @media (width >= 40rem) {
5688
+ .bc-structure-grid--cols-sm-1 {
5689
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5690
+ }
5691
+ .bc-structure-grid--cols-sm-2 {
5692
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5693
+ }
5694
+ .bc-structure-grid--cols-sm-3 {
5695
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5696
+ }
5697
+ .bc-structure-grid--cols-sm-4 {
5698
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5699
+ }
5700
+ }
5701
+
5702
+ @media (width >= 48rem) {
5703
+ .bc-structure-grid--cols-md-1 {
5704
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5705
+ }
5706
+ .bc-structure-grid--cols-md-2 {
5707
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5708
+ }
5709
+ .bc-structure-grid--cols-md-3 {
5710
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5711
+ }
5712
+ .bc-structure-grid--cols-md-4 {
5713
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5714
+ }
5715
+ }
5716
+
5717
+ @media (width >= 64rem) {
5718
+ .bc-structure-grid--cols-lg-1 {
5719
+ grid-template-columns: repeat(1, minmax(0, 1fr));
5720
+ }
5721
+ .bc-structure-grid--cols-lg-2 {
5722
+ grid-template-columns: repeat(2, minmax(0, 1fr));
5723
+ }
5724
+ .bc-structure-grid--cols-lg-3 {
5725
+ grid-template-columns: repeat(3, minmax(0, 1fr));
5726
+ }
5727
+ .bc-structure-grid--cols-lg-4 {
5728
+ grid-template-columns: repeat(4, minmax(0, 1fr));
5729
+ }
5730
+ }
5731
+
5732
+ /* =============================================================================
5733
+ Validation States
5734
+ ============================================================================= */
5735
+
5736
+ .bc-json-structure-error {
5737
+ color: var(--color-error-500, #dc2626);
5738
+ font-size: var(--font-size-sm);
5739
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5740
+ }
5741
+
5742
+ .bc-json-structure-field--invalid {
5743
+ --field-border-color: var(--color-error-500, #dc2626);
5744
+ }
5745
+
5746
+ .bc-json-structure-field--valid {
5747
+ --field-border-color: var(--color-success-500, #16a34a);
5748
+ }
5749
+
5750
+ /* =============================================================================
5751
+ Metadata Display
5752
+ ============================================================================= */
5753
+
5754
+ .bc-json-structure-description {
5755
+ color: var(--color-base-500);
5756
+ font-size: var(--font-size-sm);
5757
+ margin-top: var(--spacing-stack-xs, var(--spacing-base));
5758
+ }
5759
+
5760
+ .bc-json-structure-deprecated {
5761
+ opacity: 0.7;
5762
+ position: relative;
5763
+ }
5764
+
5765
+ .bc-json-structure-deprecated::before {
5766
+ content: '(deprecated)';
5767
+ position: absolute;
5768
+ top: 0;
5769
+ right: 0;
5770
+ font-size: var(--font-size-xs);
5771
+ color: var(--color-warning-500, #d97706);
5772
+ background: var(--color-warning-100, #fef3c7);
5773
+ padding: 0.125em 0.5em;
5774
+ border-radius: var(--radius-sm);
5775
+ }
5776
+
5777
+ .bc-json-structure-deprecated-badge {
5778
+ display: inline-flex;
5779
+ align-items: center;
5780
+ gap: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5));
5781
+ font-size: var(--font-size-xs);
5782
+ color: var(--color-warning-700);
5783
+ background: var(--color-warning-100);
5784
+ padding: 0.125em 0.5em;
5785
+ border-radius: var(--radius-sm);
5786
+ margin-inline-start: var(
5787
+ --spacing-inline-xs,
5788
+ calc(var(--spacing-base) * 0.5)
5789
+ );
5790
+ }
5791
+
5792
+ .bc-json-structure-required-indicator {
5793
+ color: var(--color-error-500, #dc2626);
5794
+ margin-inline-start: 0.25em;
5795
+ }
5796
+
5797
+ /* =============================================================================
5798
+ Const/Enum Display
5799
+ ============================================================================= */
5800
+
5801
+ .bc-json-structure-const {
5802
+ font-family: var(--font-family-mono);
5803
+ background: var(--color-base-100);
5804
+ padding: var(--spacing-inline-xs, calc(var(--spacing-base) * 0.5))
5805
+ var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5806
+ border-radius: var(--radius-sm);
5807
+ color: var(--color-base-600);
5808
+ }
5809
+
5810
+ /* =============================================================================
5811
+ Read-Only State
5812
+ ============================================================================= */
5813
+
5814
+ .bc-json-structure-readonly {
5815
+ pointer-events: none;
5816
+ opacity: 0.7;
5817
+ }
5818
+
5819
+ .bc-json-structure-readonly input,
5820
+ .bc-json-structure-readonly select,
5821
+ .bc-json-structure-readonly textarea {
5822
+ background: var(--color-base-100);
5823
+ cursor: not-allowed;
5824
+ }
5825
+
5826
+ /* =============================================================================
5827
+ Placeholder Styles (temporary, for development)
5828
+ ============================================================================= */
5829
+
5830
+ .bc-json-structure-placeholder {
5831
+ display: flex;
5832
+ flex-direction: column;
5833
+ gap: var(--spacing-stack-xs, var(--spacing-base));
5834
+ padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5835
+ border: 1px dashed var(--color-base-300);
5836
+ border-radius: var(--radius-md);
5837
+ background: var(--color-base-50);
5838
+ }
5839
+
5840
+ .bc-json-structure-placeholder > span:first-child {
5841
+ font-size: var(--font-size-xs);
5842
+ color: var(--color-base-400);
5843
+ font-family: var(--font-family-mono);
5844
+ }
5845
+
5846
+ .bc-json-structure-unknown {
5847
+ display: flex;
5848
+ flex-direction: column;
5849
+ gap: var(--spacing-stack-xs, var(--spacing-base));
5850
+ padding: var(--spacing-inline-sm, calc(var(--spacing-base) * 2));
5851
+ border: 1px solid var(--color-warning-300);
5852
+ border-radius: var(--radius-md);
5853
+ background: var(--color-warning-50);
5854
+ color: var(--color-warning-700);
5855
+ }
5856
+
5857
+ .bc-label {
5858
+ font-size: var(--font-size-sm);
5859
+ line-height: var(--line-height-normal);
5860
+ font-family: var(
5861
+ --default-ui-font-family,
5862
+ var(--font-ui, var(--font-body, var(--font-family-sans)))
5863
+ );
5864
+ }
5865
+
5866
+ .bc-label--emphasis {
5867
+ font-weight: var(--font-weight-bold);
5868
+ }
5869
+
5870
+ .bc-label--default {
5871
+ font-weight: var(--font-weight-medium);
5872
+ }
5873
+
5874
+ .bc-label--muted {
5875
+ font-weight: var(--font-weight-medium);
5876
+ opacity: 0.5;
5877
+ }
5878
+
5879
+ .bc-label--danger {
5880
+ font-weight: var(--font-weight-medium);
5881
+ color: var(--color-danger-500);
5882
+ }
5883
+
5884
+ /* Dark mode styles */
5885
+ .b-dark .bc-label {
5886
+ color: var(--text-normal-dark);
5887
+ }
5888
+
5889
+ .b-dark .bc-label--muted {
5890
+ color: var(--text-muted-dark);
5891
+ }
5892
+
5893
+ .b-dark .bc-label--danger {
5894
+ color: var(--color-danger-400);
5895
+ }
5896
+
5897
+ @layer components {
5898
+ /* Lexical Editor Component */
5899
+
5900
+ /* Container wrapper for toolbar + editor */
5901
+ .bc-lexical-editor-container {
5902
+ display: flex;
5903
+ flex-direction: column;
5904
+ border: 1px solid var(--color-neutral-200);
5905
+ border-radius: var(--radius-control, var(--radius-md));
5906
+ background-color: var(--color-neutral-50);
5907
+ overflow: hidden;
5908
+ transition: all
5909
+ var(--motion-transition-fast, var(--motion-duration-fast, 0.2s))
5910
+ var(--motion-easing-standard, cubic-bezier(0.2, 0, 0, 1));
5911
+ }
5912
+
5913
+ /* Fixed height mode on container: fill parent, constrain children */
5914
+ .bc-lexical-editor-container--fixed {
5915
+ height: 100%;
5916
+ }
5917
+
5918
+ /* Editor surface (contenteditable) */
5919
+ .bc-lexical-editor {
5920
+ position: relative;
5921
+ min-height: 150px;
5922
+ padding: 1rem;
5923
+ outline: none;
5924
+ font-family: inherit;
5925
+ font-size: inherit;
5926
+ line-height: 1.6;
5927
+ color: var(--color-neutral-900);
5928
+ background-color: var(--color-white);
5929
+ }
5930
+
5931
+ /* Fixed height mode: fill container, scroll on overflow */
5932
+ .bc-lexical-editor--fixed {
5933
+ flex: 1 1 0;
5934
+ overflow-y: auto;
5935
+ }
5936
+
5937
+ /* Auto height mode: grow with content */
5938
+ .bc-lexical-editor--auto {
5939
+ overflow-y: visible;
5940
+ }
5941
+
5942
+ /* Focus state */
5943
+ .bc-lexical-editor-container:focus-within {
5944
+ border-color: var(--color-primary-500);
5945
+ box-shadow: 0 0 0 2px var(--color-primary-100);
5946
+ }
5947
+
5948
+ /* Error state */
5949
+ .bc-lexical-editor-container--error {
5950
+ border-color: var(--color-danger-600);
5951
+ }
5952
+
5953
+ .bc-lexical-editor-container--error:focus-within {
5954
+ border-color: var(--color-danger-600);
5955
+ box-shadow: 0 0 0 2px var(--color-danger-100);
5956
+ }
5957
+
5958
+ /* Read-only state */
5959
+ .bc-lexical-editor--readonly {
5960
+ cursor: default;
5961
+ background-color: var(--color-neutral-100);
5962
+ color: var(--color-neutral-700);
5963
+ }
5964
+
5965
+ /* Placeholder styling */
5966
+ .bc-lexical-editor [data-lexical-placeholder] {
5967
+ color: var(--color-neutral-400);
5968
+ pointer-events: none;
5969
+ position: absolute;
5970
+ top: 1rem;
5971
+ left: 1rem;
5972
+ user-select: none;
5973
+ font-style: italic;
5974
+ }
5975
+
5976
+ /* Typography within editor */
5977
+ .bc-lexical-editor h1 {
5978
+ font-size: 2rem;
5979
+ font-weight: 700;
5980
+ line-height: 1.2;
5981
+ margin-top: 1.5rem;
5982
+ margin-bottom: 0.75rem;
5983
+ }
5984
+
5985
+ .bc-lexical-editor h1:first-child {
5986
+ margin-top: 0;
5987
+ }
5988
+
5989
+ .bc-lexical-editor h2 {
5990
+ font-size: 1.5rem;
5991
+ font-weight: 700;
5992
+ line-height: 1.3;
5993
+ margin-top: 1.25rem;
5994
+ margin-bottom: 0.625rem;
5995
+ }
5996
+
5997
+ .bc-lexical-editor h2:first-child {
5998
+ margin-top: 0;
5999
+ }
6000
+
6001
+ .bc-lexical-editor h3 {
6002
+ font-size: 1.25rem;
6003
+ font-weight: 600;
6004
+ line-height: 1.4;
6005
+ margin-top: 1rem;
6006
+ margin-bottom: 0.5rem;
6007
+ }
6008
+
6009
+ .bc-lexical-editor h3:first-child {
6010
+ margin-top: 0;
6011
+ }
6012
+
6013
+ .bc-lexical-editor h4 {
6014
+ font-size: 1.125rem;
6015
+ font-weight: 600;
6016
+ line-height: 1.5;
6017
+ margin-top: 0.875rem;
6018
+ margin-bottom: 0.5rem;
6019
+ }
6020
+
6021
+ .bc-lexical-editor h4:first-child {
6022
+ margin-top: 0;
6023
+ }
6024
+
6025
+ .bc-lexical-editor h5 {
6026
+ font-size: 1rem;
6027
+ font-weight: 600;
6028
+ line-height: 1.5;
6029
+ margin-top: 0.75rem;
6030
+ margin-bottom: 0.5rem;
6031
+ }
6032
+
6033
+ .bc-lexical-editor h5:first-child {
6034
+ margin-top: 0;
6035
+ }
6036
+
6037
+ .bc-lexical-editor h6 {
6038
+ font-size: 0.875rem;
6039
+ font-weight: 600;
6040
+ line-height: 1.5;
6041
+ margin-top: 0.75rem;
6042
+ margin-bottom: 0.5rem;
6043
+ text-transform: uppercase;
6044
+ letter-spacing: 0.05em;
6045
+ }
6046
+
6047
+ .bc-lexical-editor h6:first-child {
6048
+ margin-top: 0;
6049
+ }
6050
+
6051
+ .bc-lexical-editor p {
6052
+ margin-top: 0.5rem;
6053
+ margin-bottom: 0.5rem;
6054
+ }
6055
+
6056
+ .bc-lexical-editor p:first-child {
6057
+ margin-top: 0;
6058
+ }
6059
+
6060
+ .bc-lexical-editor p:last-child {
6061
+ margin-bottom: 0;
6062
+ }
6063
+
6064
+ .bc-lexical-editor blockquote {
6065
+ margin: 1rem 0;
6066
+ padding-left: 1rem;
6067
+ border-left: 4px solid var(--color-neutral-300);
6068
+ color: var(--color-neutral-700);
6069
+ font-style: italic;
6070
+ }
6071
+
6072
+ .bc-lexical-editor ul,
6073
+ .bc-lexical-editor ol {
6074
+ margin: 0.75rem 0;
6075
+ padding-left: 1.5rem;
6076
+ }
6077
+
6078
+ .bc-lexical-editor ul {
6079
+ list-style-type: disc;
6080
+ }
6081
+
6082
+ .bc-lexical-editor ol {
6083
+ list-style-type: decimal;
6084
+ }
6085
+
6086
+ .bc-lexical-editor li {
6087
+ margin: 0.25rem 0;
6088
+ }
6089
+
6090
+ .bc-lexical-editor code {
6091
+ font-family: 'Monaco', 'Courier New', monospace;
6092
+ font-size: 0.875em;
6093
+ background-color: var(--color-neutral-100);
6094
+ color: var(--color-neutral-800);
6095
+ padding: 0.125rem 0.375rem;
6096
+ border-radius: var(--radius-xs, 0.25rem);
6097
+ }
6098
+
6099
+ .bc-lexical-editor pre {
6100
+ margin: 1rem 0;
6101
+ padding: 1rem;
6102
+ background-color: var(--color-neutral-100);
6103
+ border-radius: var(--radius-md, 0.5rem);
6104
+ overflow-x: auto;
6105
+ border: 1px solid var(--color-neutral-200);
6106
+ }
6107
+
6108
+ .bc-lexical-editor pre code {
6109
+ background-color: transparent;
6110
+ padding: 0;
6111
+ border-radius: 0;
6112
+ font-size: 0.875rem;
6113
+ line-height: 1.5;
6114
+ }
6115
+
6116
+ .bc-lexical-editor a {
6117
+ color: var(--color-primary-600);
6118
+ text-decoration: underline;
6119
+ text-underline-offset: 0.125rem;
6120
+ cursor: pointer;
6121
+ }
6122
+
6123
+ .bc-lexical-editor a:hover {
6124
+ color: var(--color-primary-700);
6125
+ }
6126
+
6127
+ .bc-lexical-editor hr {
6128
+ margin: 1.5rem 0;
6129
+ border: none;
6130
+ border-top: 2px solid var(--color-neutral-200);
6131
+ }
6132
+
6133
+ .bc-lexical-editor strong,
6134
+ .bc-lexical-bold {
6135
+ font-weight: 700;
6136
+ }
6137
+
6138
+ .bc-lexical-editor em,
6139
+ .bc-lexical-italic {
6140
+ font-style: italic;
6141
+ }
6142
+
6143
+ .bc-lexical-editor u,
6144
+ .bc-lexical-underline {
6145
+ text-decoration: underline;
6146
+ }
6147
+
6148
+ .bc-lexical-editor s,
6149
+ .bc-lexical-strikethrough {
6150
+ text-decoration: line-through;
6151
+ }
6152
+
6153
+ .bc-lexical-code {
6154
+ font-family: 'Monaco', 'Courier New', monospace;
6155
+ font-size: 0.875em;
6156
+ background-color: var(--color-neutral-100);
6157
+ color: var(--color-neutral-800);
6158
+ padding: 0.125rem 0.375rem;
6159
+ border-radius: var(--radius-xs, 0.25rem);
6160
+ }
6161
+
6162
+ .b-dark .bc-lexical-code {
6163
+ background-color: var(--color-neutral-800);
6164
+ color: var(--color-neutral-200);
6165
+ }
6166
+
6167
+ /* Check list items */
6168
+ .bc-lexical-li-checked,
6169
+ .bc-lexical-li-unchecked {
6170
+ list-style-type: none;
6171
+ position: relative;
6172
+ padding-left: 1.5rem;
6173
+ margin-left: -1.5rem;
6174
+ }
6175
+
6176
+ .bc-lexical-li-checked::before,
6177
+ .bc-lexical-li-unchecked::before {
6178
+ content: '';
6179
+ position: absolute;
6180
+ left: 0;
6181
+ top: 0.35em;
6182
+ width: 1em;
6183
+ height: 1em;
6184
+ border: 2px solid var(--color-neutral-400);
6185
+ border-radius: var(--radius-xs, 0.25rem);
6186
+ cursor: pointer;
6187
+ }
6188
+
6189
+ .bc-lexical-li-checked::before {
6190
+ background-color: var(--color-primary-500);
6191
+ border-color: var(--color-primary-500);
6192
+ }
6193
+
6194
+ .bc-lexical-li-checked::after {
6195
+ content: '';
6196
+ position: absolute;
6197
+ left: 0.25em;
6198
+ top: 0.45em;
6199
+ width: 0.5em;
6200
+ height: 0.25em;
6201
+ border-left: 2px solid white;
6202
+ border-bottom: 2px solid white;
6203
+ transform: rotate(-45deg);
6204
+ }
6205
+
6206
+ .bc-lexical-li-checked {
6207
+ text-decoration: line-through;
6208
+ color: var(--color-neutral-500);
6209
+ }
6210
+
6211
+ .b-dark .bc-lexical-li-checked::before {
6212
+ background-color: var(--color-primary-400);
6213
+ border-color: var(--color-primary-400);
6214
+ }
6215
+
6216
+ .b-dark .bc-lexical-li-unchecked::before {
6217
+ border-color: var(--color-neutral-600);
6218
+ }
6219
+
6220
+ /* Dark mode styles */
6221
+ .b-dark .bc-lexical-editor-container {
6222
+ background-color: var(--color-neutral-800);
6223
+ border-color: var(--color-neutral-700);
6224
+ }
6225
+
6226
+ .b-dark .bc-lexical-editor {
6227
+ background-color: var(--bg-surface-dark);
6228
+ color: var(--text-normal-dark);
6229
+ }
6230
+
6231
+ .b-dark .bc-lexical-editor-container:focus-within {
6232
+ border-color: var(--color-primary-400);
6233
+ box-shadow: 0 0 0 2px var(--color-primary-900);
6234
+ }
6235
+
6236
+ .b-dark .bc-lexical-editor-container--error {
6237
+ border-color: var(--color-danger-400);
6238
+ }
6239
+
6240
+ .b-dark .bc-lexical-editor-container--error:focus-within {
6241
+ border-color: var(--color-danger-400);
6242
+ box-shadow: 0 0 0 2px var(--color-danger-900);
6243
+ }
6244
+
6245
+ .b-dark .bc-lexical-editor--readonly {
6246
+ background-color: var(--color-neutral-900);
6247
+ color: var(--text-muted-dark);
6248
+ }
6249
+
6250
+ .b-dark .bc-lexical-editor [data-lexical-placeholder] {
6251
+ color: var(--color-neutral-500);
6252
+ }
6253
+
6254
+ .b-dark .bc-lexical-editor blockquote {
6255
+ border-left-color: var(--color-neutral-600);
6256
+ color: var(--text-muted-dark);
6257
+ }
6258
+
6259
+ .b-dark .bc-lexical-editor code {
6260
+ background-color: var(--color-neutral-800);
6261
+ color: var(--color-neutral-200);
6262
+ }
6263
+
6264
+ .b-dark .bc-lexical-editor pre {
6265
+ background-color: var(--color-neutral-900);
6266
+ border-color: var(--color-neutral-700);
6267
+ }
6268
+
6269
+ .b-dark .bc-lexical-editor a {
6270
+ color: var(--color-primary-400);
6271
+ }
6272
+
6273
+ .b-dark .bc-lexical-editor a:hover {
6274
+ color: var(--color-primary-300);
6275
+ }
6276
+
6277
+ .b-dark .bc-lexical-editor hr {
6278
+ border-top-color: var(--color-neutral-700);
6279
+ }
6280
+
6281
+ /* Collaboration: Remote cursors and selections */
6282
+ .bc-lexical-collaboration-cursor {
6283
+ position: absolute;
6284
+ pointer-events: none;
6285
+ user-select: none;
6286
+ }
6287
+
6288
+ .bc-lexical-collaboration-cursor__caret {
6289
+ position: absolute;
6290
+ width: 2px;
6291
+ height: 1.2em;
6292
+ background-color: currentColor;
6293
+ animation: bc-lexical-cursor-blink 1s infinite;
6294
+ }
6295
+
6296
+ .bc-lexical-collaboration-cursor__name {
6297
+ position: absolute;
6298
+ top: -20px;
6299
+ left: 0;
6300
+ padding: 2px 6px;
6301
+ background-color: currentColor;
6302
+ color: white;
6303
+ font-size: 0.75rem;
6304
+ font-weight: 500;
6305
+ border-radius: var(--radius-sm);
6306
+ white-space: nowrap;
6307
+ opacity: 0;
6308
+ transition: opacity 0.2s;
6309
+ }
6310
+
6311
+ .bc-lexical-collaboration-cursor:hover
6312
+ .bc-lexical-collaboration-cursor__name {
6313
+ opacity: 1;
6314
+ }
6315
+
6316
+ .bc-lexical-collaboration-selection {
6317
+ position: absolute;
6318
+ pointer-events: none;
6319
+ background-color: currentColor;
6320
+ opacity: 0.3;
6321
+ }
6322
+
6323
+ @keyframes bc-lexical-cursor-blink {
6324
+ 0%,
6325
+ 49% {
6326
+ opacity: 1;
6327
+ }
6328
+ 50%,
6329
+ 100% {
6330
+ opacity: 0;
6331
+ }
6332
+ }
6333
+
6334
+ /* Accessibility */
6335
+ @media (prefers-reduced-motion: reduce) {
6336
+ .bc-lexical-editor-container {
6337
+ transition: none;
6338
+ }
6339
+ }
6340
+
6341
+ @media (prefers-contrast: high) {
6342
+ .bc-lexical-editor-container {
6343
+ border-width: 2px;
6344
+ }
6345
+
6346
+ .bc-lexical-editor-container:focus-within {
6347
+ box-shadow: 0 0 0 3px var(--color-primary-100);
6348
+ }
6349
+
6350
+ .b-dark .bc-lexical-editor-container:focus-within {
6351
+ box-shadow: 0 0 0 3px var(--color-primary-900);
6352
+ }
6353
+ }
6354
+ }
6355
+
6356
+ @layer components {
6357
+ /* Lexical Editor Toolbar */
6358
+
6359
+ /* Toolbar positioned at top of editor container */
6360
+ .bc-lexical-toolbar {
6361
+ border-bottom: 1px solid var(--color-neutral-200);
6362
+ border-radius: 0;
6363
+ border: none;
6364
+ background-color: var(--color-neutral-50);
6365
+ padding: var(--spacing-xs) var(--spacing-sm);
6366
+ flex-wrap: wrap;
6367
+ }
6368
+
6369
+ .b-dark .bc-lexical-toolbar {
6370
+ background-color: var(--color-neutral-800);
6371
+ }
6372
+
6373
+ /* When toolbar is inside the editor container, add bottom border */
6374
+ .bc-lexical-editor-container > .bc-lexical-toolbar {
6375
+ border-bottom: 1px solid var(--color-neutral-200);
6376
+ }
6377
+
6378
+ .b-dark .bc-lexical-editor-container > .bc-lexical-toolbar {
6379
+ border-bottom-color: var(--color-neutral-700);
6380
+ }
6381
+
6382
+ /* Bottom position variant */
6383
+ .bc-lexical-toolbar--bottom {
6384
+ border-bottom: none;
6385
+ border-top: 1px solid var(--color-neutral-200);
6386
+ }
6387
+
6388
+ .b-dark .bc-lexical-toolbar--bottom {
6389
+ border-top-color: var(--color-neutral-700);
6390
+ }
6391
+
6392
+ /* Hidden state for readOnly mode */
6393
+ .bc-lexical-toolbar--hidden {
6394
+ display: none;
6395
+ }
6396
+
6397
+ /* Toolbar selects (font family/size) */
6398
+ .bc-lexical-toolbar-select {
6399
+ height: 28px;
6400
+ padding: 0 var(--spacing-xs);
6401
+ border: 1px solid var(--color-neutral-300);
6402
+ border-radius: var(--radius-sm);
6403
+ background-color: var(--color-surface);
6404
+ color: var(--color-neutral-900);
6405
+ font-size: 0.75rem;
6406
+ cursor: pointer;
6407
+ }
6408
+
6409
+ .b-dark .bc-lexical-toolbar-select {
6410
+ border-color: var(--color-neutral-600);
6411
+ background-color: var(--color-neutral-700);
6412
+ color: var(--color-neutral-100);
6413
+ }
6414
+
6415
+ /* Color picker labels */
6416
+ .bc-lexical-toolbar-color {
6417
+ display: inline-flex;
6418
+ align-items: center;
6419
+ justify-content: center;
6420
+ position: relative;
6421
+ width: 28px;
6422
+ height: 28px;
6423
+ cursor: pointer;
6424
+ border-radius: var(--radius-sm);
6425
+ }
6426
+
6427
+ .bc-lexical-toolbar-color:hover {
6428
+ background-color: var(--color-neutral-200);
6429
+ }
6430
+
6431
+ .b-dark .bc-lexical-toolbar-color:hover {
6432
+ background-color: var(--color-neutral-600);
6433
+ }
6434
+
6435
+ .bc-lexical-toolbar-color input[type='color'] {
6436
+ position: absolute;
6437
+ inset: 0;
6438
+ width: 100%;
6439
+ height: 100%;
6440
+ opacity: 0;
6441
+ cursor: pointer;
6442
+ border: none;
6443
+ padding: 0;
6444
+ }
6445
+
6446
+ .bc-lexical-toolbar-color-icon {
6447
+ font-size: 0.875rem;
6448
+ font-weight: 700;
6449
+ pointer-events: none;
6450
+ line-height: 1;
6451
+ }
6452
+
6453
+ .bc-lexical-toolbar-color-icon--highlight {
6454
+ background-color: #ffff00;
6455
+ padding: 0 2px;
6456
+ border-radius: 2px;
6457
+ }
6458
+
6459
+ .bc-lexical-toolbar-color-icon--bg {
6460
+ font-size: 1rem;
6461
+ }
6462
+
6463
+ /* Responsive: compact toolbar on small containers */
6464
+ @container (max-width: 400px) {
6465
+ .bc-lexical-toolbar {
6466
+ padding: var(--spacing-2xs) var(--spacing-xs);
6467
+ gap: var(--spacing-2xs);
6468
+ }
6469
+ }
6470
+ }
6471
+
6472
+ @layer components {
6473
+ /* Lexical Floating Toolbar */
6474
+
6475
+ .bc-floating-toolbar {
6476
+ display: flex;
6477
+ align-items: center;
6478
+ gap: var(--spacing-xs);
6479
+ padding: var(--spacing-xs);
6480
+ border-radius: var(--radius-md);
6481
+ background-color: var(--color-white);
6482
+ border: 1px solid var(--color-neutral-200);
6483
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
6484
+ z-index: 1000;
6485
+ animation: bc-floating-toolbar-enter 0.15s ease-out;
6486
+ }
6487
+
6488
+ .b-dark .bc-floating-toolbar {
6489
+ background-color: var(--color-neutral-800);
6490
+ border-color: var(--color-neutral-700);
6491
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
6492
+ }
6493
+
6494
+ @keyframes bc-floating-toolbar-enter {
6495
+ from {
6496
+ opacity: 0;
6497
+ transform: translateX(-50%) translateY(4px);
6498
+ }
6499
+ to {
6500
+ opacity: 1;
6501
+ transform: translateX(-50%) translateY(0);
6502
+ }
6503
+ }
6504
+
6505
+ /* Slash Command Palette */
6506
+
6507
+ .bc-slash-command-palette {
6508
+ min-width: 280px;
6509
+ max-width: 360px;
6510
+ max-height: 400px;
6511
+ overflow-y: auto;
6512
+ border-radius: var(--radius-md);
6513
+ background-color: var(--color-white);
6514
+ border: 1px solid var(--color-neutral-200);
6515
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
6516
+ padding: var(--spacing-xs);
6517
+ z-index: 1000;
6518
+ animation: bc-slash-palette-enter 0.12s ease-out;
6519
+ }
6520
+
6521
+ .b-dark .bc-slash-command-palette {
6522
+ background-color: var(--color-neutral-800);
6523
+ border-color: var(--color-neutral-700);
6524
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
6525
+ }
6526
+
6527
+ @keyframes bc-slash-palette-enter {
6528
+ from {
6529
+ opacity: 0;
6530
+ transform: translateY(-4px);
6531
+ }
6532
+ to {
6533
+ opacity: 1;
6534
+ transform: translateY(0);
6535
+ }
6536
+ }
6537
+
6538
+ .bc-slash-command-palette__item {
6539
+ display: flex;
6540
+ align-items: center;
6541
+ gap: var(--spacing-sm);
6542
+ padding: var(--spacing-sm);
6543
+ border-radius: var(--radius-sm);
6544
+ cursor: pointer;
6545
+ transition: background-color 0.12s ease;
6546
+ }
6547
+
6548
+ .bc-slash-command-palette__item:hover,
6549
+ .bc-slash-command-palette__item[aria-selected='true'] {
6550
+ background-color: var(--color-primary-50);
6551
+ }
6552
+
6553
+ .b-dark .bc-slash-command-palette__item:hover,
6554
+ .b-dark .bc-slash-command-palette__item[aria-selected='true'] {
6555
+ background-color: var(--color-primary-900);
6556
+ }
6557
+
6558
+ .bc-slash-command-palette__icon {
6559
+ flex-shrink: 0;
6560
+ display: flex;
6561
+ align-items: center;
6562
+ justify-content: center;
6563
+ width: 20px;
6564
+ height: 20px;
6565
+ }
6566
+
6567
+ .bc-slash-command-palette__content {
6568
+ flex: 1;
6569
+ min-width: 0;
6570
+ }
6571
+
6572
+ .bc-slash-command-palette__label {
6573
+ font-weight: 500;
6574
+ font-size: var(--font-size-sm);
6575
+ color: var(--color-neutral-900);
6576
+ margin-bottom: 2px;
6577
+ }
6578
+
6579
+ .b-dark .bc-slash-command-palette__label {
6580
+ color: var(--color-neutral-100);
6581
+ }
6582
+
6583
+ .bc-slash-command-palette__description {
6584
+ font-size: var(--font-size-xs);
6585
+ color: var(--color-neutral-500);
6586
+ overflow: hidden;
6587
+ text-overflow: ellipsis;
6588
+ white-space: nowrap;
6589
+ }
6590
+
6591
+ .bc-slash-command-palette__category {
6592
+ font-size: var(--font-size-xs);
6593
+ color: var(--color-neutral-500);
6594
+ padding: 2px 6px;
6595
+ border-radius: var(--radius-sm);
6596
+ background-color: var(--color-neutral-100);
6597
+ flex-shrink: 0;
6598
+ }
6599
+
6600
+ .b-dark .bc-slash-command-palette__category {
6601
+ background-color: var(--color-neutral-700);
6602
+ color: var(--color-neutral-400);
6603
+ }
6604
+
6605
+ .bc-slash-command-palette__empty {
6606
+ padding: var(--spacing-md);
6607
+ color: var(--color-neutral-500);
6608
+ text-align: center;
6609
+ font-size: var(--font-size-sm);
6610
+ }
6611
+
6612
+ /* Block Handle */
6613
+
6614
+ .bc-block-handle {
6615
+ z-index: 999;
6616
+ animation: bc-block-handle-enter 0.1s ease-out;
6617
+ }
6618
+
6619
+ @keyframes bc-block-handle-enter {
6620
+ from {
6621
+ opacity: 0;
6622
+ }
6623
+ to {
6624
+ opacity: 1;
6625
+ }
6626
+ }
6627
+
6628
+ .bc-block-handle__button {
6629
+ display: flex;
6630
+ align-items: center;
6631
+ justify-content: center;
6632
+ width: 24px;
6633
+ height: 24px;
6634
+ border: 1px solid var(--color-neutral-200);
6635
+ border-radius: var(--radius-sm);
6636
+ background-color: var(--color-white);
6637
+ color: var(--color-neutral-400);
6638
+ cursor: pointer;
6639
+ padding: 0;
6640
+ transition: all 0.12s ease;
6641
+ }
6642
+
6643
+ .bc-block-handle__button:hover {
6644
+ background-color: var(--color-neutral-100);
6645
+ color: var(--color-neutral-600);
6646
+ border-color: var(--color-neutral-300);
6647
+ }
6648
+
6649
+ .bc-block-handle__button:disabled {
6650
+ opacity: 0.4;
6651
+ cursor: not-allowed;
6652
+ }
6653
+
6654
+ .b-dark .bc-block-handle__button {
6655
+ background-color: var(--color-neutral-800);
6656
+ border-color: var(--color-neutral-700);
6657
+ color: var(--color-neutral-500);
6658
+ }
6659
+
6660
+ .b-dark .bc-block-handle__button:hover {
6661
+ background-color: var(--color-neutral-700);
6662
+ color: var(--color-neutral-300);
6663
+ border-color: var(--color-neutral-600);
6664
+ }
6665
+ }
6666
+
6667
+ @layer components {
6668
+ /* Lexical Table Component */
6669
+
6670
+ /* Table structure */
6671
+ .bc-lexical-table {
6672
+ border-collapse: collapse;
6673
+ border-spacing: 0;
6674
+ width: 100%;
6675
+ margin: 1rem 0;
6676
+ overflow: hidden;
6677
+ table-layout: fixed;
6678
+ }
6679
+
6680
+ .bc-lexical-table-row {
6681
+ border-bottom: 1px solid var(--color-neutral-200);
6682
+ }
6683
+
6684
+ .bc-lexical-table-cell,
6685
+ .bc-lexical-table-cell-header {
6686
+ border: 1px solid var(--color-neutral-200);
6687
+ padding: 0.5rem 0.75rem;
6688
+ position: relative;
6689
+ vertical-align: top;
6690
+ min-width: 75px;
6691
+ }
6692
+
6693
+ .bc-lexical-table-cell-header {
6694
+ background-color: var(--color-neutral-50);
6695
+ font-weight: 600;
6696
+ text-align: left;
6697
+ }
6698
+
6699
+ /* Selected cell highlight */
6700
+ .bc-lexical-table-cell--selected {
6701
+ background-color: var(--color-primary-50);
6702
+ outline: 2px solid var(--color-primary-500);
6703
+ outline-offset: -2px;
6704
+ }
6705
+
6706
+ /* Table context menu */
6707
+ .bc-table-context-menu {
6708
+ display: flex;
6709
+ flex-direction: column;
6710
+ }
6711
+
6712
+ .bc-table-menu-button {
6713
+ font-family: inherit;
6714
+ line-height: 1.5;
6715
+ white-space: nowrap;
6716
+ }
6717
+
6718
+ .bc-table-menu-button:hover:not(:disabled) {
6719
+ background-color: var(--color-neutral-100);
6720
+ }
6721
+
6722
+ .bc-table-menu-button:active:not(:disabled) {
6723
+ background-color: var(--color-neutral-200);
6724
+ }
6725
+
6726
+ .bc-table-menu-button:disabled {
6727
+ opacity: 0.5;
6728
+ cursor: not-allowed;
6729
+ }
6730
+
6731
+ .bc-table-menu-separator {
6732
+ /* Separator styling defined inline in component */
6733
+ }
6734
+
6735
+ /* Dark mode styles */
6736
+ .b-dark .bc-lexical-table-cell,
6737
+ .b-dark .bc-lexical-table-cell-header {
6738
+ border-color: var(--color-neutral-700);
6739
+ }
6740
+
6741
+ .b-dark .bc-lexical-table-row {
6742
+ border-bottom-color: var(--color-neutral-700);
6743
+ }
6744
+
6745
+ .b-dark .bc-lexical-table-cell-header {
6746
+ background-color: var(--color-neutral-800);
6747
+ }
6748
+
6749
+ .b-dark .bc-lexical-table-cell--selected {
6750
+ background-color: var(--color-primary-900);
6751
+ outline-color: var(--color-primary-400);
6752
+ }
6753
+
6754
+ .b-dark .bc-table-context-menu {
6755
+ background-color: var(--color-neutral-800);
6756
+ border-color: var(--color-neutral-700);
6757
+ }
6758
+
6759
+ .b-dark .bc-table-menu-button {
6760
+ color: var(--color-neutral-100);
6761
+ }
6762
+
6763
+ .b-dark .bc-table-menu-button:hover:not(:disabled) {
6764
+ background-color: var(--color-neutral-700);
6765
+ }
6766
+
6767
+ .b-dark .bc-table-menu-button:active:not(:disabled) {
6768
+ background-color: var(--color-neutral-600);
6769
+ }
6770
+
6771
+ .b-dark .bc-table-menu-separator {
6772
+ background-color: var(--color-neutral-700);
6773
+ }
6774
+
6775
+ /* Accessibility */
6776
+ @media (prefers-reduced-motion: reduce) {
6777
+ .bc-table-menu-button {
6778
+ transition: none;
6779
+ }
6780
+ }
6781
+
6782
+ @media (prefers-contrast: high) {
6783
+ .bc-lexical-table-cell,
6784
+ .bc-lexical-table-cell-header {
6785
+ border-width: 2px;
6786
+ }
6787
+
6788
+ .bc-lexical-table-cell--selected {
6789
+ outline-width: 3px;
6790
+ }
6791
+ }
6792
+ }
6793
+
6794
+ @layer components {
6795
+ /* Lexical Code Block Component */
6796
+
6797
+ /* Code block structure */
6798
+ .bc-lexical-code-block {
6799
+ position: relative;
6800
+ margin: 1rem 0;
6801
+ padding: 1rem;
6802
+ background-color: var(--color-neutral-50);
6803
+ border: 1px solid var(--color-neutral-200);
6804
+ border-radius: var(--radius-md);
6805
+ overflow-x: auto;
6806
+ font-family:
6807
+ 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Courier New', monospace;
6808
+ font-size: 0.875rem;
6809
+ line-height: 1.6;
6810
+ }
6811
+
6812
+ /* Language selector */
6813
+ .bc-code-language-selector {
6814
+ /* Positioning handled inline */
6815
+ }
6816
+
6817
+ .bc-code-language-button:hover:not(:disabled) {
6818
+ background-color: var(--color-neutral-200);
6819
+ border-color: var(--color-neutral-400);
6820
+ }
6821
+
6822
+ .bc-code-language-button:disabled {
6823
+ opacity: 0.5;
6824
+ cursor: not-allowed;
6825
+ }
6826
+
6827
+ .bc-code-language-dropdown {
6828
+ /* Dropdown styling handled inline */
6829
+ }
6830
+
6831
+ .bc-code-language-option:hover {
6832
+ background-color: var(--color-neutral-100);
6833
+ }
6834
+
6835
+ .bc-code-language-option:active {
6836
+ background-color: var(--color-neutral-200);
6837
+ }
6838
+
6839
+ /* Syntax highlighting token colors (light theme) */
6840
+ .bc-lexical-code-block .token.comment,
6841
+ .bc-lexical-code-block .token.prolog,
6842
+ .bc-lexical-code-block .token.doctype,
6843
+ .bc-lexical-code-block .token.cdata {
6844
+ color: #6a737d;
6845
+ font-style: italic;
6846
+ }
6847
+
6848
+ .bc-lexical-code-block .token.punctuation {
6849
+ color: #24292e;
6850
+ }
6851
+
6852
+ .bc-lexical-code-block .token.property,
6853
+ .bc-lexical-code-block .token.tag,
6854
+ .bc-lexical-code-block .token.boolean,
6855
+ .bc-lexical-code-block .token.number,
6856
+ .bc-lexical-code-block .token.constant,
6857
+ .bc-lexical-code-block .token.symbol,
6858
+ .bc-lexical-code-block .token.deleted {
6859
+ color: #005cc5;
6860
+ }
6861
+
6862
+ .bc-lexical-code-block .token.selector,
6863
+ .bc-lexical-code-block .token.attr-name,
6864
+ .bc-lexical-code-block .token.string,
6865
+ .bc-lexical-code-block .token.char,
6866
+ .bc-lexical-code-block .token.builtin,
6867
+ .bc-lexical-code-block .token.inserted {
6868
+ color: #032f62;
6869
+ }
6870
+
6871
+ .bc-lexical-code-block .token.operator,
6872
+ .bc-lexical-code-block .token.entity,
6873
+ .bc-lexical-code-block .token.url,
6874
+ .bc-lexical-code-block .language-css .token.string,
6875
+ .bc-lexical-code-block .style .token.string {
6876
+ color: #d73a49;
6877
+ }
6878
+
6879
+ .bc-lexical-code-block .token.atrule,
6880
+ .bc-lexical-code-block .token.attr-value,
6881
+ .bc-lexical-code-block .token.keyword {
6882
+ color: #d73a49;
6883
+ }
6884
+
6885
+ .bc-lexical-code-block .token.function,
6886
+ .bc-lexical-code-block .token.class-name {
6887
+ color: #6f42c1;
6888
+ }
6889
+
6890
+ .bc-lexical-code-block .token.regex,
6891
+ .bc-lexical-code-block .token.important,
6892
+ .bc-lexical-code-block .token.variable {
6893
+ color: #e36209;
6894
+ }
6895
+
6896
+ /* Line numbers (optional) */
6897
+ .bc-lexical-code-block--with-line-numbers {
6898
+ padding-left: 3.5rem;
6899
+ }
6900
+
6901
+ .bc-lexical-code-block .line-number {
6902
+ position: absolute;
6903
+ left: 0;
6904
+ width: 3rem;
6905
+ text-align: right;
6906
+ color: var(--color-neutral-400);
6907
+ user-select: none;
6908
+ padding-right: 1rem;
6909
+ }
6910
+
6911
+ /* Dark mode styles */
6912
+ .b-dark .bc-lexical-code-block {
6913
+ background-color: var(--color-neutral-900);
6914
+ border-color: var(--color-neutral-700);
6915
+ color: var(--color-neutral-100);
6916
+ }
6917
+
6918
+ .b-dark .bc-code-language-button {
6919
+ background-color: var(--color-neutral-800);
6920
+ border-color: var(--color-neutral-600);
6921
+ color: var(--color-neutral-200);
6922
+ }
6923
+
6924
+ .b-dark .bc-code-language-button:hover:not(:disabled) {
6925
+ background-color: var(--color-neutral-700);
6926
+ border-color: var(--color-neutral-500);
6927
+ }
6928
+
6929
+ .b-dark .bc-code-language-dropdown {
6930
+ background-color: var(--color-neutral-800);
6931
+ border-color: var(--color-neutral-700);
6932
+ }
6933
+
6934
+ .b-dark .bc-code-language-option {
6935
+ color: var(--color-neutral-100);
6936
+ }
6937
+
6938
+ .b-dark .bc-code-language-option:hover {
6939
+ background-color: var(--color-neutral-700);
6940
+ }
6941
+
6942
+ .b-dark .bc-code-language-option:active {
6943
+ background-color: var(--color-neutral-600);
6944
+ }
6945
+
6946
+ /* Syntax highlighting token colors (dark theme) */
6947
+ .b-dark .bc-lexical-code-block .token.comment,
6948
+ .b-dark .bc-lexical-code-block .token.prolog,
6949
+ .b-dark .bc-lexical-code-block .token.doctype,
6950
+ .b-dark .bc-lexical-code-block .token.cdata {
6951
+ color: #8b949e;
6952
+ }
6953
+
6954
+ .b-dark .bc-lexical-code-block .token.punctuation {
6955
+ color: #c9d1d9;
6956
+ }
6957
+
6958
+ .b-dark .bc-lexical-code-block .token.property,
6959
+ .b-dark .bc-lexical-code-block .token.tag,
6960
+ .b-dark .bc-lexical-code-block .token.boolean,
6961
+ .b-dark .bc-lexical-code-block .token.number,
6962
+ .b-dark .bc-lexical-code-block .token.constant,
6963
+ .b-dark .bc-lexical-code-block .token.symbol,
6964
+ .b-dark .bc-lexical-code-block .token.deleted {
6965
+ color: #79c0ff;
6966
+ }
6967
+
6968
+ .b-dark .bc-lexical-code-block .token.selector,
6969
+ .b-dark .bc-lexical-code-block .token.attr-name,
6970
+ .b-dark .bc-lexical-code-block .token.string,
6971
+ .b-dark .bc-lexical-code-block .token.char,
6972
+ .b-dark .bc-lexical-code-block .token.builtin,
6973
+ .b-dark .bc-lexical-code-block .token.inserted {
6974
+ color: #a5d6ff;
6975
+ }
6976
+
6977
+ .b-dark .bc-lexical-code-block .token.operator,
6978
+ .b-dark .bc-lexical-code-block .token.entity,
6979
+ .b-dark .bc-lexical-code-block .token.url,
6980
+ .b-dark .bc-lexical-code-block .language-css .token.string,
6981
+ .b-dark .bc-lexical-code-block .style .token.string {
6982
+ color: #ff7b72;
6983
+ }
6984
+
6985
+ .b-dark .bc-lexical-code-block .token.atrule,
6986
+ .b-dark .bc-lexical-code-block .token.attr-value,
6987
+ .b-dark .bc-lexical-code-block .token.keyword {
6988
+ color: #ff7b72;
6989
+ }
6990
+
6991
+ .b-dark .bc-lexical-code-block .token.function,
6992
+ .b-dark .bc-lexical-code-block .token.class-name {
6993
+ color: #d2a8ff;
6994
+ }
6995
+
6996
+ .b-dark .bc-lexical-code-block .token.regex,
6997
+ .b-dark .bc-lexical-code-block .token.important,
6998
+ .b-dark .bc-lexical-code-block .token.variable {
6999
+ color: #ffa657;
7000
+ }
7001
+
7002
+ .b-dark .bc-lexical-code-block .line-number {
7003
+ color: var(--color-neutral-600);
7004
+ }
7005
+
7006
+ /* Accessibility */
7007
+ @media (prefers-reduced-motion: reduce) {
7008
+ .bc-code-language-button,
7009
+ .bc-code-language-option {
7010
+ transition: none;
7011
+ }
7012
+ }
7013
+
7014
+ @media (prefers-contrast: high) {
7015
+ .bc-lexical-code-block {
7016
+ border-width: 2px;
7017
+ }
7018
+ }
5279
7019
  }
5280
7020
 
5281
7021
  /* Link Component */