@birdapi/velinstyle 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/README.de.md +135 -246
  2. package/README.md +134 -245
  3. package/cli/blueprints/onboarding.html +2 -2
  4. package/cli/cli-manifest.json +97 -0
  5. package/cli/docgen/extract-a11y.js +89 -0
  6. package/cli/docgen/extract-attributes.js +95 -0
  7. package/cli/docgen/extract-cli.js +50 -0
  8. package/cli/docgen/extract-components.js +175 -0
  9. package/cli/docgen/extract-meta.js +32 -0
  10. package/cli/docgen/extract-rules.js +76 -0
  11. package/cli/docgen/extract-tokens.js +79 -0
  12. package/cli/docgen/extract-utilities.js +75 -0
  13. package/cli/docgen/markdown.js +43 -0
  14. package/cli/docs-generate.js +196 -0
  15. package/cli/index.js +121 -5
  16. package/cli/meta.js +97 -0
  17. package/cli/perf-audit.js +174 -0
  18. package/cli/pii-scanner.js +134 -0
  19. package/cli/scanner-rules-data.js +62 -0
  20. package/cli/scanner.js +68 -1
  21. package/cli/search-index.js +163 -0
  22. package/cli/tokens-build.js +21 -1
  23. package/cli/tokens-validate.js +69 -0
  24. package/components/a11y-entry.js +42 -0
  25. package/components/a11y-utils.js +71 -0
  26. package/components/focus-manager.js +45 -8
  27. package/components/index.js +22 -12
  28. package/components/runtime/component-loaders.js +43 -0
  29. package/components/runtime/index.js +77 -0
  30. package/components/runtime-entry.js +10 -0
  31. package/components/sanitize.js +135 -54
  32. package/components/velin-accordion.js +12 -0
  33. package/components/velin-bottom-nav.js +19 -0
  34. package/components/velin-carousel.js +2 -2
  35. package/components/velin-code-block.js +142 -0
  36. package/components/velin-command.js +15 -0
  37. package/components/velin-copy.js +18 -5
  38. package/components/velin-counter.js +3 -0
  39. package/components/velin-dialog.js +9 -1
  40. package/components/velin-email.js +94 -0
  41. package/components/velin-icon.js +65 -22
  42. package/components/velin-lightbox.js +8 -3
  43. package/components/velin-live-dot.js +5 -0
  44. package/components/velin-modal.js +6 -3
  45. package/components/velin-popover.js +34 -2
  46. package/components/velin-reveal.js +7 -65
  47. package/components/velin-scroll-top.js +1 -1
  48. package/components/velin-search.js +267 -0
  49. package/components/velin-secure-field.js +99 -0
  50. package/components/velin-sparkline.js +27 -7
  51. package/components/{velin-stepper-wc.js → velin-stepper.js} +37 -8
  52. package/components/velin-theme-toggle.js +12 -5
  53. package/components/velin-toast.js +4 -0
  54. package/components/{velin-tooltip-wc.js → velin-tooltip.js} +22 -3
  55. package/core/a11y/component-contracts.json +221 -0
  56. package/core/attributes/index.js +6 -0
  57. package/core/attributes/registry.js +268 -0
  58. package/core/highlight/highlight.js +114 -0
  59. package/core/highlight/index.js +29 -0
  60. package/core/highlight/languages/_utils.js +52 -0
  61. package/core/highlight/languages/blade.js +16 -0
  62. package/core/highlight/languages/css.js +26 -0
  63. package/core/highlight/languages/html.js +17 -0
  64. package/core/highlight/languages/js.js +58 -0
  65. package/core/highlight/languages/json.js +14 -0
  66. package/core/highlight/languages/markdown.js +16 -0
  67. package/core/highlight/languages/php.js +39 -0
  68. package/core/highlight/languages/plain.js +7 -0
  69. package/core/highlight/languages/shell.js +33 -0
  70. package/core/highlight/languages/sql.js +20 -0
  71. package/core/highlight/languages/typescript.js +28 -0
  72. package/core/highlight/observe.js +53 -0
  73. package/core/highlight/registry.js +107 -0
  74. package/core/highlight/render.js +35 -0
  75. package/core/highlight/types.js +28 -0
  76. package/core/meta/build.js +293 -0
  77. package/core/meta/index.js +17 -0
  78. package/core/meta/schema.js +49 -0
  79. package/core/motion/effects.js +54 -0
  80. package/core/motion/index.js +76 -0
  81. package/core/motion/scheduler.js +72 -0
  82. package/core/motion/scroll.js +32 -0
  83. package/core/motion/stagger.js +24 -0
  84. package/core/search/docs-url.js +96 -0
  85. package/core/search/engine.js +139 -0
  86. package/core/search/highlight.js +48 -0
  87. package/core/search/index.js +126 -0
  88. package/core/search/providers.js +36 -0
  89. package/core/search/types.js +61 -0
  90. package/core/search/worker-client.js +56 -0
  91. package/core/search/worker.js +20 -0
  92. package/dist/chunks/a11y-utils-IRC7LOPF.js +16 -0
  93. package/dist/chunks/attributes-3BZLI7XF.js +364 -0
  94. package/dist/chunks/attributes-4N5JP4CG.js +364 -0
  95. package/dist/chunks/attributes-5Q2WXGRC.js +374 -0
  96. package/dist/chunks/attributes-AIR7SVLK.js +364 -0
  97. package/dist/chunks/attributes-BGRN5XZO.js +364 -0
  98. package/dist/chunks/attributes-BVSQAYLR.js +364 -0
  99. package/dist/chunks/attributes-CDYFUY7Y.js +364 -0
  100. package/dist/chunks/attributes-JMYJZBPE.js +364 -0
  101. package/dist/chunks/attributes-R5JY3X4O.js +374 -0
  102. package/dist/chunks/attributes-STYCS3O5.js +391 -0
  103. package/dist/chunks/attributes-TNSPQTHX.js +374 -0
  104. package/dist/chunks/attributes-TPANLMLF.js +391 -0
  105. package/dist/chunks/blade-LIQLVKZQ.js +19 -0
  106. package/dist/chunks/browser-MRKYZPEH.js +1149 -0
  107. package/dist/chunks/chunk-2354NEBP.js +109 -0
  108. package/dist/chunks/chunk-2VNA7G7S.js +109 -0
  109. package/dist/chunks/chunk-42VVPW6N.js +132 -0
  110. package/dist/chunks/chunk-7FFAMRFV.js +44 -0
  111. package/dist/chunks/chunk-7MCGPHVC.js +69 -0
  112. package/dist/chunks/chunk-AQLRJSGG.js +109 -0
  113. package/dist/chunks/chunk-EWPSDMQT.js +109 -0
  114. package/dist/chunks/chunk-F7OLHTGX.js +22 -0
  115. package/dist/chunks/chunk-J472ERN2.js +242 -0
  116. package/dist/chunks/chunk-LA7264K4.js +85 -0
  117. package/dist/chunks/chunk-M5CHQVP6.js +61 -0
  118. package/dist/chunks/chunk-MKZP2TBH.js +89 -0
  119. package/dist/chunks/chunk-QTJJ3DPO.js +109 -0
  120. package/dist/chunks/chunk-RDE3QE7Z.js +89 -0
  121. package/dist/chunks/chunk-RSMRR27R.js +109 -0
  122. package/dist/chunks/chunk-RZQVWFHW.js +109 -0
  123. package/dist/chunks/chunk-SRL6EWHP.js +109 -0
  124. package/dist/chunks/chunk-U4XHMZ7D.js +109 -0
  125. package/dist/chunks/chunk-V5YIUA6G.js +109 -0
  126. package/dist/chunks/chunk-XIET2VSZ.js +109 -0
  127. package/dist/chunks/chunk-XYLJ2GCB.js +205 -0
  128. package/dist/chunks/chunk-Z4JYQ2XX.js +51 -0
  129. package/dist/chunks/chunk-ZPSPKUYD.js +109 -0
  130. package/dist/chunks/css-MQ5YU77P.js +28 -0
  131. package/dist/chunks/highlight-GJHHV4KM.js +37 -0
  132. package/dist/chunks/highlight-XTHRKBA3.js +37 -0
  133. package/dist/chunks/html-ZODC4DLQ.js +20 -0
  134. package/dist/chunks/js-MNSNYTJU.js +7 -0
  135. package/dist/chunks/json-VEM2HFH3.js +17 -0
  136. package/dist/chunks/markdown-E7OPGS3S.js +19 -0
  137. package/dist/chunks/php-MLL7T3LT.js +41 -0
  138. package/dist/chunks/plain-LJJDC5TN.js +8 -0
  139. package/dist/chunks/runtime-entry.js +14 -0
  140. package/dist/chunks/shell-QTRK4U4E.js +35 -0
  141. package/dist/chunks/sql-PPWLHGJ2.js +23 -0
  142. package/dist/chunks/typescript-JT3CCYWL.js +30 -0
  143. package/dist/chunks/velin-accordion-FBIPAEXG.js +105 -0
  144. package/dist/chunks/velin-accordion-QAQO7BI7.js +117 -0
  145. package/dist/chunks/velin-announcer-PVTXXCWR.js +33 -0
  146. package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +86 -0
  147. package/dist/chunks/velin-bottom-nav-7GEMPIM6.js +86 -0
  148. package/dist/chunks/velin-bottom-nav-CTU6FFZV.js +101 -0
  149. package/dist/chunks/velin-bottom-nav-N3DFQR66.js +86 -0
  150. package/dist/chunks/velin-carousel-Y5VCOABZ.js +213 -0
  151. package/dist/chunks/velin-carousel-ZTBANFQQ.js +213 -0
  152. package/dist/chunks/velin-code-block-ASUBTAQV.js +119 -0
  153. package/dist/chunks/velin-code-block-CIAURDRJ.js +132 -0
  154. package/dist/chunks/velin-code-block-TSUKPY4C.js +123 -0
  155. package/dist/chunks/velin-code-block-Y6CM726Q.js +119 -0
  156. package/dist/chunks/velin-collapse-5XYBUIID.js +80 -0
  157. package/dist/chunks/velin-combobox-2KDTCQ7N.js +155 -0
  158. package/dist/chunks/velin-combobox-NXS4QB4R.js +155 -0
  159. package/dist/chunks/velin-combobox-UGA56HP3.js +155 -0
  160. package/dist/chunks/velin-command-CKDNO4BW.js +148 -0
  161. package/dist/chunks/velin-command-M7RNHUPR.js +136 -0
  162. package/dist/chunks/velin-command-ONKO2A3J.js +136 -0
  163. package/dist/chunks/velin-command-TMLSRGIU.js +136 -0
  164. package/dist/chunks/velin-copy-G2TZ5YBB.js +81 -0
  165. package/dist/chunks/velin-copy-NYDBOKXT.js +81 -0
  166. package/dist/chunks/velin-copy-T5KDTDXP.js +81 -0
  167. package/dist/chunks/velin-countdown-4ZVDGK4R.js +101 -0
  168. package/dist/chunks/velin-countdown-5XSTN3BH.js +101 -0
  169. package/dist/chunks/velin-countdown-7AIY66CU.js +101 -0
  170. package/dist/chunks/velin-counter-ISCTEAHI.js +118 -0
  171. package/dist/chunks/velin-counter-L5FYJF7A.js +121 -0
  172. package/dist/chunks/velin-dialog-D2GUHSCD.js +144 -0
  173. package/dist/chunks/velin-dialog-ELFOZIXZ.js +152 -0
  174. package/dist/chunks/velin-dialog-GTTZI564.js +147 -0
  175. package/dist/chunks/velin-dialog-IJLFDXAJ.js +144 -0
  176. package/dist/chunks/velin-dialog-TNS3WXMB.js +144 -0
  177. package/dist/chunks/velin-drawer-BE6TYN3H.js +130 -0
  178. package/dist/chunks/velin-drawer-DLL2GLT6.js +130 -0
  179. package/dist/chunks/velin-drawer-MJS6WCF7.js +130 -0
  180. package/dist/chunks/velin-dropdown-PLUIFA5M.js +172 -0
  181. package/dist/chunks/velin-email-N5B5ZYTE.js +90 -0
  182. package/dist/chunks/velin-email-NTM6DG3V.js +90 -0
  183. package/dist/chunks/velin-email-RBX6ZR4S.js +90 -0
  184. package/dist/chunks/velin-haptic-4QQTM3RK.js +50 -0
  185. package/dist/chunks/velin-icon-7M76DOPB.js +164 -0
  186. package/dist/chunks/velin-icon-KZO3IEHG.js +164 -0
  187. package/dist/chunks/velin-icon-WTFPG2DD.js +191 -0
  188. package/dist/chunks/velin-icon-ZTSKUOVN.js +193 -0
  189. package/dist/chunks/velin-lightbox-6E7CAATP.js +149 -0
  190. package/dist/chunks/velin-lightbox-I75U6JF4.js +140 -0
  191. package/dist/chunks/velin-lightbox-QOTB4PRL.js +140 -0
  192. package/dist/chunks/velin-lightbox-UCD6N7HF.js +140 -0
  193. package/dist/chunks/velin-live-dot-RJHX2DGY.js +74 -0
  194. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +67 -0
  195. package/dist/chunks/velin-menubar-I426AED2.js +86 -0
  196. package/dist/chunks/velin-menubar-J66JXRWW.js +86 -0
  197. package/dist/chunks/velin-menubar-SFEXJE56.js +86 -0
  198. package/dist/chunks/velin-modal-2HOBXE6F.js +176 -0
  199. package/dist/chunks/velin-modal-5HYNNNUI.js +176 -0
  200. package/dist/chunks/velin-modal-AEOTZ67O.js +177 -0
  201. package/dist/chunks/velin-modal-GLI2XZZB.js +176 -0
  202. package/dist/chunks/velin-persist-DFPL3QP4.js +110 -0
  203. package/dist/chunks/velin-popover-EXINRIGJ.js +145 -0
  204. package/dist/chunks/velin-popover-HQW6Q2Y6.js +172 -0
  205. package/dist/chunks/velin-popover-OXX7MRZ6.js +145 -0
  206. package/dist/chunks/velin-popover-T72HK3DF.js +151 -0
  207. package/dist/chunks/velin-popover-YKCCROJG.js +145 -0
  208. package/dist/chunks/velin-progress-ring-E4YRLZHH.js +66 -0
  209. package/dist/chunks/velin-rating-6CDBI6DG.js +91 -0
  210. package/dist/chunks/velin-rating-N4DI2XNL.js +91 -0
  211. package/dist/chunks/velin-rating-XRQJV4LO.js +91 -0
  212. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +58 -0
  213. package/dist/chunks/velin-scroll-top-OHYVVHHY.js +58 -0
  214. package/dist/chunks/velin-scrollspy-OKCT4FDV.js +50 -0
  215. package/dist/chunks/velin-search-2XRQFBCS.js +556 -0
  216. package/dist/chunks/velin-search-4YHJWYSS.js +556 -0
  217. package/dist/chunks/velin-search-7B4KJ6TX.js +557 -0
  218. package/dist/chunks/velin-search-LWHY23Q5.js +474 -0
  219. package/dist/chunks/velin-secure-field-6PV7RZDJ.js +95 -0
  220. package/dist/chunks/velin-secure-field-H7FSBUJW.js +95 -0
  221. package/dist/chunks/velin-secure-field-OFNAXCDP.js +95 -0
  222. package/dist/chunks/velin-segmented-control-EKL4E3BL.js +109 -0
  223. package/dist/chunks/velin-segmented-control-GYD5BIXQ.js +109 -0
  224. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +109 -0
  225. package/dist/chunks/velin-sheet-3OGI4HD7.js +119 -0
  226. package/dist/chunks/velin-sheet-OUK6572T.js +119 -0
  227. package/dist/chunks/velin-sheet-R2Y67X6H.js +119 -0
  228. package/dist/chunks/velin-sparkline-GVEANJVW.js +184 -0
  229. package/dist/chunks/velin-sparkline-KDA3GQAN.js +162 -0
  230. package/dist/chunks/velin-sparkline-XVTFC6GE.js +181 -0
  231. package/dist/chunks/velin-stepper-2ZIHLKGM.js +141 -0
  232. package/dist/chunks/velin-stepper-7ECRUYHD.js +148 -0
  233. package/dist/chunks/velin-stepper-FYEUEWE6.js +141 -0
  234. package/dist/chunks/velin-stepper-X54WGHDG.js +141 -0
  235. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +133 -0
  236. package/dist/chunks/velin-tabs-5UQ5ZVMV.js +138 -0
  237. package/dist/chunks/velin-theme-toggle-32J2CBNC.js +291 -0
  238. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +285 -0
  239. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +285 -0
  240. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +291 -0
  241. package/dist/chunks/velin-toast-OMMOA2DK.js +109 -0
  242. package/dist/chunks/velin-toast-RCZ4CSUC.js +109 -0
  243. package/dist/chunks/velin-toast-RSF2IHT3.js +113 -0
  244. package/dist/chunks/velin-toast-WEUBTJG6.js +109 -0
  245. package/dist/chunks/velin-tooltip-664IOHZA.js +112 -0
  246. package/dist/chunks/velin-tooltip-BDHGRTQB.js +112 -0
  247. package/dist/chunks/velin-tooltip-HVUOKNVX.js +112 -0
  248. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +103 -0
  249. package/dist/chunks/worker-client-R6DBYPFT.js +46 -0
  250. package/dist/llms.test.txt +40 -0
  251. package/dist/llms.txt +40 -0
  252. package/dist/search-index.json +1773 -0
  253. package/dist/search-index.test.json +1773 -0
  254. package/dist/themes/brutalist.min.css +1 -1
  255. package/dist/themes/midnight.min.css +1 -1
  256. package/dist/themes/pastel.min.css +1 -1
  257. package/dist/themes/retro.min.css +1 -1
  258. package/dist/themes/sunset.min.css +1 -1
  259. package/dist/velin-agent.json +684 -0
  260. package/dist/velin-agent.test.json +684 -0
  261. package/dist/velinstyle-components.iife.js +7715 -3515
  262. package/dist/velinstyle-components.js +7087 -2859
  263. package/dist/velinstyle-components.min.js +196 -109
  264. package/dist/velinstyle.css +604 -65
  265. package/dist/velinstyle.d.ts +54 -0
  266. package/dist/velinstyle.min.css +1 -1
  267. package/examples/search-index.schema.json +33 -0
  268. package/package.json +56 -10
  269. package/src/a11y/authentication.css +37 -0
  270. package/src/a11y/consistent-help.css +22 -0
  271. package/src/a11y/dragging-alternatives.css +30 -0
  272. package/src/a11y/focus-appearance.css +20 -0
  273. package/src/a11y/high-contrast-aaa.css +16 -26
  274. package/src/a11y/skip-link.css +3 -1
  275. package/src/a11y/sr-only.css +1 -1
  276. package/src/base/reset.css +0 -36
  277. package/src/base/wc-placeholder.css +102 -0
  278. package/src/components/attributes.css +42 -0
  279. package/src/components/highlight.css +182 -0
  280. package/src/components/input-group.css +1 -2
  281. package/src/components/nav.css +2 -3
  282. package/src/components/search.css +95 -0
  283. package/src/components/stepper.css +2 -4
  284. package/src/components/timeline.css +1 -2
  285. package/src/components/tooltip.css +2 -4
  286. package/src/layout/container.css +5 -5
  287. package/src/layout/grid.css +8 -8
  288. package/src/layout/patterns.css +5 -5
  289. package/src/themes/brutalist.css +2 -11
  290. package/src/themes/corporate.css +0 -9
  291. package/src/themes/earth.css +0 -9
  292. package/src/themes/forest.css +0 -9
  293. package/src/themes/midnight.css +1 -10
  294. package/src/themes/neon.css +0 -9
  295. package/src/themes/nordic.css +0 -9
  296. package/src/themes/ocean.css +0 -9
  297. package/src/themes/pastel.css +1 -10
  298. package/src/themes/retro.css +2 -11
  299. package/src/themes/sharp.css +0 -7
  300. package/src/themes/soft.css +0 -7
  301. package/src/themes/sunset.css +1 -10
  302. package/src/tokens/color.css +45 -46
  303. package/src/tokens/fonts.css +10 -0
  304. package/src/tokens/typography.css +4 -5
  305. package/src/utilities/animation.css +2 -2
  306. package/src/utilities/display.css +3 -3
  307. package/src/utilities/divide.css +2 -6
  308. package/src/utilities/responsive.css +4 -4
  309. package/src/utilities/safe-area.css +1 -1
  310. package/src/utilities/scroll-animation.css +34 -0
  311. package/src/utilities/spacing.css +17 -8
  312. package/src/utilities/text.css +4 -1
  313. package/src/velinstyle.css +9 -0
@@ -1,8 +1,9 @@
1
1
  @layer tokens {
2
2
  :root {
3
- --velin-color-primary: oklch(55% .15 250);
4
- --velin-color-primary-hover: oklch(48% .15 250);
5
- --velin-color-primary-active: oklch(42% .15 250);
3
+ --velin-color-primary: oklch(38% .18 250);
4
+ --velin-color-primary-text: oklch(38% .18 250);
5
+ --velin-color-primary-hover: oklch(32% .18 250);
6
+ --velin-color-primary-active: oklch(32% .18 250);
6
7
  --velin-color-primary-subtle: oklch(92% .04 250);
7
8
  --velin-color-on-primary: oklch(100% 0 0);
8
9
  --velin-color-secondary: oklch(55% .12 320);
@@ -13,18 +14,21 @@
13
14
  --velin-color-surface: oklch(98% .005 250);
14
15
  --velin-color-surface-dim: oklch(93% .005 250);
15
16
  --velin-color-surface-bright: oklch(100% 0 0);
16
- --velin-color-text: oklch(15% .01 250);
17
- --velin-color-text-muted: oklch(45% .01 250);
18
- --velin-color-text-subtle: oklch(60% .005 250);
19
- --velin-color-border: oklch(82% .01 250);
20
- --velin-color-border-strong: oklch(65% .01 250);
17
+ --velin-color-text: oklch(8% .01 250);
18
+ --velin-color-text-muted: oklch(28% .01 250);
19
+ --velin-color-text-subtle: oklch(38% .005 250);
20
+ --velin-color-border: oklch(35% .01 250);
21
+ --velin-color-border-strong: oklch(20% .01 250);
21
22
  --velin-color-success: oklch(55% .16 145);
23
+ --velin-color-success-text: oklch(38% .16 145);
22
24
  --velin-color-success-subtle: oklch(92% .04 145);
23
25
  --velin-color-on-success: oklch(100% 0 0);
24
26
  --velin-color-warning: oklch(75% .15 85);
27
+ --velin-color-warning-text: oklch(42% .14 85);
25
28
  --velin-color-warning-subtle: oklch(95% .04 85);
26
29
  --velin-color-on-warning: oklch(20% .02 85);
27
30
  --velin-color-danger: oklch(55% .2 25);
31
+ --velin-color-danger-text: oklch(40% .2 25);
28
32
  --velin-color-danger-hover: oklch(48% .2 25);
29
33
  --velin-color-danger-subtle: oklch(92% .04 25);
30
34
  --velin-color-on-danger: oklch(100% 0 0);
@@ -32,16 +36,16 @@
32
36
  --velin-color-info-subtle: oklch(92% .04 240);
33
37
  --velin-color-on-info: oklch(100% 0 0);
34
38
  --velin-color-overlay: oklch(0% 0 0 / .4);
35
- --velin-color-focus: oklch(60% .2 250);
39
+ --velin-color-focus: oklch(35% .22 250);
36
40
  }
37
41
 
38
42
  @media (prefers-color-scheme: dark) {
39
43
  :root:not([data-velin-theme="light"]) {
40
- --velin-color-primary: oklch(72% .12 250);
41
- --velin-color-primary-hover: oklch(78% .12 250);
42
- --velin-color-primary-active: oklch(65% .12 250);
44
+ --velin-color-primary: oklch(48% .14 250);
45
+ --velin-color-primary-hover: oklch(55% .14 250);
46
+ --velin-color-primary-active: oklch(42% .14 250);
43
47
  --velin-color-primary-subtle: oklch(25% .06 250);
44
- --velin-color-on-primary: oklch(10% .01 250);
48
+ --velin-color-on-primary: oklch(98% 0 0);
45
49
  --velin-color-secondary: oklch(72% .1 320);
46
50
  --velin-color-secondary-hover: oklch(78% .1 320);
47
51
  --velin-color-secondary-active: oklch(65% .1 320);
@@ -51,20 +55,24 @@
51
55
  --velin-color-surface-dim: oklch(10% .01 250);
52
56
  --velin-color-surface-bright: oklch(22% .01 250);
53
57
  --velin-color-text: oklch(92% .005 250);
54
- --velin-color-text-muted: oklch(70% .005 250);
55
- --velin-color-text-subtle: oklch(55% .005 250);
58
+ --velin-color-text-muted: oklch(85% .005 250);
59
+ --velin-color-text-subtle: oklch(72% .005 250);
56
60
  --velin-color-border: oklch(30% .01 250);
57
61
  --velin-color-border-strong: oklch(45% .01 250);
62
+ --velin-color-primary-text: oklch(82% .12 250);
58
63
  --velin-color-success: oklch(72% .14 145);
64
+ --velin-color-success-text: oklch(82% .14 145);
59
65
  --velin-color-success-subtle: oklch(25% .06 145);
60
66
  --velin-color-on-success: oklch(10% .01 145);
61
67
  --velin-color-warning: oklch(80% .12 85);
68
+ --velin-color-warning-text: oklch(80% .12 85);
62
69
  --velin-color-warning-subtle: oklch(25% .06 85);
63
70
  --velin-color-on-warning: oklch(10% .02 85);
64
- --velin-color-danger: oklch(70% .16 25);
65
- --velin-color-danger-hover: oklch(76% .16 25);
71
+ --velin-color-danger: oklch(52% .16 25);
72
+ --velin-color-danger-text: oklch(82% .16 25);
73
+ --velin-color-danger-hover: oklch(58% .16 25);
66
74
  --velin-color-danger-subtle: oklch(25% .06 25);
67
- --velin-color-on-danger: oklch(10% .01 25);
75
+ --velin-color-on-danger: oklch(98% 0 0);
68
76
  --velin-color-info: oklch(72% .1 240);
69
77
  --velin-color-info-subtle: oklch(25% .04 240);
70
78
  --velin-color-on-info: oklch(10% .01 240);
@@ -74,11 +82,12 @@
74
82
  }
75
83
 
76
84
  [data-velin-theme="dark"] {
77
- --velin-color-primary: oklch(72% .12 250);
78
- --velin-color-primary-hover: oklch(78% .12 250);
79
- --velin-color-primary-active: oklch(65% .12 250);
85
+ --velin-color-primary: oklch(48% .12 250);
86
+ --velin-color-primary-text: oklch(82% .12 250);
87
+ --velin-color-primary-hover: oklch(55% .12 250);
88
+ --velin-color-primary-active: oklch(42% .12 250);
80
89
  --velin-color-primary-subtle: oklch(25% .06 250);
81
- --velin-color-on-primary: oklch(10% .01 250);
90
+ --velin-color-on-primary: oklch(98% 0 0);
82
91
  --velin-color-secondary: oklch(72% .1 320);
83
92
  --velin-color-secondary-hover: oklch(78% .1 320);
84
93
  --velin-color-secondary-active: oklch(65% .1 320);
@@ -88,25 +97,28 @@
88
97
  --velin-color-surface-dim: oklch(10% .01 250);
89
98
  --velin-color-surface-bright: oklch(22% .01 250);
90
99
  --velin-color-text: oklch(92% .005 250);
91
- --velin-color-text-muted: oklch(70% .005 250);
92
- --velin-color-text-subtle: oklch(55% .005 250);
100
+ --velin-color-text-muted: oklch(88% .005 250);
101
+ --velin-color-text-subtle: oklch(78% .005 250);
93
102
  --velin-color-border: oklch(30% .01 250);
94
103
  --velin-color-border-strong: oklch(45% .01 250);
95
104
  --velin-color-success: oklch(72% .14 145);
105
+ --velin-color-success-text: oklch(82% .14 145);
96
106
  --velin-color-success-subtle: oklch(25% .06 145);
97
107
  --velin-color-on-success: oklch(10% .01 145);
98
108
  --velin-color-warning: oklch(80% .12 85);
109
+ --velin-color-warning-text: oklch(80% .12 85);
99
110
  --velin-color-warning-subtle: oklch(25% .06 85);
100
111
  --velin-color-on-warning: oklch(10% .02 85);
101
- --velin-color-danger: oklch(70% .16 25);
112
+ --velin-color-danger: oklch(52% .16 25);
113
+ --velin-color-danger-text: oklch(82% .16 25);
102
114
  --velin-color-danger-hover: oklch(76% .16 25);
103
115
  --velin-color-danger-subtle: oklch(25% .06 25);
104
- --velin-color-on-danger: oklch(10% .01 25);
116
+ --velin-color-on-danger: oklch(98% 0 0);
105
117
  --velin-color-info: oklch(72% .1 240);
106
118
  --velin-color-info-subtle: oklch(25% .04 240);
107
- --velin-color-on-info: oklch(10% .01 240);
119
+ --velin-color-on-info: oklch(98% 0 0);
108
120
  --velin-color-overlay: oklch(0% 0 0 / .6);
109
- --velin-color-focus: oklch(72% .18 250);
121
+ --velin-color-focus: oklch(82% .18 250);
110
122
  }
111
123
 
112
124
  :root {
@@ -128,11 +140,17 @@
128
140
  --velin-space-20: 5rem;
129
141
  --velin-space-24: 6rem;
130
142
  --velin-space-32: 8rem;
131
- --velin-font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
143
+ --velin-font-display: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
144
+ --velin-font-text: var(--velin-font-display);
145
+ --velin-font-code: "JetBrains Mono", "Cascadia Code", "Fira Code", Consolas, monospace;
146
+ --velin-font-features: "cv02", "ss01";
147
+ --velin-font-optical: auto;
148
+ --velin-font-size-adjust-fallback: .52;
149
+ --velin-font-sans: var(--velin-font-text, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
132
150
  --velin-font-serif: Georgia, Cambria, "Times New Roman", Times, serif;
133
- --velin-font-mono: "Cascadia Code", "Fira Code", Consolas, "Courier New", monospace;
134
- --velin-font-heading: var(--velin-font-sans);
135
- --velin-font-body: var(--velin-font-sans);
151
+ --velin-font-mono: var(--velin-font-code, "Cascadia Code", "Fira Code", Consolas, "Courier New", monospace);
152
+ --velin-font-heading: var(--velin-font-display, var(--velin-font-sans));
153
+ --velin-font-body: var(--velin-font-text, var(--velin-font-sans));
136
154
  --velin-fluid-min-vw: 20;
137
155
  --velin-fluid-max-vw: 90;
138
156
  --velin-text-xs: clamp(.625rem, .6rem + .1vw, .75rem);
@@ -340,14 +358,75 @@
340
358
  [hidden] {
341
359
  display: none !important;
342
360
  }
361
+ }
343
362
 
344
- velin-modal:not(:defined), velin-drawer:not(:defined), velin-tabs:not(:defined), velin-accordion:not(:defined), velin-dropdown:not(:defined), velin-toast:not(:defined), velin-dialog:not(:defined), velin-popover:not(:defined), velin-tooltip-wc:not(:defined), velin-lightbox:not(:defined), velin-carousel:not(:defined), velin-collapse:not(:defined), velin-stepper-wc:not(:defined), velin-countdown:not(:defined), velin-progress-ring:not(:defined), velin-persist:not(:defined), velin-copy:not(:defined), velin-scroll-top:not(:defined), velin-scrollspy:not(:defined), velin-theme-toggle:not(:defined), velin-icon:not(:defined), velin-combobox:not(:defined), velin-bottom-nav:not(:defined), velin-sheet:not(:defined), velin-segmented-control:not(:defined), velin-rating:not(:defined), velin-menubar:not(:defined), velin-command:not(:defined), velin-announcer:not(:defined), velin-sparkline:not(:defined), velin-counter:not(:defined), velin-live-dot:not(:defined) {
363
+ @layer base {
364
+ velin-modal:not(:defined), velin-drawer:not(:defined), velin-dialog:not(:defined), velin-sheet:not(:defined), velin-lightbox:not(:defined), velin-command:not(:defined) {
345
365
  opacity: 0;
346
366
  visibility: hidden;
367
+ contain: layout style;
368
+ block-size: 0;
369
+ display: block;
370
+ overflow: hidden;
371
+ }
372
+
373
+ velin-tabs:not(:defined), velin-accordion:not(:defined), velin-carousel:not(:defined), velin-collapse:not(:defined), velin-stepper:not(:defined), velin-stepper-wc:not(:defined), velin-bottom-nav:not(:defined), velin-menubar:not(:defined), velin-segmented-control:not(:defined), velin-code-block:not(:defined), velin-secure-field:not(:defined), velin-search:not(:defined) {
374
+ opacity: 0;
375
+ visibility: hidden;
376
+ contain: layout style;
377
+ min-block-size: 2.75rem;
378
+ display: block;
379
+ }
380
+
381
+ velin-dropdown:not(:defined), velin-combobox:not(:defined), velin-popover:not(:defined), velin-tooltip:not(:defined), velin-tooltip-wc:not(:defined), velin-rating:not(:defined), velin-copy:not(:defined), velin-email:not(:defined), velin-countdown:not(:defined), velin-counter:not(:defined), velin-live-dot:not(:defined), velin-progress-ring:not(:defined), velin-icon:not(:defined), velin-theme-toggle:not(:defined) {
382
+ vertical-align: middle;
383
+ opacity: 0;
384
+ visibility: hidden;
385
+ contain: layout style;
386
+ min-block-size: 2.75rem;
387
+ min-inline-size: 2.75rem;
388
+ display: inline-block;
389
+ }
390
+
391
+ velin-sparkline:not(:defined) {
392
+ vertical-align: middle;
393
+ opacity: 0;
394
+ visibility: hidden;
395
+ contain: layout style;
396
+ min-block-size: 1.5rem;
397
+ min-inline-size: 4rem;
398
+ display: inline-block;
399
+ }
400
+
401
+ velin-scroll-top:not(:defined) {
402
+ opacity: 0;
403
+ visibility: hidden;
404
+ pointer-events: none;
405
+ contain: layout style;
406
+ block-size: 2.75rem;
407
+ inline-size: 2.75rem;
408
+ position: fixed;
409
+ inset-block-end: var(--velin-space-4, 1rem);
410
+ inset-inline-end: var(--velin-space-4, 1rem);
411
+ }
412
+
413
+ velin-toast:not(:defined), velin-announcer:not(:defined) {
414
+ opacity: 0;
415
+ visibility: hidden;
416
+ pointer-events: none;
417
+ contain: strict;
418
+ block-size: 1px;
419
+ inline-size: 1px;
420
+ position: fixed;
421
+ overflow: hidden;
422
+ }
423
+
424
+ velin-persist:not(:defined), velin-scrollspy:not(:defined) {
425
+ opacity: 0;
426
+ visibility: hidden;
427
+ display: contents;
347
428
  }
348
- }
349
429
 
350
- @layer base {
351
430
  :focus-visible {
352
431
  outline: 3px solid var(--velin-color-focus);
353
432
  outline-offset: 2px;
@@ -538,7 +617,7 @@
538
617
  overflow: hidden;
539
618
  }
540
619
 
541
- .velin-sr-only--focusable:focus, .velin-sr-only--focusable:active {
620
+ .velin-sr-only--focusable:focus-visible, .velin-sr-only--focusable:active {
542
621
  width: auto;
543
622
  height: auto;
544
623
  padding: inherit;
@@ -577,7 +656,9 @@
577
656
  inset-inline-start: var(--velin-space-4);
578
657
  }
579
658
 
580
- .velin-skip-link:focus {
659
+ .velin-skip-link:focus-visible {
660
+ outline: 3px solid var(--velin-color-focus);
661
+ outline-offset: 2px;
581
662
  inset-block-start: var(--velin-space-4);
582
663
  }
583
664
 
@@ -843,32 +924,111 @@
843
924
  min-inline-size: 2.75rem;
844
925
  }
845
926
 
846
- :root[data-velin-contrast="aaa"] {
847
- --velin-color-text: oklch(8% .01 250);
848
- --velin-color-text-muted: oklch(28% .01 250);
849
- --velin-color-text-subtle: oklch(38% .01 250);
850
- --velin-color-border: oklch(35% .01 250);
851
- --velin-color-border-strong: oklch(20% .01 250);
852
- --velin-color-primary: oklch(38% .18 250);
853
- --velin-color-primary-hover: oklch(32% .18 250);
854
- --velin-color-on-primary: oklch(100% 0 0);
855
- --velin-color-focus: oklch(35% .22 250);
927
+ :root[data-velin-contrast="aa"] {
928
+ --velin-color-text: oklch(15% .01 250);
929
+ --velin-color-text-muted: oklch(45% .01 250);
930
+ --velin-color-text-subtle: oklch(60% .005 250);
931
+ --velin-color-primary: oklch(55% .15 250);
932
+ --velin-color-primary-text: oklch(42% .15 250);
933
+ --velin-color-border: oklch(82% .01 250);
934
+ --velin-color-focus: oklch(60% .2 250);
856
935
  }
857
936
 
858
- :root[data-velin-contrast="aaa"][data-velin-theme="dark"], :root[data-velin-contrast="aaa"]:not([data-velin-theme="light"]) {
859
- @media (prefers-color-scheme: dark) {
860
- --velin-color-text: oklch(98% .005 250);
861
- --velin-color-text-muted: oklch(82% .005 250);
862
- --velin-color-text-subtle: oklch(72% .005 250);
863
- --velin-color-border: oklch(55% .01 250);
864
- --velin-color-border-strong: oklch(70% .01 250);
865
- --velin-color-primary: oklch(78% .14 250);
866
- --velin-color-on-primary: oklch(8% .01 250);
867
- }
937
+ :root[data-velin-contrast="aaa"] .velin-btn, :root:not([data-velin-contrast="aa"]) .velin-btn, :root[data-velin-contrast="aaa"] .velin-input, :root[data-velin-contrast="aaa"] .velin-select, :root[data-velin-contrast="aaa"] .velin-textarea, :root:not([data-velin-contrast="aa"]) .velin-input, :root:not([data-velin-contrast="aa"]) .velin-select, :root:not([data-velin-contrast="aa"]) .velin-textarea {
938
+ border-width: 2px;
868
939
  }
869
940
 
870
- :root[data-velin-contrast="aaa"] .velin-btn, :root[data-velin-contrast="aaa"] .velin-input, :root[data-velin-contrast="aaa"] .velin-select, :root[data-velin-contrast="aaa"] .velin-textarea {
871
- border-width: 2px;
941
+ .velin-auth-form {
942
+ gap: var(--velin-space-4);
943
+ flex-direction: column;
944
+ max-width: 28rem;
945
+ display: flex;
946
+ }
947
+
948
+ .velin-auth-form .velin-field-error {
949
+ color: var(--velin-color-danger, #b91c1c);
950
+ font-size: var(--velin-text-sm);
951
+ align-items: flex-start;
952
+ gap: var(--velin-space-2);
953
+ display: flex;
954
+ }
955
+
956
+ .velin-auth-form .velin-field-error:before {
957
+ content: "";
958
+ background: currentColor;
959
+ flex-shrink: 0;
960
+ width: 1.25rem;
961
+ height: 1.25rem;
962
+ margin-block-start: .1em;
963
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='8' x2='12' y2='12'/%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'/%3E%3C/svg%3E") center / contain no-repeat;
964
+ }
965
+
966
+ .velin-input[aria-invalid="true"], .velin-auth-form .velin-input:invalid:not(:placeholder-shown) {
967
+ border-color: var(--velin-color-danger, #b91c1c);
968
+ outline-color: var(--velin-color-danger, #b91c1c);
969
+ }
970
+
971
+ .velin-auth-form .velin-input[aria-invalid="true"] {
972
+ background-image: linear-gradient(#0000, #0000);
973
+ }
974
+
975
+ .velin-field-help {
976
+ font-size: var(--velin-text-sm);
977
+ color: var(--velin-color-text-muted);
978
+ line-height: var(--velin-leading-snug);
979
+ margin-block-start: var(--velin-space-1);
980
+ }
981
+
982
+ .velin-form-legend {
983
+ font-size: var(--velin-text-lg);
984
+ font-weight: var(--velin-weight-semibold);
985
+ margin-block-end: var(--velin-space-2);
986
+ padding: 0;
987
+ }
988
+
989
+ .velin-form-section-help {
990
+ font-size: var(--velin-text-sm);
991
+ color: var(--velin-color-text-muted);
992
+ margin-block-end: var(--velin-space-4);
993
+ }
994
+
995
+ .velin-drag-handle {
996
+ cursor: grab;
997
+ touch-action: none;
998
+ justify-content: center;
999
+ align-items: center;
1000
+ min-width: 2.75rem;
1001
+ min-height: 2.75rem;
1002
+ display: inline-flex;
1003
+ }
1004
+
1005
+ .velin-drag-handle:active {
1006
+ cursor: grabbing;
1007
+ }
1008
+
1009
+ .velin-drag-keyboard-hint {
1010
+ font-size: var(--velin-text-xs);
1011
+ color: var(--velin-color-text-muted);
1012
+ margin-block-start: var(--velin-space-1);
1013
+ }
1014
+
1015
+ .velin-drag-keyboard-hint kbd {
1016
+ font-family: var(--velin-font-mono);
1017
+ border-radius: var(--velin-radius-sm);
1018
+ border: 1px solid var(--velin-color-border);
1019
+ background: var(--velin-color-surface-dim);
1020
+ padding: .1em .35em;
1021
+ }
1022
+
1023
+ :root {
1024
+ --velin-focus-ring-width: 3px;
1025
+ --velin-focus-ring-offset: 2px;
1026
+ --velin-focus-ring-color: var(--velin-color-focus, oklch(55% .2 264));
1027
+ }
1028
+
1029
+ :where(a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:not([tabindex="-1"]):focus-visible) {
1030
+ outline: var(--velin-focus-ring-width) solid var(--velin-focus-ring-color);
1031
+ outline-offset: var(--velin-focus-ring-offset);
872
1032
  }
873
1033
  }
874
1034
 
@@ -4403,6 +4563,312 @@
4403
4563
  transition: none;
4404
4564
  }
4405
4565
  }
4566
+
4567
+ .velin-search {
4568
+ inline-size: 100%;
4569
+ position: relative;
4570
+ }
4571
+
4572
+ .velin-search__input {
4573
+ inline-size: 100%;
4574
+ padding: var(--velin-space-2) var(--velin-space-3);
4575
+ border: 1px solid var(--velin-color-border);
4576
+ border-radius: var(--velin-radius-md);
4577
+ background: var(--velin-color-surface);
4578
+ color: var(--velin-color-text);
4579
+ }
4580
+
4581
+ .velin-search__results {
4582
+ z-index: var(--velin-z-dropdown, 100);
4583
+ border: 1px solid var(--velin-color-border);
4584
+ border-radius: var(--velin-radius-md);
4585
+ background: var(--velin-color-surface);
4586
+ max-block-size: 20rem;
4587
+ box-shadow: var(--velin-shadow-lg);
4588
+ opacity: 0;
4589
+ transition: opacity var(--velin-duration-fast, .15s) ease,
4590
+ transform var(--velin-duration-fast, .15s) ease;
4591
+ position: absolute;
4592
+ inset-block-start: calc(100% + var(--velin-space-1));
4593
+ inset-inline: 0;
4594
+ overflow: auto;
4595
+ transform: translateY(-.25rem);
4596
+ }
4597
+
4598
+ .velin-search__results--open {
4599
+ opacity: 1;
4600
+ transform: translateY(0);
4601
+ }
4602
+
4603
+ .velin-search__group-label {
4604
+ padding: var(--velin-space-2) var(--velin-space-3);
4605
+ font-size: var(--velin-text-xs, .75rem);
4606
+ text-transform: uppercase;
4607
+ letter-spacing: .04em;
4608
+ color: var(--velin-color-text-muted);
4609
+ border-block-end: 1px solid var(--velin-color-border);
4610
+ font-weight: 600;
4611
+ }
4612
+
4613
+ .velin-search__item {
4614
+ gap: var(--velin-space-1);
4615
+ padding: var(--velin-space-2) var(--velin-space-3);
4616
+ color: inherit;
4617
+ flex-direction: column;
4618
+ text-decoration: none;
4619
+ display: flex;
4620
+ }
4621
+
4622
+ .velin-search__item:hover, .velin-search__item--active {
4623
+ background: var(--velin-color-surface-hover, color-mix(in oklch, var(--velin-color-primary) 12%, transparent));
4624
+ }
4625
+
4626
+ .velin-search__title {
4627
+ font-weight: 600;
4628
+ }
4629
+
4630
+ .velin-search__excerpt {
4631
+ font-size: var(--velin-text-sm, .875rem);
4632
+ color: var(--velin-color-text-muted);
4633
+ }
4634
+
4635
+ .velin-search-hit {
4636
+ background: color-mix(in oklch, var(--velin-color-primary) 35%, transparent);
4637
+ border-radius: 2px;
4638
+ padding-inline: 1px;
4639
+ }
4640
+
4641
+ @media (prefers-reduced-motion: reduce) {
4642
+ .velin-search__results {
4643
+ transition: none;
4644
+ }
4645
+ }
4646
+
4647
+ @media (width <= 640px) {
4648
+ .velin-search {
4649
+ min-inline-size: 0;
4650
+ }
4651
+
4652
+ .velin-search__results {
4653
+ box-sizing: border-box;
4654
+ max-inline-size: min(100vw, 100%);
4655
+ inset-inline: 0;
4656
+ }
4657
+ }
4658
+
4659
+ .velin-quote {
4660
+ margin-block: var(--velin-space-4);
4661
+ border-inline-start: 4px solid var(--velin-color-primary);
4662
+ color: var(--velin-color-text-muted);
4663
+ padding-inline-start: var(--velin-space-4);
4664
+ font-style: italic;
4665
+ }
4666
+
4667
+ .velin-code-block {
4668
+ margin-block: var(--velin-space-4);
4669
+ border-radius: var(--velin-radius-md);
4670
+ background: var(--velin-color-surface-elevated, var(--velin-color-surface));
4671
+ border: 1px solid var(--velin-color-border);
4672
+ position: relative;
4673
+ overflow: hidden;
4674
+ }
4675
+
4676
+ .velin-code-block pre {
4677
+ padding: var(--velin-space-4);
4678
+ font-family: var(--velin-font-mono, ui-monospace, monospace);
4679
+ font-size: var(--velin-text-sm, .875rem);
4680
+ margin: 0;
4681
+ overflow-x: auto;
4682
+ }
4683
+
4684
+ .velin-code-block__copy {
4685
+ position: absolute;
4686
+ inset-block-start: var(--velin-space-2);
4687
+ inset-inline-end: var(--velin-space-2);
4688
+ }
4689
+
4690
+ .velin-highlight {
4691
+ background: color-mix(in oklch, var(--velin-color-warning, #f59e0b) 35%, transparent);
4692
+ border-radius: 2px;
4693
+ padding-inline: 2px;
4694
+ }
4695
+
4696
+ [velin-anchor] {
4697
+ scroll-margin-block: var(--velin-space-16, 4rem);
4698
+ }
4699
+
4700
+ pre.velin-syntax-pending code, code.velin-syntax-pending {
4701
+ opacity: 0;
4702
+ }
4703
+
4704
+ pre.velin-syntax-ready code, code.velin-syntax-ready {
4705
+ opacity: 1;
4706
+ transition: opacity var(--velin-duration-normal, .25s) var(--velin-ease-out, ease-out);
4707
+ }
4708
+
4709
+ @media (prefers-reduced-motion: reduce) {
4710
+ pre.velin-syntax-ready code, code.velin-syntax-ready {
4711
+ transition: none;
4712
+ }
4713
+ }
4714
+
4715
+ .velin-token {
4716
+ font-family: inherit;
4717
+ }
4718
+
4719
+ .velin-token--keyword {
4720
+ color: oklch(45% .2 265);
4721
+ }
4722
+
4723
+ .velin-token--string {
4724
+ color: oklch(42% .14 145);
4725
+ }
4726
+
4727
+ .velin-token--comment {
4728
+ color: oklch(55% .02 265);
4729
+ font-style: italic;
4730
+ }
4731
+
4732
+ .velin-token--number {
4733
+ color: oklch(48% .16 55);
4734
+ }
4735
+
4736
+ .velin-token--operator {
4737
+ color: oklch(50% .18 25);
4738
+ }
4739
+
4740
+ .velin-token--punctuation {
4741
+ color: oklch(52% .02 265);
4742
+ }
4743
+
4744
+ .velin-token--identifier {
4745
+ color: oklch(38% .04 265);
4746
+ }
4747
+
4748
+ .velin-token--tag {
4749
+ color: oklch(48% .18 25);
4750
+ }
4751
+
4752
+ .velin-token--attr-name {
4753
+ color: oklch(45% .16 265);
4754
+ }
4755
+
4756
+ .velin-token--attr-value {
4757
+ color: oklch(42% .14 145);
4758
+ }
4759
+
4760
+ .velin-token--builtin {
4761
+ color: oklch(46% .17 310);
4762
+ }
4763
+
4764
+ .velin-token--regex {
4765
+ color: oklch(50% .16 55);
4766
+ }
4767
+
4768
+ @supports (color: color(display-p3 1 1 1)) {
4769
+ .velin-token--keyword {
4770
+ color: color(display-p3 .2 .35 .85);
4771
+ }
4772
+
4773
+ .velin-token--string {
4774
+ color: color(display-p3 .15 .55 .35);
4775
+ }
4776
+ }
4777
+
4778
+ @media (prefers-color-scheme: dark) {
4779
+ :root:not([data-velin-theme="light"]) .velin-token--keyword {
4780
+ color: oklch(78% .14 285);
4781
+ }
4782
+ }
4783
+
4784
+ [data-velin-theme="dark"] .velin-token--keyword {
4785
+ color: oklch(78% .14 285);
4786
+ }
4787
+
4788
+ [data-velin-theme="dark"] .velin-token--string {
4789
+ color: oklch(78% .12 145);
4790
+ }
4791
+
4792
+ [data-velin-theme="dark"] .velin-token--comment {
4793
+ color: oklch(62% .03 285);
4794
+ }
4795
+
4796
+ [data-velin-theme="dark"] .velin-token--number {
4797
+ color: oklch(80% .12 75);
4798
+ }
4799
+
4800
+ [data-velin-theme="dark"] .velin-token--operator, [data-velin-theme="dark"] .velin-token--tag {
4801
+ color: oklch(78% .14 25);
4802
+ }
4803
+
4804
+ [data-velin-theme="dark"] .velin-token--attr-name {
4805
+ color: oklch(76% .12 285);
4806
+ }
4807
+
4808
+ [data-velin-theme="dark"] .velin-token--identifier {
4809
+ color: oklch(88% .02 285);
4810
+ }
4811
+
4812
+ .velin-code-block__line--highlight {
4813
+ background: color-mix(in oklch, var(--velin-color-primary, oklch(55% .2 265)) 18%, transparent);
4814
+ margin-inline: calc(-1 * var(--velin-space-4, 1rem));
4815
+ padding-inline: var(--velin-space-4, 1rem);
4816
+ display: block;
4817
+ }
4818
+
4819
+ velin-code-block {
4820
+ display: block;
4821
+ position: relative;
4822
+ }
4823
+
4824
+ velin-code-block[data-collapsed] pre {
4825
+ max-height: 12rem;
4826
+ overflow: hidden;
4827
+ }
4828
+
4829
+ velin-code-block .velin-code-block__gutter {
4830
+ grid-template-columns: auto 1fr;
4831
+ gap: 0;
4832
+ display: grid;
4833
+ }
4834
+
4835
+ velin-code-block .velin-code-block__line-numbers {
4836
+ padding: var(--velin-space-4);
4837
+ text-align: end;
4838
+ user-select: none;
4839
+ color: var(--velin-color-text-muted);
4840
+ font-family: var(--velin-font-mono, ui-monospace, monospace);
4841
+ font-size: var(--velin-text-sm, .875rem);
4842
+ border-inline-end: 1px solid var(--velin-color-border);
4843
+ flex-direction: column;
4844
+ flex-shrink: 0;
4845
+ align-items: flex-end;
4846
+ padding-inline-end: var(--velin-space-2);
4847
+ line-height: 1.55;
4848
+ display: flex;
4849
+ }
4850
+
4851
+ velin-code-block .velin-code-block__line-numbers > span {
4852
+ min-height: 1.55em;
4853
+ line-height: 1.55;
4854
+ display: block;
4855
+ }
4856
+
4857
+ velin-code-block .velin-code-block__gutter pre, velin-code-block .velin-code-block__gutter pre code {
4858
+ white-space: pre;
4859
+ tab-size: 2;
4860
+ margin: 0;
4861
+ line-height: 1.55;
4862
+ }
4863
+
4864
+ velin-code-block .velin-code-block__toolbar {
4865
+ gap: var(--velin-space-2);
4866
+ z-index: 1;
4867
+ display: flex;
4868
+ position: absolute;
4869
+ inset-block-start: var(--velin-space-2);
4870
+ inset-inline-end: var(--velin-space-2);
4871
+ }
4406
4872
  }
4407
4873
 
4408
4874
  @layer utilities {
@@ -4539,30 +5005,58 @@
4539
5005
  }
4540
5006
 
4541
5007
  .velin-mb-0 {
4542
- margin-block: var(--velin-space-0);
5008
+ margin-bottom: var(--velin-space-0);
4543
5009
  }
4544
5010
 
4545
5011
  .velin-mb-1 {
4546
- margin-block: var(--velin-space-1);
5012
+ margin-bottom: var(--velin-space-1);
4547
5013
  }
4548
5014
 
4549
5015
  .velin-mb-2 {
4550
- margin-block: var(--velin-space-2);
5016
+ margin-bottom: var(--velin-space-2);
4551
5017
  }
4552
5018
 
4553
5019
  .velin-mb-3 {
4554
- margin-block: var(--velin-space-3);
5020
+ margin-bottom: var(--velin-space-3);
4555
5021
  }
4556
5022
 
4557
5023
  .velin-mb-4 {
4558
- margin-block: var(--velin-space-4);
5024
+ margin-bottom: var(--velin-space-4);
4559
5025
  }
4560
5026
 
4561
5027
  .velin-mb-6 {
4562
- margin-block: var(--velin-space-6);
5028
+ margin-bottom: var(--velin-space-6);
4563
5029
  }
4564
5030
 
4565
5031
  .velin-mb-8 {
5032
+ margin-bottom: var(--velin-space-8);
5033
+ }
5034
+
5035
+ .velin-my-0 {
5036
+ margin-block: var(--velin-space-0);
5037
+ }
5038
+
5039
+ .velin-my-1 {
5040
+ margin-block: var(--velin-space-1);
5041
+ }
5042
+
5043
+ .velin-my-2 {
5044
+ margin-block: var(--velin-space-2);
5045
+ }
5046
+
5047
+ .velin-my-3 {
5048
+ margin-block: var(--velin-space-3);
5049
+ }
5050
+
5051
+ .velin-my-4 {
5052
+ margin-block: var(--velin-space-4);
5053
+ }
5054
+
5055
+ .velin-my-6 {
5056
+ margin-block: var(--velin-space-6);
5057
+ }
5058
+
5059
+ .velin-my-8 {
4566
5060
  margin-block: var(--velin-space-8);
4567
5061
  }
4568
5062
 
@@ -5056,6 +5550,18 @@
5056
5550
  font-family: var(--velin-font-mono);
5057
5551
  }
5058
5552
 
5553
+ .velin-font-display {
5554
+ font-family: var(--velin-font-display);
5555
+ }
5556
+
5557
+ .velin-font-text {
5558
+ font-family: var(--velin-font-text);
5559
+ }
5560
+
5561
+ .velin-tabular-nums {
5562
+ font-variant-numeric: tabular-nums;
5563
+ }
5564
+
5059
5565
  .velin-text-start {
5060
5566
  text-align: start;
5061
5567
  }
@@ -8296,6 +8802,39 @@
8296
8802
  }
8297
8803
  }
8298
8804
 
8805
+ @supports not (animation-timeline: view()) {
8806
+ .velin-animate-on-scroll:not(.velin-in-view) {
8807
+ opacity: 0;
8808
+ transform: translateY(1.5rem);
8809
+ }
8810
+
8811
+ .velin-animate-on-scroll--fade:not(.velin-in-view) {
8812
+ opacity: 0;
8813
+ transform: none;
8814
+ }
8815
+
8816
+ .velin-animate-on-scroll--slide-up:not(.velin-in-view) {
8817
+ opacity: 0;
8818
+ transform: translateY(2rem);
8819
+ }
8820
+
8821
+ .velin-animate-on-scroll--scale:not(.velin-in-view) {
8822
+ opacity: 0;
8823
+ transform: scale(.92);
8824
+ }
8825
+
8826
+ .velin-animate-on-scroll.velin-in-view, .velin-animate-on-scroll--fade.velin-in-view, .velin-animate-on-scroll--slide-up.velin-in-view, .velin-animate-on-scroll--scale.velin-in-view {
8827
+ opacity: 1;
8828
+ transition: opacity var(--velin-duration-normal, .4s) var(--velin-ease-out, ease-out),
8829
+ transform var(--velin-duration-normal, .4s) var(--velin-ease-out, ease-out);
8830
+ transform: none;
8831
+ }
8832
+ }
8833
+
8834
+ .velin-stagger-item {
8835
+ transition-delay: var(--velin-stagger-delay, 0s);
8836
+ }
8837
+
8299
8838
  @media (prefers-reduced-motion: reduce) {
8300
8839
  .velin-animate-on-scroll, .velin-animate-on-scroll--fade, .velin-animate-on-scroll--slide-up, .velin-animate-on-scroll--scale, .velin-parallax, .velin-parallax--slow {
8301
8840
  opacity: 1;