@bookklik/senangstart-css 0.1.3 → 0.1.7

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 (482) hide show
  1. package/.github/workflows/deploy-docs.yml +7 -1
  2. package/dist/senangstart-css.js +1473 -21
  3. package/dist/senangstart-css.min.js +1182 -12
  4. package/docs/.vitepress/config.js +769 -71
  5. package/docs/SYNTAX-REFERENCE.md +1555 -0
  6. package/docs/guide/dark-mode.md +152 -0
  7. package/docs/guide/preflight.md +139 -0
  8. package/docs/ms/examples/cards.md +116 -0
  9. package/docs/ms/examples/forms.md +207 -0
  10. package/docs/ms/examples/hero.md +150 -0
  11. package/docs/ms/examples/index.md +87 -0
  12. package/docs/ms/examples/navigation.md +144 -0
  13. package/docs/ms/guide/cdn.md +110 -0
  14. package/docs/ms/guide/cli.md +174 -0
  15. package/docs/ms/guide/configuration.md +152 -0
  16. package/docs/ms/guide/dark-mode.md +152 -0
  17. package/docs/ms/guide/getting-started.md +130 -0
  18. package/docs/ms/guide/index.md +64 -0
  19. package/docs/ms/guide/natural-scale.md +123 -0
  20. package/docs/ms/guide/philosophy.md +103 -0
  21. package/docs/ms/guide/preflight.md +139 -0
  22. package/docs/ms/guide/responsive.md +129 -0
  23. package/docs/ms/guide/states.md +162 -0
  24. package/docs/ms/guide/tri-attribute.md +187 -0
  25. package/docs/ms/index.md +64 -0
  26. package/docs/ms/reference/breakpoints.md +131 -0
  27. package/docs/ms/reference/colors.md +126 -0
  28. package/docs/ms/reference/layout/align-content.md +35 -0
  29. package/docs/ms/reference/layout/align-items.md +33 -0
  30. package/docs/ms/reference/layout/align-self.md +34 -0
  31. package/docs/ms/reference/layout/aspect-ratio.md +40 -0
  32. package/docs/ms/reference/layout/border-collapse.md +30 -0
  33. package/docs/ms/reference/layout/border-spacing.md +39 -0
  34. package/docs/ms/reference/layout/box-sizing.md +30 -0
  35. package/docs/ms/reference/layout/caption-side.md +30 -0
  36. package/docs/ms/reference/layout/columns.md +30 -0
  37. package/docs/ms/reference/layout/container.md +29 -0
  38. package/docs/ms/reference/layout/display.md +60 -0
  39. package/docs/ms/reference/layout/flex-basis.md +38 -0
  40. package/docs/ms/reference/layout/flex-direction.md +33 -0
  41. package/docs/ms/reference/layout/flex-items.md +32 -0
  42. package/docs/ms/reference/layout/flex-wrap.md +31 -0
  43. package/docs/ms/reference/layout/flex.md +40 -0
  44. package/docs/ms/reference/layout/float-clear.md +32 -0
  45. package/docs/ms/reference/layout/grid-auto-flow.md +33 -0
  46. package/docs/ms/reference/layout/grid-auto-sizing.md +32 -0
  47. package/docs/ms/reference/layout/grid-column-span.md +31 -0
  48. package/docs/ms/reference/layout/grid-columns.md +32 -0
  49. package/docs/ms/reference/layout/grid-row-span.md +30 -0
  50. package/docs/ms/reference/layout/grid-rows.md +31 -0
  51. package/docs/ms/reference/layout/inset.md +44 -0
  52. package/docs/ms/reference/layout/isolation.md +30 -0
  53. package/docs/ms/reference/layout/justify-content.md +36 -0
  54. package/docs/ms/reference/layout/justify-items.md +32 -0
  55. package/docs/ms/reference/layout/justify-self.md +33 -0
  56. package/docs/ms/reference/layout/object-fit.md +33 -0
  57. package/docs/ms/reference/layout/object-position.md +45 -0
  58. package/docs/ms/reference/layout/order.md +32 -0
  59. package/docs/ms/reference/layout/overflow.md +34 -0
  60. package/docs/ms/reference/layout/overscroll.md +31 -0
  61. package/docs/ms/reference/layout/place-content.md +35 -0
  62. package/docs/ms/reference/layout/place-items.md +32 -0
  63. package/docs/ms/reference/layout/place-self.md +33 -0
  64. package/docs/ms/reference/layout/position.md +34 -0
  65. package/docs/ms/reference/layout/shorthand-alignment.md +34 -0
  66. package/docs/ms/reference/layout/table-layout.md +30 -0
  67. package/docs/ms/reference/layout/visibility.md +30 -0
  68. package/docs/ms/reference/layout/z-index.md +33 -0
  69. package/docs/ms/reference/layout.md +73 -0
  70. package/docs/ms/reference/space/arbitrary-values.md +32 -0
  71. package/docs/ms/reference/space/gap.md +44 -0
  72. package/docs/ms/reference/space/height.md +44 -0
  73. package/docs/ms/reference/space/margin.md +49 -0
  74. package/docs/ms/reference/space/padding.md +49 -0
  75. package/docs/ms/reference/space/scale-reference.md +43 -0
  76. package/docs/ms/reference/space/sizing.md +27 -0
  77. package/docs/ms/reference/space/width.md +45 -0
  78. package/docs/ms/reference/space.md +37 -0
  79. package/docs/ms/reference/spacing.md +88 -0
  80. package/docs/ms/reference/visual/accent-color.md +31 -0
  81. package/docs/ms/reference/visual/animation-builtin.md +41 -0
  82. package/docs/ms/reference/visual/animation-delay.md +41 -0
  83. package/docs/ms/reference/visual/animation-direction.md +32 -0
  84. package/docs/ms/reference/visual/animation-duration.md +43 -0
  85. package/docs/ms/reference/visual/animation-fill.md +32 -0
  86. package/docs/ms/reference/visual/animation-iteration.md +30 -0
  87. package/docs/ms/reference/visual/animation-play.md +30 -0
  88. package/docs/ms/reference/visual/appearance.md +30 -0
  89. package/docs/ms/reference/visual/backdrop-blur.md +43 -0
  90. package/docs/ms/reference/visual/backdrop-brightness.md +41 -0
  91. package/docs/ms/reference/visual/backdrop-contrast.md +41 -0
  92. package/docs/ms/reference/visual/backdrop-grayscale.md +39 -0
  93. package/docs/ms/reference/visual/backdrop-hue-rotate.md +39 -0
  94. package/docs/ms/reference/visual/backdrop-invert.md +39 -0
  95. package/docs/ms/reference/visual/backdrop-opacity.md +39 -0
  96. package/docs/ms/reference/visual/backdrop-saturate.md +41 -0
  97. package/docs/ms/reference/visual/backdrop-sepia.md +39 -0
  98. package/docs/ms/reference/visual/background-attachment.md +31 -0
  99. package/docs/ms/reference/visual/background-blend-mode.md +34 -0
  100. package/docs/ms/reference/visual/background-clip.md +32 -0
  101. package/docs/ms/reference/visual/background-color.md +33 -0
  102. package/docs/ms/reference/visual/background-image.md +41 -0
  103. package/docs/ms/reference/visual/background-origin.md +31 -0
  104. package/docs/ms/reference/visual/background-position.md +45 -0
  105. package/docs/ms/reference/visual/background-repeat.md +34 -0
  106. package/docs/ms/reference/visual/background-size.md +39 -0
  107. package/docs/ms/reference/visual/background.md +13 -0
  108. package/docs/ms/reference/visual/blend-modes.md +34 -0
  109. package/docs/ms/reference/visual/border-radius.md +34 -0
  110. package/docs/ms/reference/visual/border-style.md +33 -0
  111. package/docs/ms/reference/visual/border-width.md +44 -0
  112. package/docs/ms/reference/visual/border.md +43 -0
  113. package/docs/ms/reference/visual/box-shadow.md +33 -0
  114. package/docs/ms/reference/visual/caret-color.md +31 -0
  115. package/docs/ms/reference/visual/color-scheme.md +31 -0
  116. package/docs/ms/reference/visual/cursor.md +37 -0
  117. package/docs/ms/reference/visual/field-sizing.md +30 -0
  118. package/docs/ms/reference/visual/fill.md +38 -0
  119. package/docs/ms/reference/visual/filter-blur.md +43 -0
  120. package/docs/ms/reference/visual/filter-brightness.md +41 -0
  121. package/docs/ms/reference/visual/filter-contrast.md +41 -0
  122. package/docs/ms/reference/visual/filter-drop-shadow.md +42 -0
  123. package/docs/ms/reference/visual/filter-grayscale.md +39 -0
  124. package/docs/ms/reference/visual/filter-hue-rotate.md +39 -0
  125. package/docs/ms/reference/visual/filter-invert.md +39 -0
  126. package/docs/ms/reference/visual/filter-saturate.md +41 -0
  127. package/docs/ms/reference/visual/filter-sepia.md +39 -0
  128. package/docs/ms/reference/visual/font-family.md +31 -0
  129. package/docs/ms/reference/visual/font-smoothing.md +30 -0
  130. package/docs/ms/reference/visual/font-style.md +30 -0
  131. package/docs/ms/reference/visual/font-variant-numeric.md +35 -0
  132. package/docs/ms/reference/visual/font-weight.md +31 -0
  133. package/docs/ms/reference/visual/forced-color-adjust.md +30 -0
  134. package/docs/ms/reference/visual/hyphens.md +31 -0
  135. package/docs/ms/reference/visual/letter-spacing.md +42 -0
  136. package/docs/ms/reference/visual/line-clamp.md +40 -0
  137. package/docs/ms/reference/visual/line-height.md +42 -0
  138. package/docs/ms/reference/visual/list-style.md +34 -0
  139. package/docs/ms/reference/visual/mask.md +39 -0
  140. package/docs/ms/reference/visual/opacity.md +33 -0
  141. package/docs/ms/reference/visual/outline.md +31 -0
  142. package/docs/ms/reference/visual/pointer-events.md +30 -0
  143. package/docs/ms/reference/visual/resize.md +32 -0
  144. package/docs/ms/reference/visual/scroll-behavior.md +30 -0
  145. package/docs/ms/reference/visual/scroll-margin.md +41 -0
  146. package/docs/ms/reference/visual/scroll-padding.md +41 -0
  147. package/docs/ms/reference/visual/scroll-snap-align.md +32 -0
  148. package/docs/ms/reference/visual/scroll-snap-stop.md +30 -0
  149. package/docs/ms/reference/visual/scroll-snap-type.md +34 -0
  150. package/docs/ms/reference/visual/state-prefixes.md +37 -0
  151. package/docs/ms/reference/visual/stroke-width.md +39 -0
  152. package/docs/ms/reference/visual/stroke.md +38 -0
  153. package/docs/ms/reference/visual/text-alignment.md +32 -0
  154. package/docs/ms/reference/visual/text-color.md +41 -0
  155. package/docs/ms/reference/visual/text-decoration.md +32 -0
  156. package/docs/ms/reference/visual/text-indent.md +37 -0
  157. package/docs/ms/reference/visual/text-overflow.md +31 -0
  158. package/docs/ms/reference/visual/text-shadow.md +40 -0
  159. package/docs/ms/reference/visual/text-size.md +32 -0
  160. package/docs/ms/reference/visual/text-transform.md +32 -0
  161. package/docs/ms/reference/visual/text-wrap.md +32 -0
  162. package/docs/ms/reference/visual/touch-action.md +36 -0
  163. package/docs/ms/reference/visual/transform-backface.md +30 -0
  164. package/docs/ms/reference/visual/transform-origin.md +45 -0
  165. package/docs/ms/reference/visual/transform-perspective-origin.md +45 -0
  166. package/docs/ms/reference/visual/transform-perspective.md +43 -0
  167. package/docs/ms/reference/visual/transform-rotate.md +40 -0
  168. package/docs/ms/reference/visual/transform-scale.md +43 -0
  169. package/docs/ms/reference/visual/transform-skew.md +40 -0
  170. package/docs/ms/reference/visual/transform-style.md +30 -0
  171. package/docs/ms/reference/visual/transform-translate.md +39 -0
  172. package/docs/ms/reference/visual/transition-delay.md +41 -0
  173. package/docs/ms/reference/visual/transition-duration.md +43 -0
  174. package/docs/ms/reference/visual/transition-property.md +34 -0
  175. package/docs/ms/reference/visual/transition-timing.md +40 -0
  176. package/docs/ms/reference/visual/typography-keywords.md +81 -0
  177. package/docs/ms/reference/visual/user-select.md +32 -0
  178. package/docs/ms/reference/visual/vertical-align.md +36 -0
  179. package/docs/ms/reference/visual/whitespace.md +34 -0
  180. package/docs/ms/reference/visual/will-change.md +33 -0
  181. package/docs/ms/reference/visual/word-break.md +32 -0
  182. package/docs/ms/reference/visual.md +157 -0
  183. package/docs/public/assets/senangstart-css.min.js +1545 -0
  184. package/docs/reference/layout/align-content.md +35 -0
  185. package/docs/reference/layout/align-items.md +33 -0
  186. package/docs/reference/layout/align-self.md +34 -0
  187. package/docs/reference/layout/aspect-ratio.md +40 -0
  188. package/docs/reference/layout/border-collapse.md +30 -0
  189. package/docs/reference/layout/border-spacing.md +39 -0
  190. package/docs/reference/layout/box-sizing.md +30 -0
  191. package/docs/reference/layout/caption-side.md +30 -0
  192. package/docs/reference/layout/columns.md +30 -0
  193. package/docs/reference/layout/container.md +29 -0
  194. package/docs/reference/layout/display.md +60 -0
  195. package/docs/reference/layout/flex-basis.md +38 -0
  196. package/docs/reference/layout/flex-direction.md +33 -0
  197. package/docs/reference/layout/flex-items.md +32 -0
  198. package/docs/reference/layout/flex-wrap.md +31 -0
  199. package/docs/reference/layout/flex.md +40 -0
  200. package/docs/reference/layout/float-clear.md +32 -0
  201. package/docs/reference/layout/grid-auto-flow.md +33 -0
  202. package/docs/reference/layout/grid-auto-sizing.md +32 -0
  203. package/docs/reference/layout/grid-column-span.md +31 -0
  204. package/docs/reference/layout/grid-columns.md +32 -0
  205. package/docs/reference/layout/grid-row-span.md +30 -0
  206. package/docs/reference/layout/grid-rows.md +31 -0
  207. package/docs/reference/layout/inset.md +44 -0
  208. package/docs/reference/layout/isolation.md +30 -0
  209. package/docs/reference/layout/justify-content.md +36 -0
  210. package/docs/reference/layout/justify-items.md +32 -0
  211. package/docs/reference/layout/justify-self.md +33 -0
  212. package/docs/reference/layout/object-fit.md +33 -0
  213. package/docs/reference/layout/object-position.md +45 -0
  214. package/docs/reference/layout/order.md +32 -0
  215. package/docs/reference/layout/overflow.md +34 -0
  216. package/docs/reference/layout/overscroll.md +31 -0
  217. package/docs/reference/layout/place-content.md +35 -0
  218. package/docs/reference/layout/place-items.md +32 -0
  219. package/docs/reference/layout/place-self.md +33 -0
  220. package/docs/reference/layout/position.md +34 -0
  221. package/docs/reference/layout/shorthand-alignment.md +34 -0
  222. package/docs/reference/layout/table-layout.md +30 -0
  223. package/docs/reference/layout/visibility.md +30 -0
  224. package/docs/reference/layout/z-index.md +33 -0
  225. package/docs/reference/layout.md +60 -102
  226. package/docs/reference/space/arbitrary-values.md +39 -0
  227. package/docs/reference/space/gap.md +44 -0
  228. package/docs/reference/space/height.md +44 -0
  229. package/docs/reference/space/margin.md +49 -0
  230. package/docs/reference/space/padding.md +49 -0
  231. package/docs/reference/space/scale-reference.md +43 -0
  232. package/docs/reference/space/width.md +45 -0
  233. package/docs/reference/space.md +14 -98
  234. package/docs/reference/spacing.md +22 -8
  235. package/docs/reference/visual/accent-color.md +31 -0
  236. package/docs/reference/visual/animation-builtin.md +41 -0
  237. package/docs/reference/visual/animation-delay.md +41 -0
  238. package/docs/reference/visual/animation-direction.md +32 -0
  239. package/docs/reference/visual/animation-duration.md +43 -0
  240. package/docs/reference/visual/animation-fill.md +32 -0
  241. package/docs/reference/visual/animation-iteration.md +30 -0
  242. package/docs/reference/visual/animation-play.md +30 -0
  243. package/docs/reference/visual/appearance.md +30 -0
  244. package/docs/reference/visual/backdrop-blur.md +43 -0
  245. package/docs/reference/visual/backdrop-brightness.md +41 -0
  246. package/docs/reference/visual/backdrop-contrast.md +41 -0
  247. package/docs/reference/visual/backdrop-grayscale.md +39 -0
  248. package/docs/reference/visual/backdrop-hue-rotate.md +39 -0
  249. package/docs/reference/visual/backdrop-invert.md +39 -0
  250. package/docs/reference/visual/backdrop-opacity.md +39 -0
  251. package/docs/reference/visual/backdrop-saturate.md +41 -0
  252. package/docs/reference/visual/backdrop-sepia.md +39 -0
  253. package/docs/reference/visual/background-attachment.md +31 -0
  254. package/docs/reference/visual/background-blend-mode.md +34 -0
  255. package/docs/reference/visual/background-clip.md +32 -0
  256. package/docs/reference/visual/background-color.md +33 -0
  257. package/docs/reference/visual/background-image.md +41 -0
  258. package/docs/reference/visual/background-origin.md +31 -0
  259. package/docs/reference/visual/background-position.md +45 -0
  260. package/docs/reference/visual/background-repeat.md +34 -0
  261. package/docs/reference/visual/background-size.md +39 -0
  262. package/docs/reference/visual/blend-modes.md +34 -0
  263. package/docs/reference/visual/border-radius.md +34 -0
  264. package/docs/reference/visual/border-style.md +33 -0
  265. package/docs/reference/visual/border-width.md +44 -0
  266. package/docs/reference/visual/border.md +43 -0
  267. package/docs/reference/visual/box-shadow.md +33 -0
  268. package/docs/reference/visual/caret-color.md +31 -0
  269. package/docs/reference/visual/color-scheme.md +31 -0
  270. package/docs/reference/visual/cursor.md +37 -0
  271. package/docs/reference/visual/field-sizing.md +30 -0
  272. package/docs/reference/visual/fill.md +38 -0
  273. package/docs/reference/visual/filter-blur.md +43 -0
  274. package/docs/reference/visual/filter-brightness.md +41 -0
  275. package/docs/reference/visual/filter-contrast.md +41 -0
  276. package/docs/reference/visual/filter-drop-shadow.md +42 -0
  277. package/docs/reference/visual/filter-grayscale.md +39 -0
  278. package/docs/reference/visual/filter-hue-rotate.md +39 -0
  279. package/docs/reference/visual/filter-invert.md +39 -0
  280. package/docs/reference/visual/filter-saturate.md +41 -0
  281. package/docs/reference/visual/filter-sepia.md +39 -0
  282. package/docs/reference/visual/font-family.md +31 -0
  283. package/docs/reference/visual/font-smoothing.md +30 -0
  284. package/docs/reference/visual/font-style.md +30 -0
  285. package/docs/reference/visual/font-variant-numeric.md +35 -0
  286. package/docs/reference/visual/font-weight.md +31 -0
  287. package/docs/reference/visual/forced-color-adjust.md +30 -0
  288. package/docs/reference/visual/hyphens.md +31 -0
  289. package/docs/reference/visual/letter-spacing.md +42 -0
  290. package/docs/reference/visual/line-clamp.md +40 -0
  291. package/docs/reference/visual/line-height.md +42 -0
  292. package/docs/reference/visual/list-style.md +34 -0
  293. package/docs/reference/visual/mask.md +39 -0
  294. package/docs/reference/visual/opacity.md +33 -0
  295. package/docs/reference/visual/outline.md +31 -0
  296. package/docs/reference/visual/pointer-events.md +30 -0
  297. package/docs/reference/visual/resize.md +32 -0
  298. package/docs/reference/visual/scroll-behavior.md +30 -0
  299. package/docs/reference/visual/scroll-margin.md +41 -0
  300. package/docs/reference/visual/scroll-padding.md +41 -0
  301. package/docs/reference/visual/scroll-snap-align.md +32 -0
  302. package/docs/reference/visual/scroll-snap-stop.md +30 -0
  303. package/docs/reference/visual/scroll-snap-type.md +34 -0
  304. package/docs/reference/visual/state-prefixes.md +37 -0
  305. package/docs/reference/visual/stroke-width.md +39 -0
  306. package/docs/reference/visual/stroke.md +38 -0
  307. package/docs/reference/visual/text-alignment.md +32 -0
  308. package/docs/reference/visual/text-color.md +41 -0
  309. package/docs/reference/visual/text-decoration.md +32 -0
  310. package/docs/reference/visual/text-indent.md +37 -0
  311. package/docs/reference/visual/text-overflow.md +31 -0
  312. package/docs/reference/visual/text-shadow.md +40 -0
  313. package/docs/reference/visual/text-size.md +32 -0
  314. package/docs/reference/visual/text-transform.md +32 -0
  315. package/docs/reference/visual/text-wrap.md +32 -0
  316. package/docs/reference/visual/touch-action.md +36 -0
  317. package/docs/reference/visual/transform-backface.md +30 -0
  318. package/docs/reference/visual/transform-origin.md +45 -0
  319. package/docs/reference/visual/transform-perspective-origin.md +45 -0
  320. package/docs/reference/visual/transform-perspective.md +43 -0
  321. package/docs/reference/visual/transform-rotate.md +40 -0
  322. package/docs/reference/visual/transform-scale.md +43 -0
  323. package/docs/reference/visual/transform-skew.md +40 -0
  324. package/docs/reference/visual/transform-style.md +30 -0
  325. package/docs/reference/visual/transform-translate.md +39 -0
  326. package/docs/reference/visual/transition-delay.md +41 -0
  327. package/docs/reference/visual/transition-duration.md +43 -0
  328. package/docs/reference/visual/transition-property.md +34 -0
  329. package/docs/reference/visual/transition-timing.md +40 -0
  330. package/docs/reference/visual/typography-keywords.md +81 -0
  331. package/docs/reference/visual/user-select.md +32 -0
  332. package/docs/reference/visual/vertical-align.md +36 -0
  333. package/docs/reference/visual/whitespace.md +34 -0
  334. package/docs/reference/visual/will-change.md +33 -0
  335. package/docs/reference/visual/word-break.md +32 -0
  336. package/docs/reference/visual.md +151 -154
  337. package/docs/syntax-reference.json +1973 -0
  338. package/package.json +10 -2
  339. package/playground/index.html +78 -0
  340. package/playground/jit-test.html +384 -0
  341. package/scripts/extract-syntax.js +152 -0
  342. package/scripts/generate-docs.js +352 -0
  343. package/src/cdn/jit.js +1473 -21
  344. package/src/cli/commands/build.js +5 -0
  345. package/src/cli/index.js +2 -0
  346. package/src/compiler/generators/css.js +1594 -30
  347. package/src/compiler/generators/preflight.js +379 -0
  348. package/src/compiler/tokenizer.js +1 -1
  349. package/src/config/defaults.js +25 -1
  350. package/src/definitions/index.js +153 -0
  351. package/src/definitions/layout-alignment.js +257 -0
  352. package/src/definitions/layout-flex.js +209 -0
  353. package/src/definitions/layout-grid.js +150 -0
  354. package/src/definitions/layout-positioning.js +89 -0
  355. package/src/definitions/layout-table.js +98 -0
  356. package/src/definitions/layout-utilities.js +262 -0
  357. package/src/definitions/layout.js +195 -0
  358. package/src/definitions/space.js +164 -0
  359. package/src/definitions/visual-backgrounds.js +423 -0
  360. package/src/definitions/visual-borders.js +111 -0
  361. package/src/definitions/visual-filters.js +204 -0
  362. package/src/definitions/visual-interactivity.js +292 -0
  363. package/src/definitions/visual-svg.js +80 -0
  364. package/src/definitions/visual-transform3d.js +159 -0
  365. package/src/definitions/visual-transforms.js +142 -0
  366. package/src/definitions/visual-transitions.js +277 -0
  367. package/src/definitions/visual-typography.js +386 -0
  368. package/src/definitions/visual.js +542 -0
  369. package/tests/helpers/test-utils.js +144 -0
  370. package/tests/integration/compiler.test.js +247 -0
  371. package/tests/sync/docs-sync.test.js +364 -0
  372. package/tests/unit/compiler/generators/css.test.js +719 -0
  373. package/tests/unit/compiler/parser.test.js +244 -0
  374. package/tests/unit/compiler/tokenizer.test.js +305 -0
  375. package/tests/unit/config/defaults.test.js +168 -0
  376. package/docs/.vitepress/cache/deps/_metadata.json +0 -52
  377. package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js +0 -9719
  378. package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js.map +0 -7
  379. package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js +0 -12824
  380. package/docs/.vitepress/cache/deps/chunk-LE5NDSFD.js.map +0 -7
  381. package/docs/.vitepress/cache/deps/package.json +0 -3
  382. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4505
  383. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  384. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -583
  385. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  386. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +0 -1333
  387. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +0 -7
  388. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +0 -1665
  389. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +0 -7
  390. package/docs/.vitepress/cache/deps/vitepress___minisearch.js +0 -1813
  391. package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +0 -7
  392. package/docs/.vitepress/cache/deps/vue.js +0 -347
  393. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  394. package/docs/.vitepress/dist/404.html +0 -22
  395. package/docs/.vitepress/dist/assets/app.CwVZm472.js +0 -1
  396. package/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.BTWwOmXN.js +0 -1
  397. package/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.B-RMQ_ux.js +0 -9
  398. package/docs/.vitepress/dist/assets/chunks/framework.qISVh_QZ.js +0 -19
  399. package/docs/.vitepress/dist/assets/chunks/theme.B37_rtT6.js +0 -2
  400. package/docs/.vitepress/dist/assets/examples_cards.md.D4i0phvj.js +0 -84
  401. package/docs/.vitepress/dist/assets/examples_cards.md.D4i0phvj.lean.js +0 -1
  402. package/docs/.vitepress/dist/assets/examples_forms.md.BnsjqHST.js +0 -169
  403. package/docs/.vitepress/dist/assets/examples_forms.md.BnsjqHST.lean.js +0 -1
  404. package/docs/.vitepress/dist/assets/examples_hero.md.CCcb2x8Y.js +0 -118
  405. package/docs/.vitepress/dist/assets/examples_hero.md.CCcb2x8Y.lean.js +0 -1
  406. package/docs/.vitepress/dist/assets/examples_index.md.Dj7lqhZt.js +0 -52
  407. package/docs/.vitepress/dist/assets/examples_index.md.Dj7lqhZt.lean.js +0 -1
  408. package/docs/.vitepress/dist/assets/examples_navigation.md.CppyHbnP.js +0 -106
  409. package/docs/.vitepress/dist/assets/examples_navigation.md.CppyHbnP.lean.js +0 -1
  410. package/docs/.vitepress/dist/assets/guide_cdn.md.BzsOep2E.js +0 -30
  411. package/docs/.vitepress/dist/assets/guide_cdn.md.BzsOep2E.lean.js +0 -1
  412. package/docs/.vitepress/dist/assets/guide_cli.md.zXEKk-bu.js +0 -44
  413. package/docs/.vitepress/dist/assets/guide_cli.md.zXEKk-bu.lean.js +0 -1
  414. package/docs/.vitepress/dist/assets/guide_configuration.md.D2JZzhKm.js +0 -79
  415. package/docs/.vitepress/dist/assets/guide_configuration.md.D2JZzhKm.lean.js +0 -1
  416. package/docs/.vitepress/dist/assets/guide_getting-started.md.to1dkMR9.js +0 -47
  417. package/docs/.vitepress/dist/assets/guide_getting-started.md.to1dkMR9.lean.js +0 -1
  418. package/docs/.vitepress/dist/assets/guide_index.md.C1xk2lBl.js +0 -3
  419. package/docs/.vitepress/dist/assets/guide_index.md.C1xk2lBl.lean.js +0 -1
  420. package/docs/.vitepress/dist/assets/guide_natural-scale.md.D1oVRN5V.js +0 -22
  421. package/docs/.vitepress/dist/assets/guide_natural-scale.md.D1oVRN5V.lean.js +0 -1
  422. package/docs/.vitepress/dist/assets/guide_philosophy.md.DPyyMH8d.js +0 -7
  423. package/docs/.vitepress/dist/assets/guide_philosophy.md.DPyyMH8d.lean.js +0 -1
  424. package/docs/.vitepress/dist/assets/guide_responsive.md.wksOAMT5.js +0 -57
  425. package/docs/.vitepress/dist/assets/guide_responsive.md.wksOAMT5.lean.js +0 -1
  426. package/docs/.vitepress/dist/assets/guide_states.md.DRjYOZDJ.js +0 -77
  427. package/docs/.vitepress/dist/assets/guide_states.md.DRjYOZDJ.lean.js +0 -1
  428. package/docs/.vitepress/dist/assets/guide_tri-attribute.md.CoFqfmPZ.js +0 -45
  429. package/docs/.vitepress/dist/assets/guide_tri-attribute.md.CoFqfmPZ.lean.js +0 -1
  430. package/docs/.vitepress/dist/assets/index.md.CUZJzNzP.js +0 -7
  431. package/docs/.vitepress/dist/assets/index.md.CUZJzNzP.lean.js +0 -1
  432. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  433. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  434. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  435. package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  436. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  437. package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  438. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  439. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  440. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  441. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  442. package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  443. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  444. package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  445. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  446. package/docs/.vitepress/dist/assets/reference_breakpoints.md.BEhuwXBS.js +0 -48
  447. package/docs/.vitepress/dist/assets/reference_breakpoints.md.BEhuwXBS.lean.js +0 -1
  448. package/docs/.vitepress/dist/assets/reference_colors.md.o5ltImYJ.js +0 -17
  449. package/docs/.vitepress/dist/assets/reference_colors.md.o5ltImYJ.lean.js +0 -1
  450. package/docs/.vitepress/dist/assets/reference_layout.md.DqSoofMZ.js +0 -13
  451. package/docs/.vitepress/dist/assets/reference_layout.md.DqSoofMZ.lean.js +0 -1
  452. package/docs/.vitepress/dist/assets/reference_space.md.luOYAfQg.js +0 -24
  453. package/docs/.vitepress/dist/assets/reference_space.md.luOYAfQg.lean.js +0 -1
  454. package/docs/.vitepress/dist/assets/reference_spacing.md.DdsDhDhS.js +0 -32
  455. package/docs/.vitepress/dist/assets/reference_spacing.md.DdsDhDhS.lean.js +0 -1
  456. package/docs/.vitepress/dist/assets/reference_visual.md.DZFvxgPk.js +0 -22
  457. package/docs/.vitepress/dist/assets/reference_visual.md.DZFvxgPk.lean.js +0 -1
  458. package/docs/.vitepress/dist/assets/style.BuMqNgkb.css +0 -1
  459. package/docs/.vitepress/dist/examples/cards.html +0 -108
  460. package/docs/.vitepress/dist/examples/forms.html +0 -193
  461. package/docs/.vitepress/dist/examples/hero.html +0 -142
  462. package/docs/.vitepress/dist/examples/index.html +0 -76
  463. package/docs/.vitepress/dist/examples/navigation.html +0 -130
  464. package/docs/.vitepress/dist/guide/cdn.html +0 -54
  465. package/docs/.vitepress/dist/guide/cli.html +0 -68
  466. package/docs/.vitepress/dist/guide/configuration.html +0 -103
  467. package/docs/.vitepress/dist/guide/getting-started.html +0 -71
  468. package/docs/.vitepress/dist/guide/index.html +0 -27
  469. package/docs/.vitepress/dist/guide/natural-scale.html +0 -46
  470. package/docs/.vitepress/dist/guide/philosophy.html +0 -31
  471. package/docs/.vitepress/dist/guide/responsive.html +0 -81
  472. package/docs/.vitepress/dist/guide/states.html +0 -101
  473. package/docs/.vitepress/dist/guide/tri-attribute.html +0 -69
  474. package/docs/.vitepress/dist/hashmap.json +0 -1
  475. package/docs/.vitepress/dist/index.html +0 -31
  476. package/docs/.vitepress/dist/reference/breakpoints.html +0 -72
  477. package/docs/.vitepress/dist/reference/colors.html +0 -41
  478. package/docs/.vitepress/dist/reference/layout.html +0 -37
  479. package/docs/.vitepress/dist/reference/space.html +0 -48
  480. package/docs/.vitepress/dist/reference/spacing.html +0 -56
  481. package/docs/.vitepress/dist/reference/visual.html +0 -46
  482. package/docs/.vitepress/dist/vp-icons.css +0 -1
@@ -0,0 +1,719 @@
1
+ /**
2
+ * SenangStart CSS - CSS Generator Unit Tests
3
+ */
4
+
5
+ import { describe, it } from 'node:test';
6
+ import assert from 'node:assert';
7
+ import {
8
+ generateCSS,
9
+ generateCSSVariables,
10
+ generateRule,
11
+ minifyCSS
12
+ } from '../../../../src/compiler/generators/css.js';
13
+ import { createTestConfig, normalizeCSS, findCSSRule } from '../../../helpers/test-utils.js';
14
+
15
+ describe('CSS Generator', () => {
16
+
17
+ describe('generateCSSVariables', () => {
18
+
19
+ it('generates spacing CSS variables', () => {
20
+ const config = createTestConfig();
21
+ const css = generateCSSVariables(config);
22
+
23
+ assert.ok(css.includes(':root {'));
24
+ assert.ok(css.includes('--s-tiny: 4px'));
25
+ assert.ok(css.includes('--s-medium: 16px'));
26
+ assert.ok(css.includes('--s-big: 32px'));
27
+ });
28
+
29
+ it('generates color CSS variables', () => {
30
+ const config = createTestConfig();
31
+ const css = generateCSSVariables(config);
32
+
33
+ assert.ok(css.includes('--c-primary: #2563EB'));
34
+ assert.ok(css.includes('--c-white: #FFFFFF'));
35
+ assert.ok(css.includes('--c-black: #000000'));
36
+ });
37
+
38
+ it('generates radius CSS variables', () => {
39
+ const config = createTestConfig();
40
+ const css = generateCSSVariables(config);
41
+
42
+ assert.ok(css.includes('--r-small: 4px'));
43
+ assert.ok(css.includes('--r-medium: 8px'));
44
+ assert.ok(css.includes('--r-full: 9999px'));
45
+ });
46
+
47
+ it('generates font-size CSS variables', () => {
48
+ const config = createTestConfig();
49
+ const css = generateCSSVariables(config);
50
+
51
+ assert.ok(css.includes('--font-small: 14px'));
52
+ assert.ok(css.includes('--font-medium: 16px'));
53
+ });
54
+
55
+ it('generates z-index CSS variables', () => {
56
+ const config = createTestConfig();
57
+ const css = generateCSSVariables(config);
58
+
59
+ assert.ok(css.includes('--z-base: 0'));
60
+ assert.ok(css.includes('--z-top: 9999'));
61
+ });
62
+
63
+ });
64
+
65
+ describe('Layout Rules', () => {
66
+
67
+ describe('Display', () => {
68
+
69
+ it('generates flex display', () => {
70
+ const token = { property: 'flex', value: 'flex', attrType: 'layout', raw: 'flex' };
71
+ const config = createTestConfig();
72
+ const tokens = [token];
73
+ const css = generateCSS(tokens, config);
74
+
75
+ assert.ok(css.includes('display: flex'));
76
+ });
77
+
78
+ it('generates grid display', () => {
79
+ const token = { property: 'grid', value: 'grid', attrType: 'layout', raw: 'grid' };
80
+ const config = createTestConfig();
81
+ const tokens = [token];
82
+ const css = generateCSS(tokens, config);
83
+
84
+ assert.ok(css.includes('display: grid'));
85
+ });
86
+
87
+ it('generates hidden display', () => {
88
+ const token = { property: 'hidden', value: 'hidden', attrType: 'layout', raw: 'hidden' };
89
+ const config = createTestConfig();
90
+ const tokens = [token];
91
+ const css = generateCSS(tokens, config);
92
+
93
+ assert.ok(css.includes('display: none'));
94
+ });
95
+
96
+ it('generates block display', () => {
97
+ const token = { property: 'block', value: 'block', attrType: 'layout', raw: 'block' };
98
+ const config = createTestConfig();
99
+ const tokens = [token];
100
+ const css = generateCSS(tokens, config);
101
+
102
+ assert.ok(css.includes('display: block'));
103
+ });
104
+
105
+ it('generates inline display', () => {
106
+ const token = { property: 'inline', value: 'inline', attrType: 'layout', raw: 'inline' };
107
+ const config = createTestConfig();
108
+ const tokens = [token];
109
+ const css = generateCSS(tokens, config);
110
+
111
+ assert.ok(css.includes('display: inline-block'));
112
+ });
113
+
114
+ });
115
+
116
+ describe('Flex Direction', () => {
117
+
118
+ it('generates row direction', () => {
119
+ const token = { property: 'row', value: 'row', attrType: 'layout', raw: 'row' };
120
+ const config = createTestConfig();
121
+ const css = generateCSS([token], config);
122
+
123
+ assert.ok(css.includes('flex-direction: row'));
124
+ });
125
+
126
+ it('generates column direction', () => {
127
+ const token = { property: 'col', value: 'col', attrType: 'layout', raw: 'col' };
128
+ const config = createTestConfig();
129
+ const css = generateCSS([token], config);
130
+
131
+ assert.ok(css.includes('flex-direction: column'));
132
+ });
133
+
134
+ it('generates row-reverse direction', () => {
135
+ const token = { property: 'row-reverse', value: 'row-reverse', attrType: 'layout', raw: 'row-reverse' };
136
+ const config = createTestConfig();
137
+ const css = generateCSS([token], config);
138
+
139
+ assert.ok(css.includes('flex-direction: row-reverse'));
140
+ });
141
+
142
+ });
143
+
144
+ describe('Flex Wrap', () => {
145
+
146
+ it('generates wrap', () => {
147
+ const token = { property: 'wrap', value: 'wrap', attrType: 'layout', raw: 'wrap' };
148
+ const config = createTestConfig();
149
+ const css = generateCSS([token], config);
150
+
151
+ assert.ok(css.includes('flex-wrap: wrap'));
152
+ });
153
+
154
+ it('generates nowrap', () => {
155
+ const token = { property: 'nowrap', value: 'nowrap', attrType: 'layout', raw: 'nowrap' };
156
+ const config = createTestConfig();
157
+ const css = generateCSS([token], config);
158
+
159
+ assert.ok(css.includes('flex-wrap: nowrap'));
160
+ });
161
+
162
+ });
163
+
164
+ describe('Alignment', () => {
165
+
166
+ it('generates center alignment', () => {
167
+ const token = { property: 'center', value: 'center', attrType: 'layout', raw: 'center' };
168
+ const config = createTestConfig();
169
+ const css = generateCSS([token], config);
170
+
171
+ assert.ok(css.includes('justify-content: center'));
172
+ assert.ok(css.includes('align-items: center'));
173
+ });
174
+
175
+ it('generates justify:start', () => {
176
+ const token = { property: 'justify', value: 'start', attrType: 'layout', raw: 'justify:start' };
177
+ const config = createTestConfig();
178
+ const css = generateCSS([token], config);
179
+
180
+ assert.ok(css.includes('justify-content: flex-start'));
181
+ });
182
+
183
+ it('generates justify:between', () => {
184
+ const token = { property: 'justify', value: 'between', attrType: 'layout', raw: 'justify:between' };
185
+ const config = createTestConfig();
186
+ const css = generateCSS([token], config);
187
+
188
+ assert.ok(css.includes('justify-content: space-between'));
189
+ });
190
+
191
+ it('generates items:center', () => {
192
+ const token = { property: 'items', value: 'center', attrType: 'layout', raw: 'items:center' };
193
+ const config = createTestConfig();
194
+ const css = generateCSS([token], config);
195
+
196
+ assert.ok(css.includes('align-items: center'));
197
+ });
198
+
199
+ it('generates self:start', () => {
200
+ const token = { property: 'self', value: 'start', attrType: 'layout', raw: 'self:start' };
201
+ const config = createTestConfig();
202
+ const css = generateCSS([token], config);
203
+
204
+ assert.ok(css.includes('align-self: flex-start'));
205
+ });
206
+
207
+ });
208
+
209
+ describe('Position', () => {
210
+
211
+ it('generates absolute position', () => {
212
+ const token = { property: 'absolute', value: 'absolute', attrType: 'layout', raw: 'absolute' };
213
+ const config = createTestConfig();
214
+ const css = generateCSS([token], config);
215
+
216
+ assert.ok(css.includes('position: absolute'));
217
+ });
218
+
219
+ it('generates relative position', () => {
220
+ const token = { property: 'relative', value: 'relative', attrType: 'layout', raw: 'relative' };
221
+ const config = createTestConfig();
222
+ const css = generateCSS([token], config);
223
+
224
+ assert.ok(css.includes('position: relative'));
225
+ });
226
+
227
+ it('generates fixed position', () => {
228
+ const token = { property: 'fixed', value: 'fixed', attrType: 'layout', raw: 'fixed' };
229
+ const config = createTestConfig();
230
+ const css = generateCSS([token], config);
231
+
232
+ assert.ok(css.includes('position: fixed'));
233
+ });
234
+
235
+ it('generates sticky position', () => {
236
+ const token = { property: 'sticky', value: 'sticky', attrType: 'layout', raw: 'sticky' };
237
+ const config = createTestConfig();
238
+ const css = generateCSS([token], config);
239
+
240
+ assert.ok(css.includes('position: sticky'));
241
+ });
242
+
243
+ });
244
+
245
+ describe('Grid', () => {
246
+
247
+ it('generates grid-cols:3', () => {
248
+ const token = { property: 'grid-cols', value: '3', attrType: 'layout', raw: 'grid-cols:3' };
249
+ const config = createTestConfig();
250
+ const css = generateCSS([token], config);
251
+
252
+ assert.ok(css.includes('grid-template-columns: repeat(3, minmax(0, 1fr))'));
253
+ });
254
+
255
+ it('generates grid-rows:2', () => {
256
+ const token = { property: 'grid-rows', value: '2', attrType: 'layout', raw: 'grid-rows:2' };
257
+ const config = createTestConfig();
258
+ const css = generateCSS([token], config);
259
+
260
+ assert.ok(css.includes('grid-template-rows: repeat(2, minmax(0, 1fr))'));
261
+ });
262
+
263
+ it('generates col-span:2', () => {
264
+ const token = { property: 'col-span', value: '2', attrType: 'layout', raw: 'col-span:2' };
265
+ const config = createTestConfig();
266
+ const css = generateCSS([token], config);
267
+
268
+ assert.ok(css.includes('grid-column: span 2 / span 2'));
269
+ });
270
+
271
+ });
272
+
273
+ describe('Z-Index', () => {
274
+
275
+ it('generates z:top', () => {
276
+ const token = { property: 'z', value: 'top', attrType: 'layout', raw: 'z:top' };
277
+ const config = createTestConfig();
278
+ const css = generateCSS([token], config);
279
+
280
+ assert.ok(css.includes('z-index: var(--z-top)'));
281
+ });
282
+
283
+ });
284
+
285
+ });
286
+
287
+ describe('Space Rules', () => {
288
+
289
+ describe('Padding', () => {
290
+
291
+ it('generates padding (p:medium)', () => {
292
+ const token = { property: 'p', value: 'medium', attrType: 'space', raw: 'p:medium' };
293
+ const config = createTestConfig();
294
+ const css = generateCSS([token], config);
295
+
296
+ assert.ok(css.includes('padding: var(--s-medium)'));
297
+ });
298
+
299
+ it('generates padding-top (p-t:small)', () => {
300
+ const token = { property: 'p-t', value: 'small', attrType: 'space', raw: 'p-t:small' };
301
+ const config = createTestConfig();
302
+ const css = generateCSS([token], config);
303
+
304
+ assert.ok(css.includes('padding-top: var(--s-small)'));
305
+ });
306
+
307
+ it('generates padding-x (p-x:big)', () => {
308
+ const token = { property: 'p-x', value: 'big', attrType: 'space', raw: 'p-x:big' };
309
+ const config = createTestConfig();
310
+ const css = generateCSS([token], config);
311
+
312
+ assert.ok(css.includes('padding-left: var(--s-big)'));
313
+ assert.ok(css.includes('padding-right: var(--s-big)'));
314
+ });
315
+
316
+ it('generates padding-y (p-y:tiny)', () => {
317
+ const token = { property: 'p-y', value: 'tiny', attrType: 'space', raw: 'p-y:tiny' };
318
+ const config = createTestConfig();
319
+ const css = generateCSS([token], config);
320
+
321
+ assert.ok(css.includes('padding-top: var(--s-tiny)'));
322
+ assert.ok(css.includes('padding-bottom: var(--s-tiny)'));
323
+ });
324
+
325
+ });
326
+
327
+ describe('Margin', () => {
328
+
329
+ it('generates margin (m:medium)', () => {
330
+ const token = { property: 'm', value: 'medium', attrType: 'space', raw: 'm:medium' };
331
+ const config = createTestConfig();
332
+ const css = generateCSS([token], config);
333
+
334
+ assert.ok(css.includes('margin: var(--s-medium)'));
335
+ });
336
+
337
+ it('generates margin-x (m-x:auto)', () => {
338
+ const token = { property: 'm-x', value: 'auto', attrType: 'space', raw: 'm-x:auto' };
339
+ const config = createTestConfig();
340
+ const css = generateCSS([token], config);
341
+
342
+ assert.ok(css.includes('margin-left: auto'));
343
+ assert.ok(css.includes('margin-right: auto'));
344
+ });
345
+
346
+ });
347
+
348
+ describe('Gap', () => {
349
+
350
+ it('generates gap (g:medium)', () => {
351
+ const token = { property: 'g', value: 'medium', attrType: 'space', raw: 'g:medium' };
352
+ const config = createTestConfig();
353
+ const css = generateCSS([token], config);
354
+
355
+ assert.ok(css.includes('gap: var(--s-medium)'));
356
+ });
357
+
358
+ it('generates column-gap (g-x:small)', () => {
359
+ const token = { property: 'g-x', value: 'small', attrType: 'space', raw: 'g-x:small' };
360
+ const config = createTestConfig();
361
+ const css = generateCSS([token], config);
362
+
363
+ assert.ok(css.includes('column-gap: var(--s-small)'));
364
+ });
365
+
366
+ it('generates row-gap (g-y:big)', () => {
367
+ const token = { property: 'g-y', value: 'big', attrType: 'space', raw: 'g-y:big' };
368
+ const config = createTestConfig();
369
+ const css = generateCSS([token], config);
370
+
371
+ assert.ok(css.includes('row-gap: var(--s-big)'));
372
+ });
373
+
374
+ });
375
+
376
+ describe('Sizing', () => {
377
+
378
+ it('generates width (w:[100%])', () => {
379
+ const token = { property: 'w', value: '100%', isArbitrary: true, attrType: 'space', raw: 'w:[100%]' };
380
+ const config = createTestConfig();
381
+ const css = generateCSS([token], config);
382
+
383
+ assert.ok(css.includes('width: 100%'));
384
+ });
385
+
386
+ it('generates height (h:[50vh])', () => {
387
+ const token = { property: 'h', value: '50vh', isArbitrary: true, attrType: 'space', raw: 'h:[50vh]' };
388
+ const config = createTestConfig();
389
+ const css = generateCSS([token], config);
390
+
391
+ assert.ok(css.includes('height: 50vh'));
392
+ });
393
+
394
+ it('generates min-width', () => {
395
+ const token = { property: 'min-w', value: '300px', isArbitrary: true, attrType: 'space', raw: 'min-w:[300px]' };
396
+ const config = createTestConfig();
397
+ const css = generateCSS([token], config);
398
+
399
+ assert.ok(css.includes('min-width: 300px'));
400
+ });
401
+
402
+ it('generates max-width', () => {
403
+ const token = { property: 'max-w', value: '1200px', isArbitrary: true, attrType: 'space', raw: 'max-w:[1200px]' };
404
+ const config = createTestConfig();
405
+ const css = generateCSS([token], config);
406
+
407
+ assert.ok(css.includes('max-width: 1200px'));
408
+ });
409
+
410
+ });
411
+
412
+ });
413
+
414
+ describe('Visual Rules', () => {
415
+
416
+ describe('Background', () => {
417
+
418
+ it('generates background-color', () => {
419
+ const token = { property: 'bg', value: 'primary', attrType: 'visual', raw: 'bg:primary' };
420
+ const config = createTestConfig();
421
+ const css = generateCSS([token], config);
422
+
423
+ assert.ok(css.includes('background-color: var(--c-primary)'));
424
+ });
425
+
426
+ it('generates arbitrary background-color', () => {
427
+ const token = { property: 'bg', value: '#FF5733', isArbitrary: true, attrType: 'visual', raw: 'bg:[#FF5733]' };
428
+ const config = createTestConfig();
429
+ const css = generateCSS([token], config);
430
+
431
+ assert.ok(css.includes('background-color: #FF5733'));
432
+ });
433
+
434
+ });
435
+
436
+ describe('Text', () => {
437
+
438
+ it('generates text color', () => {
439
+ const token = { property: 'text', value: 'white', attrType: 'visual', raw: 'text:white' };
440
+ const config = createTestConfig();
441
+ const css = generateCSS([token], config);
442
+
443
+ assert.ok(css.includes('color: var(--c-white)'));
444
+ });
445
+
446
+ it('generates text-align', () => {
447
+ const token = { property: 'text', value: 'center', attrType: 'visual', raw: 'text:center' };
448
+ const config = createTestConfig();
449
+ const css = generateCSS([token], config);
450
+
451
+ assert.ok(css.includes('text-align: center'));
452
+ });
453
+
454
+ });
455
+
456
+ describe('Border Radius', () => {
457
+
458
+ it('generates border-radius', () => {
459
+ const token = { property: 'rounded', value: 'medium', attrType: 'visual', raw: 'rounded:medium' };
460
+ const config = createTestConfig();
461
+ const css = generateCSS([token], config);
462
+
463
+ assert.ok(css.includes('border-radius: var(--r-medium)'));
464
+ });
465
+
466
+ it('generates rounded-full', () => {
467
+ const token = { property: 'rounded', value: 'full', attrType: 'visual', raw: 'rounded:full' };
468
+ const config = createTestConfig();
469
+ const css = generateCSS([token], config);
470
+
471
+ assert.ok(css.includes('border-radius: var(--r-full)'));
472
+ });
473
+
474
+ });
475
+
476
+ describe('Shadow', () => {
477
+
478
+ it('generates box-shadow', () => {
479
+ const token = { property: 'shadow', value: 'medium', attrType: 'visual', raw: 'shadow:medium' };
480
+ const config = createTestConfig();
481
+ const css = generateCSS([token], config);
482
+
483
+ assert.ok(css.includes('box-shadow: var(--shadow-medium)'));
484
+ });
485
+
486
+ });
487
+
488
+ describe('Typography Keywords', () => {
489
+
490
+ it('generates italic', () => {
491
+ const token = { property: 'italic', value: 'italic', attrType: 'visual', raw: 'italic' };
492
+ const config = createTestConfig();
493
+ const css = generateCSS([token], config);
494
+
495
+ assert.ok(css.includes('font-style: italic'));
496
+ });
497
+
498
+ it('generates uppercase', () => {
499
+ const token = { property: 'uppercase', value: 'uppercase', attrType: 'visual', raw: 'uppercase' };
500
+ const config = createTestConfig();
501
+ const css = generateCSS([token], config);
502
+
503
+ assert.ok(css.includes('text-transform: uppercase'));
504
+ });
505
+
506
+ it('generates underline', () => {
507
+ const token = { property: 'underline', value: 'underline', attrType: 'visual', raw: 'underline' };
508
+ const config = createTestConfig();
509
+ const css = generateCSS([token], config);
510
+
511
+ assert.ok(css.includes('text-decoration-line: underline'));
512
+ });
513
+
514
+ it('generates truncate', () => {
515
+ const token = { property: 'truncate', value: 'truncate', attrType: 'visual', raw: 'truncate' };
516
+ const config = createTestConfig();
517
+ const css = generateCSS([token], config);
518
+
519
+ assert.ok(css.includes('overflow: hidden'));
520
+ assert.ok(css.includes('text-overflow: ellipsis'));
521
+ assert.ok(css.includes('white-space: nowrap'));
522
+ });
523
+
524
+ });
525
+
526
+ describe('Opacity', () => {
527
+
528
+ it('generates opacity', () => {
529
+ const token = { property: 'opacity', value: '50', attrType: 'visual', raw: 'opacity:50' };
530
+ const config = createTestConfig();
531
+ const css = generateCSS([token], config);
532
+
533
+ assert.ok(css.includes('opacity: 0.5'));
534
+ });
535
+
536
+ });
537
+
538
+ });
539
+
540
+ describe('Responsive Breakpoints', () => {
541
+
542
+ it('wraps mob: in media query', () => {
543
+ const token = {
544
+ breakpoint: 'mob',
545
+ property: 'p',
546
+ value: 'big',
547
+ attrType: 'space',
548
+ raw: 'mob:p:big'
549
+ };
550
+ const config = createTestConfig();
551
+ const css = generateCSS([token], config);
552
+
553
+ assert.ok(css.includes('@media (min-width: 480px)'));
554
+ assert.ok(css.includes('padding: var(--s-big)'));
555
+ });
556
+
557
+ it('wraps tab: in media query', () => {
558
+ const token = {
559
+ breakpoint: 'tab',
560
+ property: 'grid-cols',
561
+ value: '2',
562
+ attrType: 'layout',
563
+ raw: 'tab:grid-cols:2'
564
+ };
565
+ const config = createTestConfig();
566
+ const css = generateCSS([token], config);
567
+
568
+ assert.ok(css.includes('@media (min-width: 768px)'));
569
+ });
570
+
571
+ it('wraps lap: in media query', () => {
572
+ const token = {
573
+ breakpoint: 'lap',
574
+ property: 'w',
575
+ value: '50%',
576
+ isArbitrary: true,
577
+ attrType: 'space',
578
+ raw: 'lap:w:[50%]'
579
+ };
580
+ const config = createTestConfig();
581
+ const css = generateCSS([token], config);
582
+
583
+ assert.ok(css.includes('@media (min-width: 1024px)'));
584
+ });
585
+
586
+ it('wraps desk: in media query', () => {
587
+ const token = {
588
+ breakpoint: 'desk',
589
+ property: 'row',
590
+ value: 'row',
591
+ attrType: 'layout',
592
+ raw: 'desk:row'
593
+ };
594
+ const config = createTestConfig();
595
+ const css = generateCSS([token], config);
596
+
597
+ assert.ok(css.includes('@media (min-width: 1280px)'));
598
+ });
599
+
600
+ });
601
+
602
+ describe('State Pseudo-classes', () => {
603
+
604
+ it('generates :hover pseudo-class', () => {
605
+ const token = {
606
+ state: 'hover',
607
+ property: 'bg',
608
+ value: 'secondary',
609
+ attrType: 'visual',
610
+ raw: 'hover:bg:secondary'
611
+ };
612
+ const config = createTestConfig();
613
+ const css = generateCSS([token], config);
614
+
615
+ assert.ok(css.includes(':hover'));
616
+ assert.ok(css.includes('background-color: var(--c-secondary)'));
617
+ });
618
+
619
+ it('generates :focus pseudo-class', () => {
620
+ const token = {
621
+ state: 'focus',
622
+ property: 'shadow',
623
+ value: 'big',
624
+ attrType: 'visual',
625
+ raw: 'focus:shadow:big'
626
+ };
627
+ const config = createTestConfig();
628
+ const css = generateCSS([token], config);
629
+
630
+ assert.ok(css.includes(':focus'));
631
+ });
632
+
633
+ it('generates :active pseudo-class', () => {
634
+ const token = {
635
+ state: 'active',
636
+ property: 'bg',
637
+ value: 'primary',
638
+ attrType: 'visual',
639
+ raw: 'active:bg:primary'
640
+ };
641
+ const config = createTestConfig();
642
+ const css = generateCSS([token], config);
643
+
644
+ assert.ok(css.includes(':active'));
645
+ });
646
+
647
+ it('generates :disabled pseudo-class', () => {
648
+ const token = {
649
+ state: 'disabled',
650
+ property: 'opacity',
651
+ value: '50',
652
+ attrType: 'visual',
653
+ raw: 'disabled:opacity:50'
654
+ };
655
+ const config = createTestConfig();
656
+ const css = generateCSS([token], config);
657
+
658
+ assert.ok(css.includes(':disabled'));
659
+ });
660
+
661
+ });
662
+
663
+ describe('Dark Mode', () => {
664
+
665
+ it('generates media-based dark mode', () => {
666
+ const token = {
667
+ state: 'dark',
668
+ property: 'bg',
669
+ value: 'black',
670
+ attrType: 'visual',
671
+ raw: 'dark:bg:black'
672
+ };
673
+ const config = createTestConfig({ darkMode: 'media' });
674
+ const css = generateCSS([token], config);
675
+
676
+ assert.ok(css.includes('@media (prefers-color-scheme: dark)'));
677
+ });
678
+
679
+ it('generates selector-based dark mode', () => {
680
+ const token = {
681
+ state: 'dark',
682
+ property: 'bg',
683
+ value: 'black',
684
+ attrType: 'visual',
685
+ raw: 'dark:bg:black'
686
+ };
687
+ const config = createTestConfig({ darkMode: 'selector' });
688
+ const css = generateCSS([token], config);
689
+
690
+ assert.ok(css.includes('.dark'));
691
+ });
692
+
693
+ });
694
+
695
+ describe('minifyCSS', () => {
696
+
697
+ it('removes whitespace and comments', () => {
698
+ const css = `
699
+ /* Comment */
700
+ .test {
701
+ color: red;
702
+ }
703
+ `;
704
+ const minified = minifyCSS(css);
705
+
706
+ assert.ok(!minified.includes('/* Comment */'));
707
+ assert.ok(!minified.includes('\n'));
708
+ });
709
+
710
+ it('preserves functional CSS', () => {
711
+ const css = '[layout~="flex"] { display: flex; }';
712
+ const minified = minifyCSS(css);
713
+
714
+ assert.ok(minified.includes('display:flex') || minified.includes('display: flex'));
715
+ });
716
+
717
+ });
718
+
719
+ });