@jackuait/blok 0.7.0-beta.4 → 0.7.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 (463) hide show
  1. package/dist/blok.mjs +3 -7
  2. package/dist/chunks/blok-D-7DpjTs.mjs +12435 -0
  3. package/dist/chunks/constants-DXYRzX7f.mjs +2934 -0
  4. package/dist/chunks/i18next-DymC16cN.mjs +1146 -0
  5. package/dist/chunks/i18next-loader-qjweOJ-t.mjs +35 -0
  6. package/dist/chunks/lightweight-i18n-vbtPx5C4.mjs +105 -0
  7. package/dist/chunks/messages-3bOAVT3X2.mjs +80 -0
  8. package/dist/chunks/messages-43N0Vfg42.mjs +80 -0
  9. package/dist/chunks/messages-B0cg-ThO2.mjs +80 -0
  10. package/dist/chunks/messages-B3StvafX.mjs +80 -0
  11. package/dist/chunks/messages-B7LU-b6n2.mjs +80 -0
  12. package/dist/chunks/messages-B87-89os.mjs +80 -0
  13. package/dist/chunks/messages-BFiMCfDX2.mjs +80 -0
  14. package/dist/chunks/messages-BLxyso1L.mjs +80 -0
  15. package/dist/chunks/messages-BQZtOYxr2.mjs +80 -0
  16. package/dist/chunks/messages-BRrtoRdw2.mjs +80 -0
  17. package/dist/chunks/messages-BU_YdaAf.mjs +80 -0
  18. package/dist/chunks/messages-BWbZYIs12.mjs +80 -0
  19. package/dist/chunks/messages-B_Qcy8kr2.mjs +80 -0
  20. package/dist/chunks/messages-B_uTiuQ-.mjs +80 -0
  21. package/dist/chunks/messages-BdWTM73p.mjs +80 -0
  22. package/dist/chunks/messages-BhZcNoIQ.mjs +80 -0
  23. package/dist/chunks/messages-Bn6LwI4B.mjs +80 -0
  24. package/dist/chunks/messages-BoTtYEct2.mjs +80 -0
  25. package/dist/chunks/messages-BrvAiuWT.mjs +80 -0
  26. package/dist/chunks/messages-Byp0YFMg.mjs +80 -0
  27. package/dist/chunks/messages-C0ZWDShx2.mjs +80 -0
  28. package/dist/chunks/messages-CA-jms9R.mjs +80 -0
  29. package/dist/chunks/messages-CFr0Ha6p2.mjs +80 -0
  30. package/dist/chunks/messages-CG2xl0IV.mjs +80 -0
  31. package/dist/chunks/messages-CIGX0FfW.mjs +80 -0
  32. package/dist/chunks/messages-CRMdL0jG.mjs +80 -0
  33. package/dist/chunks/messages-CRdl14uE.mjs +80 -0
  34. package/dist/chunks/messages-Cimsel4e.mjs +80 -0
  35. package/dist/chunks/messages-CjcSWeud.mjs +80 -0
  36. package/dist/chunks/messages-ClDJuy8K2.mjs +80 -0
  37. package/dist/chunks/messages-Cn1AC0Qk.mjs +80 -0
  38. package/dist/chunks/messages-CpnXbVOK2.mjs +80 -0
  39. package/dist/chunks/messages-CqsES1wk2.mjs +80 -0
  40. package/dist/chunks/messages-Csq7JatN.mjs +80 -0
  41. package/dist/chunks/messages-CtufKbaD.mjs +80 -0
  42. package/dist/chunks/messages-Cuk0QaLM.mjs +80 -0
  43. package/dist/chunks/messages-CvamFN6x.mjs +80 -0
  44. package/dist/chunks/messages-CwRhVVui.mjs +80 -0
  45. package/dist/chunks/messages-CzCezryo.mjs +80 -0
  46. package/dist/chunks/messages-D0v0Xa_i2.mjs +80 -0
  47. package/dist/chunks/messages-D3JVx_CH2.mjs +80 -0
  48. package/dist/chunks/messages-D4jR5Oc-.mjs +80 -0
  49. package/dist/chunks/messages-D7fI9Pj52.mjs +80 -0
  50. package/dist/chunks/messages-DGodJU2R.mjs +80 -0
  51. package/dist/chunks/messages-DLrmLkco2.mjs +80 -0
  52. package/dist/chunks/messages-DPe7kW6J.mjs +80 -0
  53. package/dist/chunks/messages-DRYKKPk8.mjs +80 -0
  54. package/dist/chunks/messages-DV5c_ZRQ.mjs +80 -0
  55. package/dist/chunks/messages-Dg6kSnxq.mjs +80 -0
  56. package/dist/chunks/messages-Dgfbmyf-.mjs +80 -0
  57. package/dist/chunks/messages-DihczS7L.mjs +80 -0
  58. package/dist/chunks/messages-DkSwQvmi2.mjs +80 -0
  59. package/dist/chunks/messages-Doxcj7Qy.mjs +80 -0
  60. package/dist/chunks/messages-DqGQvcXv2.mjs +80 -0
  61. package/dist/chunks/messages-Dr7yA3xM.mjs +80 -0
  62. package/dist/chunks/messages-DriB5lEF.mjs +80 -0
  63. package/dist/chunks/messages-FB_MePlt.mjs +80 -0
  64. package/dist/chunks/messages-JyZvGvrN.mjs +80 -0
  65. package/dist/chunks/messages-KdvbGwLH.mjs +80 -0
  66. package/dist/chunks/messages-M0HT-kBW.mjs +80 -0
  67. package/dist/chunks/messages-M8noQ6Kp2.mjs +80 -0
  68. package/dist/chunks/messages-elZUbCrN.mjs +80 -0
  69. package/dist/chunks/messages-iWMOMK822.mjs +80 -0
  70. package/dist/chunks/messages-kC92TJI72.mjs +80 -0
  71. package/dist/chunks/messages-tfyq1JIh2.mjs +80 -0
  72. package/dist/chunks/messages-v1HkA3kF2.mjs +80 -0
  73. package/dist/chunks/messages-yuqArCc6.mjs +80 -0
  74. package/dist/chunks/notifier-BqYxvxnV.mjs +96 -0
  75. package/dist/chunks/objectSpread2-CyPxu8-u.mjs +62 -0
  76. package/dist/chunks/tools-Chd7Auwx.mjs +6004 -0
  77. package/dist/chunks/tw-DmW6-pCY.mjs +237 -0
  78. package/dist/cli.mjs +36 -49
  79. package/dist/full.mjs +26 -52
  80. package/dist/locales.mjs +181 -254
  81. package/dist/messages-2iHnlF0U.mjs +80 -0
  82. package/dist/messages-49ZJ_ISf.mjs +80 -0
  83. package/dist/messages-B8jjwMLK.mjs +80 -0
  84. package/dist/messages-BEDVb3ZX.mjs +80 -0
  85. package/dist/messages-BEEr6Vh82.mjs +80 -0
  86. package/dist/messages-BFT0F9pw.mjs +80 -0
  87. package/dist/messages-BHOI7R4K.mjs +80 -0
  88. package/dist/messages-BRPH_a6a.mjs +80 -0
  89. package/dist/messages-BSlQrYwp.mjs +80 -0
  90. package/dist/messages-BTNuOkhL.mjs +80 -0
  91. package/dist/messages-BX2KVzJp2.mjs +80 -0
  92. package/dist/messages-BaGwIHPb2.mjs +80 -0
  93. package/dist/messages-BdA_xvxj.mjs +80 -0
  94. package/dist/messages-BeJaje7e2.mjs +80 -0
  95. package/dist/messages-BfgHOkAy.mjs +80 -0
  96. package/dist/messages-BflWzIcP2.mjs +80 -0
  97. package/dist/messages-BigRnQS92.mjs +80 -0
  98. package/dist/messages-BjnJajTO2.mjs +80 -0
  99. package/dist/messages-BpA30dPf.mjs +80 -0
  100. package/dist/messages-BrPEPj382.mjs +80 -0
  101. package/dist/messages-Bt_9ptDu.mjs +80 -0
  102. package/dist/messages-C0cXOCHN2.mjs +80 -0
  103. package/dist/messages-C3tLCwJp2.mjs +80 -0
  104. package/dist/messages-C45IBZtA2.mjs +80 -0
  105. package/dist/messages-CA0hwajz.mjs +80 -0
  106. package/dist/messages-CCKZS2f4.mjs +80 -0
  107. package/dist/messages-CCm71gq3.mjs +80 -0
  108. package/dist/messages-CERs9LC9.mjs +80 -0
  109. package/dist/messages-CLQvtc_8.mjs +80 -0
  110. package/dist/messages-CPx1R-PH.mjs +80 -0
  111. package/dist/messages-CYFdbooL2.mjs +80 -0
  112. package/dist/messages-CYLYnOV82.mjs +80 -0
  113. package/dist/messages-CYZVFnaF.mjs +80 -0
  114. package/dist/messages-CaAdEXoh2.mjs +80 -0
  115. package/dist/messages-CicggErN2.mjs +80 -0
  116. package/dist/messages-CkAWTSc4.mjs +80 -0
  117. package/dist/messages-CkVfziK_2.mjs +80 -0
  118. package/dist/messages-CsM2iz1H2.mjs +80 -0
  119. package/dist/messages-D-12TeCM2.mjs +80 -0
  120. package/dist/messages-D0i5Vdyy2.mjs +80 -0
  121. package/dist/messages-D5KmRsUV2.mjs +80 -0
  122. package/dist/messages-DBwaWI0X.mjs +80 -0
  123. package/dist/messages-DDGzypb4.mjs +80 -0
  124. package/dist/messages-DQGzw4IC.mjs +80 -0
  125. package/dist/messages-DWZyaZNA.mjs +80 -0
  126. package/dist/messages-DYlxQEIv.mjs +80 -0
  127. package/dist/messages-DZo0x7Bd.mjs +80 -0
  128. package/dist/messages-Dc1yFFBM.mjs +80 -0
  129. package/dist/messages-DdUpYaJ1.mjs +80 -0
  130. package/dist/messages-DgstU8GH.mjs +80 -0
  131. package/dist/messages-DhdWq5oQ2.mjs +80 -0
  132. package/dist/messages-DmX52AQr.mjs +80 -0
  133. package/dist/messages-Dr-YJYIK2.mjs +80 -0
  134. package/dist/messages-DuubRyFf.mjs +80 -0
  135. package/dist/messages-DvTVsLOK2.mjs +80 -0
  136. package/dist/messages-DwPfgL_u.mjs +80 -0
  137. package/dist/messages-DxKIxLKw.mjs +80 -0
  138. package/dist/messages-DzhR8Klk.mjs +80 -0
  139. package/dist/messages-MBBSKGjJ2.mjs +80 -0
  140. package/dist/messages-RNusm48G2.mjs +80 -0
  141. package/dist/messages-XwPD18Kk.mjs +80 -0
  142. package/dist/messages-YfjdnhUF.mjs +80 -0
  143. package/dist/messages-aNMLsF8T2.mjs +80 -0
  144. package/dist/messages-cOqXp22e.mjs +80 -0
  145. package/dist/messages-g58itYPI.mjs +80 -0
  146. package/dist/messages-vfkwiKQo.mjs +80 -0
  147. package/dist/messages-vssmW7KO.mjs +80 -0
  148. package/dist/react.mjs +108 -0
  149. package/dist/tools.mjs +3 -7485
  150. package/dist/vendor.LICENSE.txt +86 -86
  151. package/package.json +56 -29
  152. package/src/blok.ts +52 -2
  153. package/src/components/block/api.ts +8 -0
  154. package/src/components/block/mutation-handler.ts +29 -4
  155. package/src/components/block/style-manager.ts +1 -1
  156. package/src/components/block-tunes/block-tune-width.ts +39 -0
  157. package/src/components/blocks.ts +56 -2
  158. package/src/components/core.ts +1 -0
  159. package/src/components/i18n/locales/am/messages.json +6 -1
  160. package/src/components/i18n/locales/ar/messages.json +6 -1
  161. package/src/components/i18n/locales/az/messages.json +6 -1
  162. package/src/components/i18n/locales/bg/messages.json +8 -3
  163. package/src/components/i18n/locales/bn/messages.json +6 -1
  164. package/src/components/i18n/locales/bs/messages.json +6 -1
  165. package/src/components/i18n/locales/cs/messages.json +6 -1
  166. package/src/components/i18n/locales/da/messages.json +6 -1
  167. package/src/components/i18n/locales/de/messages.json +8 -3
  168. package/src/components/i18n/locales/dv/messages.json +6 -1
  169. package/src/components/i18n/locales/el/messages.json +8 -3
  170. package/src/components/i18n/locales/en/messages.json +5 -0
  171. package/src/components/i18n/locales/es/messages.json +6 -1
  172. package/src/components/i18n/locales/et/messages.json +6 -1
  173. package/src/components/i18n/locales/fa/messages.json +8 -3
  174. package/src/components/i18n/locales/fi/messages.json +6 -1
  175. package/src/components/i18n/locales/fil/messages.json +21 -16
  176. package/src/components/i18n/locales/fr/messages.json +6 -1
  177. package/src/components/i18n/locales/gu/messages.json +6 -1
  178. package/src/components/i18n/locales/he/messages.json +6 -1
  179. package/src/components/i18n/locales/hi/messages.json +6 -1
  180. package/src/components/i18n/locales/hr/messages.json +6 -1
  181. package/src/components/i18n/locales/hu/messages.json +6 -1
  182. package/src/components/i18n/locales/hy/messages.json +8 -3
  183. package/src/components/i18n/locales/id/messages.json +12 -7
  184. package/src/components/i18n/locales/it/messages.json +6 -1
  185. package/src/components/i18n/locales/ja/messages.json +6 -1
  186. package/src/components/i18n/locales/ka/messages.json +6 -1
  187. package/src/components/i18n/locales/km/messages.json +6 -1
  188. package/src/components/i18n/locales/kn/messages.json +6 -1
  189. package/src/components/i18n/locales/ko/messages.json +6 -1
  190. package/src/components/i18n/locales/ku/messages.json +7 -2
  191. package/src/components/i18n/locales/lo/messages.json +7 -2
  192. package/src/components/i18n/locales/lt/messages.json +6 -1
  193. package/src/components/i18n/locales/lv/messages.json +6 -1
  194. package/src/components/i18n/locales/mk/messages.json +6 -1
  195. package/src/components/i18n/locales/ml/messages.json +6 -1
  196. package/src/components/i18n/locales/mn/messages.json +6 -1
  197. package/src/components/i18n/locales/mr/messages.json +6 -1
  198. package/src/components/i18n/locales/ms/messages.json +6 -1
  199. package/src/components/i18n/locales/my/messages.json +6 -1
  200. package/src/components/i18n/locales/ne/messages.json +9 -4
  201. package/src/components/i18n/locales/nl/messages.json +6 -1
  202. package/src/components/i18n/locales/no/messages.json +6 -1
  203. package/src/components/i18n/locales/pa/messages.json +6 -1
  204. package/src/components/i18n/locales/pl/messages.json +6 -1
  205. package/src/components/i18n/locales/ps/messages.json +8 -3
  206. package/src/components/i18n/locales/pt/messages.json +6 -1
  207. package/src/components/i18n/locales/ro/messages.json +6 -1
  208. package/src/components/i18n/locales/ru/messages.json +10 -5
  209. package/src/components/i18n/locales/sd/messages.json +6 -1
  210. package/src/components/i18n/locales/si/messages.json +6 -1
  211. package/src/components/i18n/locales/sk/messages.json +6 -1
  212. package/src/components/i18n/locales/sl/messages.json +6 -1
  213. package/src/components/i18n/locales/sq/messages.json +6 -1
  214. package/src/components/i18n/locales/sr/messages.json +6 -1
  215. package/src/components/i18n/locales/sv/messages.json +6 -1
  216. package/src/components/i18n/locales/sw/messages.json +6 -1
  217. package/src/components/i18n/locales/ta/messages.json +6 -1
  218. package/src/components/i18n/locales/te/messages.json +9 -4
  219. package/src/components/i18n/locales/th/messages.json +6 -1
  220. package/src/components/i18n/locales/tr/messages.json +6 -1
  221. package/src/components/i18n/locales/ug/messages.json +7 -2
  222. package/src/components/i18n/locales/uk/messages.json +6 -1
  223. package/src/components/i18n/locales/ur/messages.json +6 -1
  224. package/src/components/i18n/locales/vi/messages.json +6 -1
  225. package/src/components/i18n/locales/yi/messages.json +7 -2
  226. package/src/components/i18n/locales/zh/messages.json +6 -1
  227. package/src/components/icons/index.ts +16 -0
  228. package/src/components/inline-tools/inline-tool-link.ts +1 -1
  229. package/src/components/modules/api/blocks.ts +45 -2
  230. package/src/components/modules/api/index.ts +1 -0
  231. package/src/components/modules/api/width.ts +17 -0
  232. package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +99 -0
  233. package/src/components/modules/blockEvents/composers/markdownShortcuts.ts +109 -2
  234. package/src/components/modules/blockEvents/constants.ts +7 -0
  235. package/src/components/modules/blockManager/blockManager.ts +113 -9
  236. package/src/components/modules/blockManager/hierarchy.ts +61 -0
  237. package/src/components/modules/blockManager/operations.ts +133 -15
  238. package/src/components/modules/blockManager/yjs-sync.ts +112 -4
  239. package/src/components/modules/blockSelection.ts +36 -2
  240. package/src/components/modules/crossBlockSelection.ts +22 -2
  241. package/src/components/modules/drag/DragController.ts +178 -4
  242. package/src/components/modules/drag/operations/DragOperations.ts +48 -9
  243. package/src/components/modules/drag/preview/DragPreview.ts +21 -1
  244. package/src/components/modules/drag/state/DragStateMachine.ts +6 -1
  245. package/src/components/modules/drag/target/DropTargetDetector.ts +80 -4
  246. package/src/components/modules/drag/utils/ToggleSpringLoader.ts +71 -0
  247. package/src/components/modules/drag/utils/drag.constants.ts +1 -1
  248. package/src/components/modules/index.ts +7 -1
  249. package/src/components/modules/modificationsObserver.ts +19 -0
  250. package/src/components/modules/paste/constants.ts +2 -0
  251. package/src/components/modules/paste/handlers/base.ts +33 -1
  252. package/src/components/modules/paste/handlers/html-handler.ts +121 -54
  253. package/src/components/modules/paste/index.ts +5 -0
  254. package/src/components/modules/paste/types.ts +5 -0
  255. package/src/components/modules/rectangleSelection.ts +74 -81
  256. package/src/components/modules/toolbar/blockSettings.ts +25 -7
  257. package/src/components/modules/toolbar/index.ts +9 -7
  258. package/src/components/modules/toolbar/inline/index.ts +6 -1
  259. package/src/components/modules/toolbar/plus-button.ts +2 -6
  260. package/src/components/modules/toolbar/positioning.ts +10 -1
  261. package/src/components/modules/toolbar/settings-toggler.ts +1 -1
  262. package/src/components/modules/toolbar/styles.ts +4 -8
  263. package/src/components/modules/ui.ts +59 -5
  264. package/src/components/modules/uiControllers/handlers/click.ts +3 -2
  265. package/src/components/modules/widthManager.ts +69 -0
  266. package/src/components/modules/yjs/document-store.ts +11 -0
  267. package/src/components/modules/yjs/index.ts +11 -0
  268. package/src/components/shared/color-picker.ts +3 -3
  269. package/src/components/tools/block.ts +1 -11
  270. package/src/components/ui/toolbox.ts +52 -8
  271. package/src/components/utils/blocks.ts +37 -7
  272. package/src/components/utils/mutations.ts +2 -2
  273. package/src/components/utils/notifier/draw.ts +1 -1
  274. package/src/components/utils/placeholder.ts +5 -6
  275. package/src/components/utils/popover/components/popover-header/popover-header.const.ts +1 -1
  276. package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.const.ts +4 -4
  277. package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +6 -6
  278. package/src/components/utils/popover/components/popover-item/popover-item-separator/popover-item-separator.const.ts +2 -2
  279. package/src/components/utils/popover/components/search-input/search-input.const.ts +2 -2
  280. package/src/components/utils/popover/components/search-input/search-input.ts +7 -11
  281. package/src/components/utils/popover/components/search-input/search-input.types.ts +149 -10
  282. package/src/components/utils/popover/popover-abstract.ts +3 -2
  283. package/src/components/utils/popover/popover-desktop.ts +133 -11
  284. package/src/components/utils/popover/popover-inline.ts +1 -1
  285. package/src/components/utils/popover/popover.const.ts +3 -3
  286. package/src/components/utils/shortcut.ts +2 -0
  287. package/src/components/utils/tooltip.ts +11 -1
  288. package/src/react/BlokContent.tsx +46 -0
  289. package/src/react/holder-map.ts +17 -0
  290. package/src/react/index.ts +3 -0
  291. package/src/react/types.ts +16 -0
  292. package/src/react/useBlok.ts +173 -0
  293. package/src/stories/Placeholder.stories.ts +0 -59
  294. package/src/styles/main.css +663 -52
  295. package/src/tools/header/header-toggle-keyboard.ts +115 -0
  296. package/src/tools/header/index.ts +382 -187
  297. package/src/tools/list/block-operations.ts +1 -1
  298. package/src/tools/list/caret-manager.ts +9 -12
  299. package/src/tools/list/index.ts +2 -6
  300. package/src/tools/list/list-keyboard.ts +2 -2
  301. package/src/tools/paragraph/index.ts +1 -1
  302. package/src/tools/table/index.ts +37 -3
  303. package/src/tools/table/table-add-controls.ts +97 -8
  304. package/src/tools/table/table-cell-blocks.ts +17 -8
  305. package/src/tools/table/table-cell-clipboard.ts +1 -1
  306. package/src/tools/table/table-cell-selection.ts +27 -2
  307. package/src/tools/table/table-operations.ts +3 -2
  308. package/src/tools/toggle/block-operations.ts +4 -2
  309. package/src/tools/toggle/constants.ts +26 -2
  310. package/src/tools/toggle/dom-builder.ts +90 -25
  311. package/src/tools/toggle/index.ts +112 -9
  312. package/src/tools/toggle/toggle-keyboard.ts +5 -3
  313. package/src/tools/toggle/toggle-lifecycle.ts +79 -7
  314. package/src/tools/toggle/toggle-shortcuts.ts +214 -20
  315. package/src/tools/toggle/types.ts +2 -0
  316. package/src/types-internal/blok-modules.d.ts +4 -0
  317. package/types/api/block.d.ts +5 -0
  318. package/types/api/blocks.d.ts +29 -0
  319. package/types/api/index.d.ts +1 -0
  320. package/types/api/width.d.ts +19 -0
  321. package/types/configs/blok-config.d.ts +33 -0
  322. package/types/index.d.ts +4 -0
  323. package/types/react.d.ts +58 -0
  324. package/types/utils/popover/popover.d.ts +7 -0
  325. package/dist/chunks/blok-B0pAWdVk.mjs +0 -20102
  326. package/dist/chunks/constants-DmDwNSTM.mjs +0 -5123
  327. package/dist/chunks/i18next-B47TKgbU.mjs +0 -1303
  328. package/dist/chunks/i18next-loader-v9SlYZ0i.mjs +0 -43
  329. package/dist/chunks/index-DHLWzZaA.mjs +0 -130
  330. package/dist/chunks/messages-0Pxnqd4N.mjs +0 -75
  331. package/dist/chunks/messages-0ZXYUq7S.mjs +0 -75
  332. package/dist/chunks/messages-2OD2uUDS.mjs +0 -75
  333. package/dist/chunks/messages-7cEMfYzh.mjs +0 -75
  334. package/dist/chunks/messages-8mwfda1Q.mjs +0 -75
  335. package/dist/chunks/messages-B-FqWsBM.mjs +0 -75
  336. package/dist/chunks/messages-B1jzqWiQ.mjs +0 -75
  337. package/dist/chunks/messages-B5wk4Ezz.mjs +0 -75
  338. package/dist/chunks/messages-BAZ5Ld8x.mjs +0 -75
  339. package/dist/chunks/messages-BBhGp198.mjs +0 -75
  340. package/dist/chunks/messages-BC9IjIb7.mjs +0 -75
  341. package/dist/chunks/messages-BFEmpeV-.mjs +0 -75
  342. package/dist/chunks/messages-BGqzTZy0.mjs +0 -75
  343. package/dist/chunks/messages-BICs1abK.mjs +0 -75
  344. package/dist/chunks/messages-BJX6rOnd.mjs +0 -75
  345. package/dist/chunks/messages-BL2bXRhN.mjs +0 -75
  346. package/dist/chunks/messages-BMs5qdlH.mjs +0 -75
  347. package/dist/chunks/messages-BRsjUNwB.mjs +0 -75
  348. package/dist/chunks/messages-BSqV8OUR.mjs +0 -75
  349. package/dist/chunks/messages-BTqu3DfG.mjs +0 -75
  350. package/dist/chunks/messages-BXnDEsur.mjs +0 -75
  351. package/dist/chunks/messages-BYcre4-6.mjs +0 -75
  352. package/dist/chunks/messages-BZ9LRJf-.mjs +0 -75
  353. package/dist/chunks/messages-BgypBy7y.mjs +0 -75
  354. package/dist/chunks/messages-BsuGf70G.mjs +0 -75
  355. package/dist/chunks/messages-BwaoF4lQ.mjs +0 -75
  356. package/dist/chunks/messages-C1l8_7-y.mjs +0 -75
  357. package/dist/chunks/messages-C5NA_r9v.mjs +0 -75
  358. package/dist/chunks/messages-C6zgZ5pA.mjs +0 -75
  359. package/dist/chunks/messages-CAo5ghFI.mjs +0 -75
  360. package/dist/chunks/messages-CH9qlJ9I.mjs +0 -75
  361. package/dist/chunks/messages-CI0HqAeS.mjs +0 -75
  362. package/dist/chunks/messages-CJJtms9k.mjs +0 -75
  363. package/dist/chunks/messages-CM2hJqk6.mjs +0 -75
  364. package/dist/chunks/messages-CRMiDPIQ.mjs +0 -75
  365. package/dist/chunks/messages-CWsZuBj1.mjs +0 -75
  366. package/dist/chunks/messages-C_gLHo6A.mjs +0 -75
  367. package/dist/chunks/messages-Cbu-NUDn.mjs +0 -75
  368. package/dist/chunks/messages-Cjb_MCeh.mjs +0 -75
  369. package/dist/chunks/messages-ClXYO9Wn.mjs +0 -75
  370. package/dist/chunks/messages-CsH20vhP.mjs +0 -75
  371. package/dist/chunks/messages-CsjAGhzA.mjs +0 -75
  372. package/dist/chunks/messages-Cx7VKFOE.mjs +0 -75
  373. package/dist/chunks/messages-D3JeBwxo.mjs +0 -75
  374. package/dist/chunks/messages-D541fieJ.mjs +0 -75
  375. package/dist/chunks/messages-D7XPdglc.mjs +0 -75
  376. package/dist/chunks/messages-DBhylfvt.mjs +0 -75
  377. package/dist/chunks/messages-DCA120lW.mjs +0 -75
  378. package/dist/chunks/messages-DCf_xZMN.mjs +0 -75
  379. package/dist/chunks/messages-DDwXKCpe.mjs +0 -75
  380. package/dist/chunks/messages-DNKDlxcy.mjs +0 -75
  381. package/dist/chunks/messages-DPvEjrGK.mjs +0 -75
  382. package/dist/chunks/messages-DQ-AkNxA.mjs +0 -75
  383. package/dist/chunks/messages-DVuvkNap.mjs +0 -75
  384. package/dist/chunks/messages-DaglyqUT.mjs +0 -75
  385. package/dist/chunks/messages-Di0bAfwA.mjs +0 -75
  386. package/dist/chunks/messages-DuLct0Yr.mjs +0 -75
  387. package/dist/chunks/messages-DzEYYhZh.mjs +0 -75
  388. package/dist/chunks/messages-DznNGAB2.mjs +0 -75
  389. package/dist/chunks/messages-DzoIzyu8.mjs +0 -75
  390. package/dist/chunks/messages-QYOGmket.mjs +0 -75
  391. package/dist/chunks/messages-cEjGDAgI.mjs +0 -75
  392. package/dist/chunks/messages-ddhvrdpE.mjs +0 -75
  393. package/dist/chunks/messages-mwfNK5nZ.mjs +0 -75
  394. package/dist/chunks/messages-nG_vNDte.mjs +0 -75
  395. package/dist/chunks/messages-tDq3Owh7.mjs +0 -75
  396. package/dist/chunks/messages-x6VJVZKx.mjs +0 -75
  397. package/dist/messages-0Pxnqd4N.mjs +0 -75
  398. package/dist/messages-0ZXYUq7S.mjs +0 -75
  399. package/dist/messages-2OD2uUDS.mjs +0 -75
  400. package/dist/messages-7cEMfYzh.mjs +0 -75
  401. package/dist/messages-8mwfda1Q.mjs +0 -75
  402. package/dist/messages-B-FqWsBM.mjs +0 -75
  403. package/dist/messages-B1jzqWiQ.mjs +0 -75
  404. package/dist/messages-B5wk4Ezz.mjs +0 -75
  405. package/dist/messages-BAZ5Ld8x.mjs +0 -75
  406. package/dist/messages-BBhGp198.mjs +0 -75
  407. package/dist/messages-BC9IjIb7.mjs +0 -75
  408. package/dist/messages-BFEmpeV-.mjs +0 -75
  409. package/dist/messages-BGqzTZy0.mjs +0 -75
  410. package/dist/messages-BICs1abK.mjs +0 -75
  411. package/dist/messages-BJX6rOnd.mjs +0 -75
  412. package/dist/messages-BL2bXRhN.mjs +0 -75
  413. package/dist/messages-BMs5qdlH.mjs +0 -75
  414. package/dist/messages-BRsjUNwB.mjs +0 -75
  415. package/dist/messages-BSqV8OUR.mjs +0 -75
  416. package/dist/messages-BTqu3DfG.mjs +0 -75
  417. package/dist/messages-BXnDEsur.mjs +0 -75
  418. package/dist/messages-BYcre4-6.mjs +0 -75
  419. package/dist/messages-BZ9LRJf-.mjs +0 -75
  420. package/dist/messages-BgypBy7y.mjs +0 -75
  421. package/dist/messages-BsuGf70G.mjs +0 -75
  422. package/dist/messages-BwaoF4lQ.mjs +0 -75
  423. package/dist/messages-C1l8_7-y.mjs +0 -75
  424. package/dist/messages-C5NA_r9v.mjs +0 -75
  425. package/dist/messages-C6zgZ5pA.mjs +0 -75
  426. package/dist/messages-CAo5ghFI.mjs +0 -75
  427. package/dist/messages-CH9qlJ9I.mjs +0 -75
  428. package/dist/messages-CI0HqAeS.mjs +0 -75
  429. package/dist/messages-CJJtms9k.mjs +0 -75
  430. package/dist/messages-CM2hJqk6.mjs +0 -75
  431. package/dist/messages-CRMiDPIQ.mjs +0 -75
  432. package/dist/messages-CWsZuBj1.mjs +0 -75
  433. package/dist/messages-C_gLHo6A.mjs +0 -75
  434. package/dist/messages-Cbu-NUDn.mjs +0 -75
  435. package/dist/messages-Cjb_MCeh.mjs +0 -75
  436. package/dist/messages-ClXYO9Wn.mjs +0 -75
  437. package/dist/messages-CsH20vhP.mjs +0 -75
  438. package/dist/messages-CsjAGhzA.mjs +0 -75
  439. package/dist/messages-Cx7VKFOE.mjs +0 -75
  440. package/dist/messages-D3JeBwxo.mjs +0 -75
  441. package/dist/messages-D541fieJ.mjs +0 -75
  442. package/dist/messages-D7XPdglc.mjs +0 -75
  443. package/dist/messages-DBhylfvt.mjs +0 -75
  444. package/dist/messages-DCA120lW.mjs +0 -75
  445. package/dist/messages-DCf_xZMN.mjs +0 -75
  446. package/dist/messages-DDwXKCpe.mjs +0 -75
  447. package/dist/messages-DNKDlxcy.mjs +0 -75
  448. package/dist/messages-DPvEjrGK.mjs +0 -75
  449. package/dist/messages-DQ-AkNxA.mjs +0 -75
  450. package/dist/messages-DVuvkNap.mjs +0 -75
  451. package/dist/messages-DaglyqUT.mjs +0 -75
  452. package/dist/messages-Di0bAfwA.mjs +0 -75
  453. package/dist/messages-DuLct0Yr.mjs +0 -75
  454. package/dist/messages-DzEYYhZh.mjs +0 -75
  455. package/dist/messages-DznNGAB2.mjs +0 -75
  456. package/dist/messages-DzoIzyu8.mjs +0 -75
  457. package/dist/messages-QYOGmket.mjs +0 -75
  458. package/dist/messages-cEjGDAgI.mjs +0 -75
  459. package/dist/messages-ddhvrdpE.mjs +0 -75
  460. package/dist/messages-mwfNK5nZ.mjs +0 -75
  461. package/dist/messages-nG_vNDte.mjs +0 -75
  462. package/dist/messages-tDq3Owh7.mjs +0 -75
  463. package/dist/messages-x6VJVZKx.mjs +0 -75
@@ -7,9 +7,425 @@
7
7
  See: https://github.com/tailwindlabs/tailwindcss/discussions/13188
8
8
  */
9
9
  @import 'tailwindcss/theme.css';
10
- @import 'tailwindcss/preflight.css';
11
10
  @import 'tailwindcss/utilities.css';
12
11
 
12
+ /*
13
+ Style isolation: prevent host-page styles from cascading into Blok's UI,
14
+ and prevent Blok's preflight from affecting the host page.
15
+
16
+ [data-blok-interface] — the editor wrapper element
17
+ [data-blok-popover] — popover elements mounted directly to <body>
18
+
19
+ `all: revert` rolls every CSS property back to the browser's UA stylesheet
20
+ baseline, blocking ambient host-page styles from cascading in. Blok's own
21
+ utility classes (applied to the same elements or descendants) override this
22
+ because they appear later in the cascade.
23
+
24
+ The scoped preflight below replaces `@import 'tailwindcss/preflight.css'`.
25
+ It applies the same resets as Tailwind's preflight, but only inside Blok's
26
+ isolation roots — not to the entire host page.
27
+
28
+ All selectors use :where() (zero specificity) so user-authored CSS that
29
+ explicitly targets Blok elements wins without needing !important.
30
+ */
31
+
32
+ /* --- Isolation boundaries --- */
33
+ /*
34
+ Top-level isolation roots each use a different reset strategy:
35
+
36
+ [data-blok-interface=blok]
37
+ `all: initial !important` — main editor wrapper (outermost boundary).
38
+ Resets every property to its CSS initial value with !important priority,
39
+ blocking even `!important` host-page styles from cascading in.
40
+ Blok's own Tailwind utility classes (applied to the same elements or
41
+ descendants) override this because they have equal or higher specificity
42
+ and appear later in the cascade.
43
+
44
+ [data-blok-popover]:not([data-blok-popover-inline])
45
+ Inherited-properties-only reset — toolbox/settings popovers, appended
46
+ to <body>. Unlike `[data-blok-interface=blok]`, the popover root receives
47
+ JS-applied inline styles (position, top, left, CSS variables) that must
48
+ NOT be overridden. Since only INHERITED CSS properties can flow in from
49
+ host page styles, we reset only inherited properties with `!important`
50
+ rather than using `all: initial !important` (which would override the
51
+ inline-normal layout styles set by JavaScript).
52
+
53
+ [data-blok-interface=tooltip]
54
+ Inherited-properties-only reset — tooltip element, appended directly to
55
+ <body>. Uses the same strategy as [data-blok-popover]: reset only inherited
56
+ CSS properties, not layout properties. The tooltip sets position, top, left,
57
+ z-index, and opacity via Tailwind utility classes and JS inline styles; using
58
+ `all: initial !important` here would reset `position` to `static`, which
59
+ removes the wrapper as a containing block. Without a positioned wrapper, the
60
+ `::before` pseudo-element (position:absolute; inset:0) would expand to fill
61
+ the entire viewport, darkening the page on hover of inline toolbar buttons.
62
+
63
+ [data-blok-interface=inline-toolbar] is intentionally excluded: it is a
64
+ positioned descendant inside the editor wrapper, not a top-level body
65
+ element. Applying `all: initial` there would undo Tailwind utilities
66
+ (e.g. `position: absolute`, `z-index`) that the inline toolbar relies on.
67
+
68
+ [data-blok-popover-inline] is also excluded: inline popovers (used by the
69
+ inline toolbar) live inside the editor wrapper and are already protected by
70
+ its isolation boundary. They must NOT be reset here — doing so breaks their
71
+ display/position/visibility. Only body-level popovers need isolation.
72
+ */
73
+ [data-blok-interface=blok] {
74
+ all: initial !important;
75
+ }
76
+
77
+ /* Font family — user-configurable via config.style.fontFamily */
78
+ [data-blok-interface=blok],
79
+ [data-blok-interface=tooltip] {
80
+ font-family: var(--blok-font-family, ui-sans-serif, system-ui, sans-serif) !important;
81
+ color: var(--blok-text-primary) !important;
82
+ }
83
+
84
+ /*
85
+ Reset Tailwind CSS custom properties that host-page styles may override on :root.
86
+ `all: initial` does NOT reset CSS custom properties (per spec), so we must
87
+ explicitly restore each --radius-* token to Tailwind v4's built-in defaults.
88
+ Without these resets, a host page that sets e.g. `--radius-lg: 20px` on :root
89
+ will cause Blok's `rounded-lg` utility to resolve to 20px instead of 8px.
90
+ */
91
+ [data-blok-interface=blok],
92
+ [data-blok-interface=tooltip],
93
+ [data-blok-popover] {
94
+ --radius: 0.25rem;
95
+ --radius-xs: 0.125rem;
96
+ --radius-sm: 0.25rem;
97
+ --radius-md: 0.375rem;
98
+ --radius-lg: 0.5rem;
99
+ --radius-xl: 0.75rem;
100
+ --radius-2xl: 1rem;
101
+ --radius-3xl: 1.5rem;
102
+ --radius-4xl: 2rem;
103
+ }
104
+
105
+ /*
106
+ Reset inherited CSS properties on body-level popover and tooltip roots.
107
+ Only inherited properties can cascade in from host-page styles;
108
+ non-inherited properties (position, top, left, display, width, etc.)
109
+ cannot cascade and must NOT be reset here because JavaScript and Tailwind
110
+ utility classes set them as normal author/inline styles, which would be
111
+ overridden by author-!important.
112
+ */
113
+ [data-blok-popover]:not([data-blok-popover-inline]),
114
+ [data-blok-interface=tooltip] {
115
+ color: initial !important;
116
+ font-family: var(--blok-font-family, ui-sans-serif, system-ui, sans-serif) !important;
117
+ font-size: initial !important;
118
+ font-weight: initial !important;
119
+ font-style: initial !important;
120
+ font-variant: initial !important;
121
+ font-stretch: initial !important;
122
+ line-height: initial !important;
123
+ letter-spacing: initial !important;
124
+ word-spacing: initial !important;
125
+ text-align: initial !important;
126
+ text-indent: initial !important;
127
+ text-transform: initial !important;
128
+ text-decoration: initial !important;
129
+ text-shadow: initial !important;
130
+ white-space: initial !important;
131
+ word-break: initial !important;
132
+ overflow-wrap: initial !important;
133
+ cursor: initial !important;
134
+ pointer-events: initial !important;
135
+ user-select: initial !important;
136
+ direction: initial !important;
137
+ list-style: initial !important;
138
+ quotes: initial !important;
139
+ border-collapse: initial !important;
140
+ border-spacing: initial !important;
141
+ empty-cells: initial !important;
142
+ caption-side: initial !important;
143
+ scrollbar-width: initial !important;
144
+ scrollbar-color: initial !important;
145
+ }
146
+
147
+ /* --- Scoped preflight (replaces tailwindcss/preflight.css) --- */
148
+
149
+ /*
150
+ 1. Prevent padding and border from affecting element width.
151
+ 2. Remove default margins and padding.
152
+ 3. Reset all borders.
153
+ */
154
+ :where([data-blok-interface], [data-blok-popover]) *,
155
+ :where([data-blok-interface], [data-blok-popover]) ::after,
156
+ :where([data-blok-interface], [data-blok-popover]) ::before,
157
+ :where([data-blok-interface], [data-blok-popover]) ::backdrop,
158
+ :where([data-blok-interface], [data-blok-popover]) ::file-selector-button {
159
+ box-sizing: border-box; /* 1 */
160
+ margin: 0; /* 2 */
161
+ padding: 0; /* 2 */
162
+ border: 0 solid; /* 3 */
163
+ }
164
+
165
+ /*
166
+ NOTE: The `html` rule from Tailwind preflight (line-height, font-family,
167
+ tap-highlight, etc.) is intentionally omitted. It cannot be scoped to a
168
+ sub-element, and it was the primary source of host-page <html> mutations.
169
+ Blok sets its own font-family and line-height via utility classes on the
170
+ wrapper and its descendants.
171
+ */
172
+
173
+ /* Correct the inheritance of border color in Firefox. */
174
+ :where([data-blok-interface], [data-blok-popover]) hr {
175
+ height: 0;
176
+ color: inherit;
177
+ border-top-width: 1px;
178
+ }
179
+
180
+ /* Add the correct text decoration in Chrome, Edge, and Safari. */
181
+ :where([data-blok-interface], [data-blok-popover]) abbr:where([title]) {
182
+ -webkit-text-decoration: underline dotted;
183
+ text-decoration: underline dotted;
184
+ }
185
+
186
+ /*
187
+ Reset font-family and letter-spacing for headings so host-page heading rules
188
+ (e.g. `h1 { font-family: 'Times New Roman'; letter-spacing: 0.5em; }`) cannot
189
+ override Blok's styling — even when the host uses `!important`.
190
+ Specificity raised from (0,0,1) to (0,1,1) to beat host element-selector rules.
191
+ font-size and font-weight are intentionally omitted from this rule so that the
192
+ Header tool's own Tailwind utility classes (text-4xl, font-bold, etc.) remain
193
+ effective in the normal cascade. The all:initial !important on the root boundary
194
+ already neutralizes the UA stylesheet's default heading sizes inside the editor.
195
+ */
196
+ [data-blok-interface] :is(h1, h2, h3, h4, h5, h6),
197
+ [data-blok-popover] :is(h1, h2, h3, h4, h5, h6) {
198
+ font-family: inherit !important;
199
+ letter-spacing: inherit !important;
200
+ }
201
+
202
+ /* Reset links to optimize for opt-in styling instead of opt-out. */
203
+ :where([data-blok-interface], [data-blok-popover]) a {
204
+ color: inherit;
205
+ -webkit-text-decoration: inherit;
206
+ text-decoration: inherit;
207
+ }
208
+
209
+ /* Add the correct font weight in Edge and Safari. */
210
+ :where([data-blok-interface], [data-blok-popover]) :is(b, strong) {
211
+ font-weight: bolder;
212
+ }
213
+
214
+ /* Correct the odd em font sizing in all browsers for code elements. */
215
+ :where([data-blok-interface], [data-blok-popover]) :is(code, kbd, samp, pre) {
216
+ font-family: --theme(
217
+ --default-mono-font-family,
218
+ ui-monospace,
219
+ SFMono-Regular,
220
+ Menlo,
221
+ Monaco,
222
+ Consolas,
223
+ 'Liberation Mono',
224
+ 'Courier New',
225
+ monospace
226
+ );
227
+ font-feature-settings: --theme(--default-mono-font-feature-settings, normal);
228
+ font-variation-settings: --theme(--default-mono-font-variation-settings, normal);
229
+ font-size: 1em;
230
+ }
231
+
232
+ /* Add the correct font size in all browsers. */
233
+ :where([data-blok-interface], [data-blok-popover]) small {
234
+ font-size: 80%;
235
+ }
236
+
237
+ /* Prevent sub and sup elements from affecting line height. */
238
+ :where([data-blok-interface], [data-blok-popover]) :is(sub, sup) {
239
+ font-size: 75%;
240
+ line-height: 0;
241
+ position: relative;
242
+ vertical-align: baseline;
243
+ }
244
+ :where([data-blok-interface], [data-blok-popover]) sub { bottom: -0.25em; }
245
+ :where([data-blok-interface], [data-blok-popover]) sup { top: -0.5em; }
246
+
247
+ /* Remove text indentation from table contents and fix border color inheritance. */
248
+ :where([data-blok-interface], [data-blok-popover]) table {
249
+ text-indent: 0;
250
+ border-color: inherit;
251
+ border-collapse: collapse;
252
+ }
253
+
254
+ /* Use the modern Firefox focus style for all focusable elements. */
255
+ :where([data-blok-interface], [data-blok-popover]) :-moz-focusring {
256
+ outline: auto;
257
+ }
258
+
259
+ /* Add the correct vertical alignment in Chrome and Firefox. */
260
+ :where([data-blok-interface], [data-blok-popover]) progress {
261
+ vertical-align: baseline;
262
+ }
263
+
264
+ /* Add the correct display in Chrome and Safari. */
265
+ :where([data-blok-interface], [data-blok-popover]) summary {
266
+ display: list-item;
267
+ }
268
+
269
+ /* Make lists unstyled by default. */
270
+ :where([data-blok-interface], [data-blok-popover]) :is(ol, ul, menu) {
271
+ list-style: none;
272
+ }
273
+
274
+ /* Make replaced elements display: block by default. */
275
+ :where([data-blok-interface], [data-blok-popover]) :is(img, svg, video, canvas, audio, iframe, embed, object) {
276
+ display: block;
277
+ vertical-align: middle;
278
+ }
279
+
280
+ /* Constrain images and videos to the parent width. */
281
+ :where([data-blok-interface], [data-blok-popover]) :is(img, video) {
282
+ max-width: 100%;
283
+ height: auto;
284
+ }
285
+
286
+ /* Inherit font styles in all browsers for form elements. */
287
+ :where([data-blok-interface], [data-blok-popover]) :is(button, input, select, optgroup, textarea, ::file-selector-button) {
288
+ font: inherit;
289
+ font-feature-settings: inherit;
290
+ font-variation-settings: inherit;
291
+ letter-spacing: inherit;
292
+ color: inherit;
293
+ border-radius: 0;
294
+ background-color: transparent;
295
+ opacity: 1;
296
+ }
297
+
298
+ /* Restore default font weight for optgroup. */
299
+ :where([data-blok-interface], [data-blok-popover]) :where(select:is([multiple], [size])) optgroup {
300
+ font-weight: bolder;
301
+ }
302
+
303
+ /* Restore indentation for optgroup options. */
304
+ :where([data-blok-interface], [data-blok-popover]) :where(select:is([multiple], [size])) optgroup option {
305
+ padding-inline-start: 20px;
306
+ }
307
+
308
+ /* Restore space after file selector button. */
309
+ :where([data-blok-interface], [data-blok-popover]) ::file-selector-button {
310
+ margin-inline-end: 4px;
311
+ }
312
+
313
+ /* Reset placeholder opacity in Firefox. */
314
+ :where([data-blok-interface], [data-blok-popover]) ::placeholder {
315
+ opacity: 1;
316
+ }
317
+
318
+ /* Set placeholder color to semi-transparent version of current text color. */
319
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
320
+ :where([data-blok-interface], [data-blok-popover]) ::placeholder {
321
+ color: color-mix(in oklab, currentcolor 50%, transparent);
322
+ }
323
+ }
324
+
325
+ /* Prevent resizing textareas horizontally by default. */
326
+ :where([data-blok-interface], [data-blok-popover]) textarea {
327
+ resize: vertical;
328
+ }
329
+
330
+ /* Remove inner padding in Chrome and Safari on macOS. */
331
+ :where([data-blok-interface], [data-blok-popover]) ::-webkit-search-decoration {
332
+ -webkit-appearance: none;
333
+ }
334
+
335
+ /* Ensure date/time inputs have consistent height in iOS Safari. */
336
+ :where([data-blok-interface], [data-blok-popover]) ::-webkit-date-and-time-value {
337
+ min-height: 1lh;
338
+ text-align: inherit;
339
+ }
340
+
341
+ /* Prevent height from changing on date/time inputs in macOS Safari. */
342
+ :where([data-blok-interface], [data-blok-popover]) ::-webkit-datetime-edit {
343
+ display: inline-flex;
344
+ }
345
+
346
+ /* Remove excess padding from pseudo-elements in date/time inputs. */
347
+ :where([data-blok-interface], [data-blok-popover]) ::-webkit-datetime-edit-fields-wrapper {
348
+ padding: 0;
349
+ }
350
+
351
+ :where([data-blok-interface], [data-blok-popover]) :is(
352
+ ::-webkit-datetime-edit,
353
+ ::-webkit-datetime-edit-year-field,
354
+ ::-webkit-datetime-edit-month-field,
355
+ ::-webkit-datetime-edit-day-field,
356
+ ::-webkit-datetime-edit-hour-field,
357
+ ::-webkit-datetime-edit-minute-field,
358
+ ::-webkit-datetime-edit-second-field,
359
+ ::-webkit-datetime-edit-millisecond-field,
360
+ ::-webkit-datetime-edit-meridiem-field
361
+ ) {
362
+ padding-block: 0;
363
+ }
364
+
365
+ /* Center dropdown marker on inputs with paired datalists. */
366
+ :where([data-blok-interface], [data-blok-popover]) ::-webkit-calendar-picker-indicator {
367
+ line-height: 1;
368
+ }
369
+
370
+ /* Remove additional :invalid styles in Firefox. */
371
+ :where([data-blok-interface], [data-blok-popover]) :-moz-ui-invalid {
372
+ box-shadow: none;
373
+ }
374
+
375
+ /* Correct the inability to style border-radius in iOS Safari. */
376
+ :where([data-blok-interface], [data-blok-popover]) :is(button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button) {
377
+ appearance: button;
378
+ }
379
+
380
+ /* Correct the cursor style of increment/decrement buttons in Safari. */
381
+ :where([data-blok-interface], [data-blok-popover]) :is(::-webkit-inner-spin-button, ::-webkit-outer-spin-button) {
382
+ height: auto;
383
+ }
384
+
385
+ /* Keep hidden elements hidden. */
386
+ :where([data-blok-interface], [data-blok-popover]) [hidden]:where(:not([hidden='until-found'])) {
387
+ display: none !important;
388
+ }
389
+
390
+ /* Suppress focus outline on mouse/pointer clicks inside Blok boundaries.
391
+ :focus-visible below will re-enable it for keyboard navigation only. */
392
+ [data-blok-interface] :focus:not(:focus-visible),
393
+ [data-blok-popover] :focus:not(:focus-visible) {
394
+ outline: none;
395
+ }
396
+
397
+ /* Never show a focus outline on contenteditable blocks — the text cursor
398
+ is sufficient affordance regardless of how focus was triggered. */
399
+ [data-blok-interface] [contenteditable]:focus-visible,
400
+ [data-blok-popover] [contenteditable]:focus-visible {
401
+ outline: none;
402
+ }
403
+
404
+ /* Restore browser-default :focus-visible styles inside Blok boundaries,
405
+ preventing host-page outline/border-radius overrides. */
406
+ [data-blok-interface] :focus-visible,
407
+ [data-blok-popover] :focus-visible {
408
+ outline: revert;
409
+ outline-offset: revert;
410
+ border-radius: revert;
411
+ }
412
+
413
+ /* Restore browser-default ::selection styles inside Blok boundaries. */
414
+ [data-blok-interface] ::selection,
415
+ [data-blok-popover] ::selection {
416
+ background-color: revert;
417
+ color: revert;
418
+ }
419
+
420
+ /* Restore browser-default scrollbar appearance inside Blok boundaries
421
+ (Chromium/Safari ::-webkit-scrollbar). */
422
+ [data-blok-interface] ::-webkit-scrollbar,
423
+ [data-blok-popover] ::-webkit-scrollbar {
424
+ width: revert;
425
+ height: revert;
426
+ background-color: revert;
427
+ }
428
+
13
429
  /*
14
430
  Exclude non-source directories from Tailwind's automatic content detection.
15
431
  Without this, Tailwind v4 scans all non-gitignored files (including docs/,
@@ -26,52 +442,14 @@
26
442
  @custom-variant not-mobile (@media (min-width: 651px));
27
443
  @custom-variant can-hover (@media (hover: hover));
28
444
 
29
- @custom-variant dark (&:where(.dark-mode, .dark-mode *));
30
-
445
+ /* Non-overridable tokens compiled statically */
31
446
  @theme {
32
447
  /* Z-index */
33
448
  --z-index-overlay: 999;
34
449
 
35
- /* Colors */
36
- --color-selection: #e1f2ff;
37
- --color-selection-inline: #d4ecff;
38
- --color-selection-highlight: rgba(46, 170, 220, 0.2);
39
- --color-bg-light: #eff2f5;
40
- --color-gray-text: #707684;
41
- --color-dark: #1d202b;
42
- --color-active-icon: #388ae5;
43
- --color-link: #388ae5;
44
- --color-line-gray: #eff0f1;
45
- --color-tooltip-bg: #1d202b;
46
- --color-tooltip-font: #cdd1e0;
47
- --color-icon-active-bg: rgba(56, 138, 229, 0.1);
48
- --color-icon-active-text: #388ae5;
49
- --color-text-primary: black;
50
- --color-text-secondary: #707684;
51
- --color-popover-border: #eff0f1;
52
- --color-popover-shadow: rgba(13, 20, 33, 0.1);
53
- --color-popover-bg: #ffffff;
54
- --color-popover-border-icon: rgb(201 201 204 / 48%);
55
- --color-popover-border-icon-disabled: #eff0f1;
56
- --color-item-focus-bg: rgba(34, 186, 255, 0.08);
57
- --color-item-focus-shadow: rgba(7, 161, 227, 0.08);
58
- --color-item-hover-bg: #f8f8f8;
59
- --color-icon-bg: rgba(0, 0, 0, 0.04);
60
- --color-item-confirm-bg: #e24a4a;
61
- --color-item-confirm-hover-bg: #ce4343;
62
- --color-item-destructive-text: #e24a4a;
63
- --color-item-destructive-hover-bg: rgba(226, 74, 74, 0.08);
64
- --color-notify-success-bg: #fafffe;
65
- --color-notify-success-bar: #41ffb1;
66
- --color-notify-error-bg: #fffbfb;
67
- --color-notify-error-bar: #fb5d5d;
68
- --color-notify-btn-cancel-bg: #f2f5f7;
69
- --color-notify-btn-cancel-text: #656b7c;
70
- --color-notify-btn-confirm-bg: #34c992;
71
-
72
450
  /* Spacing (also powers w-*, h-*, min-w-*, min-h-*, size-*) */
73
451
  --spacing-content-width: 650px;
74
- --spacing-narrow-mode-right-padding: 50px;
452
+ --spacing-narrow-mode-padding: 50px;
75
453
  --spacing-toolbox-btn: 26px;
76
454
  --spacing-toolbox-btn-mobile: 36px;
77
455
  --spacing-icon: 20px;
@@ -103,7 +481,7 @@
103
481
  --animate-bounce-in: bounceIn 0.75s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;
104
482
  --animate-selection-bounce: selectionBounce 0.75s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;
105
483
  --animate-button-clicked: buttonClicked 0.75s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;
106
- --animate-panel-showing: panelShowing 100ms ease;
484
+ --animate-panel-showing: panelShowing 150ms cubic-bezier(0.16, 1, 0.3, 1);
107
485
  --animate-panel-showing-mobile: panelShowingMobile 250ms ease;
108
486
  --animate-wobble: wobble 400ms;
109
487
  --animate-rotation: rotation 1.2s infinite linear;
@@ -137,9 +515,9 @@
137
515
  }
138
516
 
139
517
  @keyframes panelShowing {
140
- from { opacity: 0; transform: translateY(-8px) scale(0.9); }
141
- 70% { opacity: 1; transform: translateY(2px); }
142
- to { transform: translateY(0); }
518
+ from { opacity: 0; transform: translateY(-6px) scale(0.96); }
519
+ 60% { opacity: 1; transform: translateY(1px) scale(1.005); }
520
+ to { opacity: 1; transform: translateY(0) scale(1); }
143
521
  }
144
522
 
145
523
  @keyframes panelShowingMobile {
@@ -187,6 +565,207 @@
187
565
  }
188
566
  }
189
567
 
568
+ /* Color tokens — resolved at runtime via CSS variables */
569
+ @theme inline {
570
+ --color-selection: var(--blok-selection);
571
+ --color-selection-inline: var(--blok-selection-inline);
572
+ --color-selection-highlight: var(--blok-selection-highlight);
573
+ --color-bg-light: var(--blok-bg-light);
574
+ --color-gray-text: var(--blok-gray-text);
575
+ --color-dark: var(--blok-dark);
576
+ --color-active-icon: var(--blok-active-icon);
577
+ --color-link: var(--blok-link);
578
+ --color-line-gray: var(--blok-line-gray);
579
+ --color-tooltip-bg: var(--blok-tooltip-bg);
580
+ --color-tooltip-font: var(--blok-tooltip-font);
581
+ --color-icon-active-bg: var(--blok-icon-active-bg);
582
+ --color-icon-active-text: var(--blok-icon-active-text);
583
+ --color-text-primary: var(--blok-text-primary);
584
+ --color-text-secondary: var(--blok-text-secondary);
585
+ --color-popover-border: var(--blok-popover-border);
586
+ --color-popover-shadow: var(--blok-popover-shadow);
587
+ --color-popover-bg: var(--blok-popover-bg);
588
+ --color-popover-border-icon: var(--blok-popover-border-icon);
589
+ --color-popover-border-icon-disabled: var(--blok-popover-border-icon-disabled);
590
+ --color-item-focus-bg: var(--blok-item-focus-bg);
591
+ --color-item-focus-shadow: var(--blok-item-focus-shadow);
592
+ --color-item-hover-bg: var(--blok-item-hover-bg);
593
+ --color-icon-bg: var(--blok-icon-bg);
594
+ --color-item-confirm-bg: var(--blok-item-confirm-bg);
595
+ --color-item-confirm-hover-bg: var(--blok-item-confirm-hover-bg);
596
+ --color-item-destructive-text: var(--blok-item-destructive-text);
597
+ --color-item-destructive-hover-bg: var(--blok-item-destructive-hover-bg);
598
+ --color-notify-success-bg: var(--blok-notify-success-bg);
599
+ --color-notify-success-bar: var(--blok-notify-success-bar);
600
+ --color-notify-error-bg: var(--blok-notify-error-bg);
601
+ --color-notify-error-bar: var(--blok-notify-error-bar);
602
+ --color-notify-btn-cancel-bg: var(--blok-notify-btn-cancel-bg);
603
+ --color-notify-btn-cancel-text: var(--blok-notify-btn-cancel-text);
604
+ --color-notify-btn-confirm-bg: var(--blok-notify-btn-confirm-bg);
605
+
606
+ /* New tokens for hardcoded TS colors */
607
+ --color-mobile-border: var(--blok-mobile-border);
608
+ --color-search-input-bg: var(--blok-search-input-bg);
609
+ --color-search-input-border: var(--blok-search-input-border);
610
+ --color-search-input-focus-border: var(--blok-search-input-focus-border);
611
+ --color-link-input-border: var(--blok-link-input-border);
612
+ --color-popover-icon-bg: var(--blok-popover-icon-bg);
613
+ --color-popover-icon-active-bg: var(--blok-popover-icon-active-bg);
614
+ }
615
+
616
+ @layer utilities {
617
+ .max-w-blok-content {
618
+ max-width: var(--blok-content-width, var(--max-width-content));
619
+ }
620
+ }
621
+
622
+ /* ─── Light theme (default) ─────────────────────────── */
623
+ [data-blok-interface],
624
+ [data-blok-popover] {
625
+ --blok-selection: #e1f2ff;
626
+ --blok-selection-inline: #d4ecff;
627
+ --blok-selection-highlight: rgba(46, 170, 220, 0.2);
628
+ --blok-bg-light: #eff2f5;
629
+ --blok-gray-text: #707684;
630
+ --blok-dark: #1d202b;
631
+ --blok-active-icon: #2383e2;
632
+ --blok-link: #2383e2;
633
+ --blok-line-gray: #eff0f1;
634
+ --blok-tooltip-bg: #1d202b;
635
+ --blok-tooltip-font: #cdd1e0;
636
+ --blok-icon-active-bg: rgba(35, 131, 226, 0.14);
637
+ --blok-icon-active-text: #2383e2;
638
+ --blok-text-primary: black;
639
+ --blok-text-secondary: #707684;
640
+ --blok-popover-border: rgba(55, 53, 47, 0.09);
641
+ --blok-popover-shadow: rgba(13, 20, 33, 0.1);
642
+ --blok-popover-bg: #ffffff;
643
+ --blok-popover-border-icon: rgb(201 201 204 / 48%);
644
+ --blok-popover-border-icon-disabled: #eff0f1;
645
+ --blok-item-focus-bg: rgba(35, 131, 226, 0.14);
646
+ --blok-item-focus-shadow: rgba(35, 131, 226, 0.14);
647
+ --blok-item-hover-bg: rgba(55, 53, 47, 0.08);
648
+ --blok-icon-bg: rgba(0, 0, 0, 0.04);
649
+ --blok-item-confirm-bg: #e24a4a;
650
+ --blok-item-confirm-hover-bg: #ce4343;
651
+ --blok-item-destructive-text: #e24a4a;
652
+ --blok-item-destructive-hover-bg: rgba(226, 74, 74, 0.08);
653
+ --blok-notify-success-bg: #fafffe;
654
+ --blok-notify-success-bar: #41ffb1;
655
+ --blok-notify-error-bg: #fffbfb;
656
+ --blok-notify-error-bar: #fb5d5d;
657
+ --blok-notify-btn-cancel-bg: #f2f5f7;
658
+ --blok-notify-btn-cancel-text: #656b7c;
659
+ --blok-notify-btn-confirm-bg: #34c992;
660
+
661
+ /* Tokens extracted from TS files */
662
+ --blok-mobile-border: #e8e8eb;
663
+ --blok-search-input-bg: #f8f8f8;
664
+ --blok-search-input-border: rgba(226, 226, 229, 0.20);
665
+ --blok-search-input-focus-border: rgba(35, 131, 226, 0.5);
666
+ --blok-link-input-border: rgba(226, 226, 229, 0.2);
667
+
668
+ /* Popover icon container */
669
+ --blok-popover-icon-bg: rgba(55, 53, 47, 0.06);
670
+ --blok-popover-icon-active-bg: rgba(35, 131, 226, 0.1);
671
+ }
672
+
673
+ /* ─── Dark theme — system preference ────────────────── */
674
+ @media (prefers-color-scheme: dark) {
675
+ :root:not([data-blok-theme="light"]) [data-blok-interface],
676
+ :root:not([data-blok-theme="light"]) [data-blok-popover] {
677
+ --blok-selection: rgba(35, 131, 226, 0.2);
678
+ --blok-selection-inline: rgba(35, 131, 226, 0.3);
679
+ --blok-selection-highlight: rgba(35, 131, 226, 0.25);
680
+ --blok-bg-light: #191918;
681
+ --blok-gray-text: #a39e98;
682
+ --blok-dark: #191918;
683
+ --blok-active-icon: #529cca;
684
+ --blok-link: #529cca;
685
+ --blok-line-gray: #37352f;
686
+ --blok-tooltip-bg: #191918;
687
+ --blok-tooltip-font: #ffffff;
688
+ --blok-icon-active-bg: rgba(35, 131, 226, 0.2);
689
+ --blok-icon-active-text: #529cca;
690
+ --blok-text-primary: #f0efed;
691
+ --blok-text-secondary: #a39e98;
692
+ --blok-popover-border: rgba(255, 255, 255, 0.07);
693
+ --blok-popover-shadow: rgba(0, 0, 0, 0.6);
694
+ --blok-popover-bg: #252525;
695
+ --blok-popover-border-icon: #37352f;
696
+ --blok-popover-border-icon-disabled: #2f2d29;
697
+ --blok-item-focus-bg: rgba(35, 131, 226, 0.2);
698
+ --blok-item-focus-shadow: rgba(35, 131, 226, 0.2);
699
+ --blok-item-hover-bg: rgba(255, 255, 255, 0.055);
700
+ --blok-icon-bg: rgba(255, 255, 255, 0.07);
701
+ --blok-item-confirm-bg: #3d1f1f;
702
+ --blok-item-confirm-hover-bg: #4a2020;
703
+ --blok-item-destructive-text: #fb5d5d;
704
+ --blok-item-destructive-hover-bg: rgba(251, 93, 93, 0.1);
705
+ --blok-notify-success-bg: #1a2e22;
706
+ --blok-notify-success-bar: #41ffb1;
707
+ --blok-notify-error-bg: #2e1a1a;
708
+ --blok-notify-error-bar: #fb5d5d;
709
+ --blok-notify-btn-cancel-bg: #2f2d29;
710
+ --blok-notify-btn-cancel-text: #a39e98;
711
+ --blok-notify-btn-confirm-bg: #34c992;
712
+ --blok-mobile-border: rgba(255, 255, 255, 0.07);
713
+ --blok-search-input-bg: #2f2f2f;
714
+ --blok-search-input-border: rgba(255, 255, 255, 0.07);
715
+ --blok-search-input-focus-border: rgba(35, 131, 226, 0.5);
716
+ --blok-link-input-border: #37352f;
717
+ --blok-popover-icon-bg: rgba(255, 255, 255, 0.08);
718
+ --blok-popover-icon-active-bg: rgba(35, 131, 226, 0.15);
719
+ }
720
+ }
721
+
722
+ /* ─── Dark theme — explicit override ────────────────── */
723
+ [data-blok-theme="dark"] [data-blok-interface],
724
+ [data-blok-theme="dark"] [data-blok-popover] {
725
+ --blok-selection: rgba(35, 131, 226, 0.2);
726
+ --blok-selection-inline: rgba(35, 131, 226, 0.3);
727
+ --blok-selection-highlight: rgba(35, 131, 226, 0.25);
728
+ --blok-bg-light: #191918;
729
+ --blok-gray-text: #a39e98;
730
+ --blok-dark: #191918;
731
+ --blok-active-icon: #529cca;
732
+ --blok-link: #529cca;
733
+ --blok-line-gray: #37352f;
734
+ --blok-tooltip-bg: #191918;
735
+ --blok-tooltip-font: #ffffff;
736
+ --blok-icon-active-bg: rgba(35, 131, 226, 0.2);
737
+ --blok-icon-active-text: #529cca;
738
+ --blok-text-primary: #f0efed;
739
+ --blok-text-secondary: #a39e98;
740
+ --blok-popover-border: rgba(255, 255, 255, 0.07);
741
+ --blok-popover-shadow: rgba(0, 0, 0, 0.6);
742
+ --blok-popover-bg: #252525;
743
+ --blok-popover-border-icon: #37352f;
744
+ --blok-popover-border-icon-disabled: #2f2d29;
745
+ --blok-item-focus-bg: rgba(35, 131, 226, 0.2);
746
+ --blok-item-focus-shadow: rgba(35, 131, 226, 0.2);
747
+ --blok-item-hover-bg: rgba(255, 255, 255, 0.055);
748
+ --blok-icon-bg: rgba(255, 255, 255, 0.07);
749
+ --blok-item-confirm-bg: #3d1f1f;
750
+ --blok-item-confirm-hover-bg: #4a2020;
751
+ --blok-item-destructive-text: #fb5d5d;
752
+ --blok-item-destructive-hover-bg: rgba(251, 93, 93, 0.1);
753
+ --blok-notify-success-bg: #1a2e22;
754
+ --blok-notify-success-bar: #41ffb1;
755
+ --blok-notify-error-bg: #2e1a1a;
756
+ --blok-notify-error-bar: #fb5d5d;
757
+ --blok-notify-btn-cancel-bg: #2f2d29;
758
+ --blok-notify-btn-cancel-text: #a39e98;
759
+ --blok-notify-btn-confirm-bg: #34c992;
760
+ --blok-mobile-border: rgba(255, 255, 255, 0.07);
761
+ --blok-search-input-bg: #2f2f2f;
762
+ --blok-search-input-border: rgba(255, 255, 255, 0.07);
763
+ --blok-search-input-focus-border: rgba(35, 131, 226, 0.5);
764
+ --blok-link-input-border: #37352f;
765
+ --blok-popover-icon-bg: rgba(255, 255, 255, 0.08);
766
+ --blok-popover-icon-active-bg: rgba(35, 131, 226, 0.15);
767
+ }
768
+
190
769
  /*
191
770
  The default border color has changed to `currentcolor` in Tailwind CSS v4,
192
771
  so we've added these compatibility styles to make sure everything still
@@ -195,11 +774,11 @@
195
774
  If we ever want to remove these styles, we need to add an explicit border
196
775
  color utility to any element that depends on these defaults.
197
776
  */
198
- *,
199
- ::after,
200
- ::before,
201
- ::backdrop,
202
- ::file-selector-button {
777
+ :where([data-blok-interface], [data-blok-popover]) *,
778
+ :where([data-blok-interface], [data-blok-popover]) ::after,
779
+ :where([data-blok-interface], [data-blok-popover]) ::before,
780
+ :where([data-blok-interface], [data-blok-popover]) ::backdrop,
781
+ :where([data-blok-interface], [data-blok-popover]) ::file-selector-button {
203
782
  border-color: var(--color-gray-200, currentcolor);
204
783
  }
205
784
 
@@ -214,7 +793,7 @@
214
793
  }
215
794
  @utility blok-inline-tool-button {
216
795
  /* Inline Tools styles */
217
- @apply flex justify-center items-center border-0 rounded-sm h-full p-0 w-7 bg-transparent cursor-pointer leading-normal text-black;
796
+ @apply flex justify-center items-center border-0 rounded h-full p-0 w-7 bg-transparent cursor-pointer leading-normal text-black;
218
797
  }
219
798
  @utility blok-inline-tool-button--active {
220
799
  @apply bg-icon-active-bg text-icon-active-text;
@@ -289,6 +868,17 @@
289
868
  transform: translateX(-50%) translateY(-50%);
290
869
  }
291
870
 
871
+ /* Spring-loaded: flash selection highlight on toggle after it auto-expands */
872
+ @keyframes spring-loaded-flash {
873
+ 0% { background-color: var(--blok-selection); }
874
+ 100% { background-color: transparent; }
875
+ }
876
+
877
+ [data-blok-spring-loaded] [data-blok-element-content] {
878
+ animation: spring-loaded-flash 700ms ease-out forwards;
879
+ border-radius: 4px;
880
+ }
881
+
292
882
  /**
293
883
  * Multi-block drag visual feedback
294
884
  * Makes selected blocks semi-transparent during multi-block drag operation
@@ -363,10 +953,31 @@
363
953
  * transforms to look like a search input with a placeholder.
364
954
  */
365
955
  [data-blok-slash-search] {
366
- @apply bg-[#F8F8F8] rounded-lg transition-colors duration-150 max-w-[240px];
956
+ @apply bg-search-input-bg rounded-lg transition-colors duration-150 max-w-[240px];
367
957
  }
368
958
 
369
959
  [data-blok-slash-search]::after {
370
960
  content: attr(data-blok-slash-search);
371
961
  @apply text-gray-text font-medium text-base pointer-events-none;
372
962
  }
963
+
964
+ /**
965
+ * Custom scrollbar for popover items
966
+ */
967
+ [data-blok-popover-items] {
968
+ scrollbar-width: thin;
969
+ scrollbar-color: var(--blok-popover-border) transparent;
970
+ }
971
+ [data-blok-popover-items]::-webkit-scrollbar {
972
+ width: 4px;
973
+ }
974
+ [data-blok-popover-items]::-webkit-scrollbar-track {
975
+ background: transparent;
976
+ }
977
+ [data-blok-popover-items]::-webkit-scrollbar-thumb {
978
+ background: var(--blok-popover-border);
979
+ border-radius: 4px;
980
+ }
981
+ [data-blok-popover-items]::-webkit-scrollbar-thumb:hover {
982
+ background: var(--blok-gray-text);
983
+ }