@tenphi/tasty 0.0.0-snapshot.fafcbfe → 0.0.0-snapshot.fdb16ea

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 (309) hide show
  1. package/README.md +397 -185
  2. package/dist/async-storage-DKK-wTD4.js +44 -0
  3. package/dist/async-storage-DKK-wTD4.js.map +1 -0
  4. package/dist/babel-CMYf4JZ2.d.ts +83 -0
  5. package/dist/collector-Ctn5s74s.d.ts +145 -0
  6. package/dist/collector-DMSR6ANK.js +304 -0
  7. package/dist/collector-DMSR6ANK.js.map +1 -0
  8. package/dist/config-B23gZrfP.js +12317 -0
  9. package/dist/config-B23gZrfP.js.map +1 -0
  10. package/dist/config-CZx8_DCu.d.ts +1296 -0
  11. package/dist/context-CA8YKeMn.js +24 -0
  12. package/dist/context-CA8YKeMn.js.map +1 -0
  13. package/dist/core/index.d.ts +5 -33
  14. package/dist/core/index.js +6 -26
  15. package/dist/core-B1tyn69d.js +1573 -0
  16. package/dist/core-B1tyn69d.js.map +1 -0
  17. package/dist/css-writer-CvAxkR6S.js +390 -0
  18. package/dist/css-writer-CvAxkR6S.js.map +1 -0
  19. package/dist/format-global-rules-DklyaXv-.js +22 -0
  20. package/dist/format-global-rules-DklyaXv-.js.map +1 -0
  21. package/dist/format-rules-BCTWVvcS.js +130 -0
  22. package/dist/format-rules-BCTWVvcS.js.map +1 -0
  23. package/dist/hydrate-BCPvkJj3.js +37 -0
  24. package/dist/hydrate-BCPvkJj3.js.map +1 -0
  25. package/dist/index-B3o0aCYV.d.ts +1538 -0
  26. package/dist/index-CsvB0EXZ.d.ts +1909 -0
  27. package/dist/index.d.ts +5 -40
  28. package/dist/index.js +921 -32
  29. package/dist/index.js.map +1 -0
  30. package/dist/keyframes-Dxdx3KOo.js +493 -0
  31. package/dist/keyframes-Dxdx3KOo.js.map +1 -0
  32. package/dist/{utils/merge-styles.js → merge-styles-C-uwpoNW.js} +4 -6
  33. package/dist/merge-styles-C-uwpoNW.js.map +1 -0
  34. package/dist/{utils/merge-styles.d.ts → merge-styles-DJTSfz_M.d.ts} +3 -3
  35. package/dist/{utils/resolve-recipes.js → resolve-recipes-BuOvSEa2.js} +5 -8
  36. package/dist/resolve-recipes-BuOvSEa2.js.map +1 -0
  37. package/dist/ssr/astro-client.d.ts +1 -0
  38. package/dist/ssr/astro-client.js +19 -0
  39. package/dist/ssr/astro-client.js.map +1 -0
  40. package/dist/ssr/astro-middleware-static.d.ts +16 -0
  41. package/dist/ssr/astro-middleware-static.js +18 -0
  42. package/dist/ssr/astro-middleware-static.js.map +1 -0
  43. package/dist/ssr/astro-middleware.d.ts +17 -0
  44. package/dist/ssr/astro-middleware.js +19 -0
  45. package/dist/ssr/astro-middleware.js.map +1 -0
  46. package/dist/ssr/astro.d.ts +93 -0
  47. package/dist/ssr/astro.js +157 -0
  48. package/dist/ssr/astro.js.map +1 -0
  49. package/dist/ssr/index.d.ts +37 -0
  50. package/dist/ssr/index.js +10 -0
  51. package/dist/ssr/index.js.map +1 -0
  52. package/dist/ssr/next.d.ts +45 -0
  53. package/dist/ssr/next.js +74 -0
  54. package/dist/ssr/next.js.map +1 -0
  55. package/dist/static/index.d.ts +91 -5
  56. package/dist/static/index.js +49 -4
  57. package/dist/static/index.js.map +1 -0
  58. package/dist/static/inject.d.ts +5 -0
  59. package/dist/static/inject.js +17 -0
  60. package/dist/static/inject.js.map +1 -0
  61. package/dist/zero/babel.d.ts +2 -108
  62. package/dist/zero/babel.js +235 -39
  63. package/dist/zero/babel.js.map +1 -1
  64. package/dist/zero/index.d.ts +81 -3
  65. package/dist/zero/index.js +2 -4
  66. package/dist/zero/next.d.ts +56 -30
  67. package/dist/zero/next.js +106 -41
  68. package/dist/zero/next.js.map +1 -1
  69. package/docs/README.md +39 -0
  70. package/docs/adoption.md +323 -0
  71. package/docs/ai-agents.md +224 -0
  72. package/docs/comparison.md +448 -0
  73. package/docs/configuration.md +823 -0
  74. package/docs/debug.md +322 -0
  75. package/docs/design-system.md +455 -0
  76. package/docs/dsl.md +1021 -0
  77. package/docs/getting-started.md +238 -0
  78. package/docs/injector.md +614 -0
  79. package/docs/methodology.md +648 -0
  80. package/docs/migration-v3.md +285 -0
  81. package/docs/pipeline.md +741 -0
  82. package/docs/plugins.md +353 -0
  83. package/docs/react-api.md +681 -0
  84. package/docs/runtime-benchmarks.md +216 -0
  85. package/docs/ssr.md +451 -0
  86. package/docs/styles.md +645 -0
  87. package/docs/tasty-static.md +582 -0
  88. package/package.json +149 -40
  89. package/tasty.config.ts +6 -0
  90. package/dist/_virtual/_rolldown/runtime.js +0 -8
  91. package/dist/chunks/cacheKey.js +0 -70
  92. package/dist/chunks/cacheKey.js.map +0 -1
  93. package/dist/chunks/definitions.d.ts +0 -37
  94. package/dist/chunks/definitions.js +0 -260
  95. package/dist/chunks/definitions.js.map +0 -1
  96. package/dist/chunks/renderChunk.js +0 -61
  97. package/dist/chunks/renderChunk.js.map +0 -1
  98. package/dist/config.d.ts +0 -280
  99. package/dist/config.js +0 -403
  100. package/dist/config.js.map +0 -1
  101. package/dist/debug.d.ts +0 -204
  102. package/dist/debug.js +0 -733
  103. package/dist/debug.js.map +0 -1
  104. package/dist/hooks/useGlobalStyles.d.ts +0 -27
  105. package/dist/hooks/useGlobalStyles.js +0 -56
  106. package/dist/hooks/useGlobalStyles.js.map +0 -1
  107. package/dist/hooks/useKeyframes.d.ts +0 -56
  108. package/dist/hooks/useKeyframes.js +0 -54
  109. package/dist/hooks/useKeyframes.js.map +0 -1
  110. package/dist/hooks/useProperty.d.ts +0 -79
  111. package/dist/hooks/useProperty.js +0 -91
  112. package/dist/hooks/useProperty.js.map +0 -1
  113. package/dist/hooks/useRawCSS.d.ts +0 -53
  114. package/dist/hooks/useRawCSS.js +0 -28
  115. package/dist/hooks/useRawCSS.js.map +0 -1
  116. package/dist/hooks/useStyles.d.ts +0 -40
  117. package/dist/hooks/useStyles.js +0 -169
  118. package/dist/hooks/useStyles.js.map +0 -1
  119. package/dist/injector/index.d.ts +0 -157
  120. package/dist/injector/index.js +0 -154
  121. package/dist/injector/index.js.map +0 -1
  122. package/dist/injector/injector.d.ts +0 -139
  123. package/dist/injector/injector.js +0 -404
  124. package/dist/injector/injector.js.map +0 -1
  125. package/dist/injector/sheet-manager.d.ts +0 -127
  126. package/dist/injector/sheet-manager.js +0 -714
  127. package/dist/injector/sheet-manager.js.map +0 -1
  128. package/dist/injector/types.d.ts +0 -135
  129. package/dist/keyframes/index.js +0 -206
  130. package/dist/keyframes/index.js.map +0 -1
  131. package/dist/parser/classify.js +0 -319
  132. package/dist/parser/classify.js.map +0 -1
  133. package/dist/parser/const.js +0 -33
  134. package/dist/parser/const.js.map +0 -1
  135. package/dist/parser/lru.js +0 -109
  136. package/dist/parser/lru.js.map +0 -1
  137. package/dist/parser/parser.d.ts +0 -25
  138. package/dist/parser/parser.js +0 -116
  139. package/dist/parser/parser.js.map +0 -1
  140. package/dist/parser/tokenizer.js +0 -69
  141. package/dist/parser/tokenizer.js.map +0 -1
  142. package/dist/parser/types.d.ts +0 -51
  143. package/dist/parser/types.js +0 -46
  144. package/dist/parser/types.js.map +0 -1
  145. package/dist/pipeline/conditions.d.ts +0 -134
  146. package/dist/pipeline/conditions.js +0 -400
  147. package/dist/pipeline/conditions.js.map +0 -1
  148. package/dist/pipeline/exclusive.js +0 -231
  149. package/dist/pipeline/exclusive.js.map +0 -1
  150. package/dist/pipeline/index.d.ts +0 -53
  151. package/dist/pipeline/index.js +0 -641
  152. package/dist/pipeline/index.js.map +0 -1
  153. package/dist/pipeline/materialize.js +0 -908
  154. package/dist/pipeline/materialize.js.map +0 -1
  155. package/dist/pipeline/parseStateKey.d.ts +0 -15
  156. package/dist/pipeline/parseStateKey.js +0 -430
  157. package/dist/pipeline/parseStateKey.js.map +0 -1
  158. package/dist/pipeline/simplify.js +0 -557
  159. package/dist/pipeline/simplify.js.map +0 -1
  160. package/dist/plugins/okhsl-plugin.d.ts +0 -35
  161. package/dist/plugins/okhsl-plugin.js +0 -371
  162. package/dist/plugins/okhsl-plugin.js.map +0 -1
  163. package/dist/plugins/types.d.ts +0 -69
  164. package/dist/properties/index.js +0 -158
  165. package/dist/properties/index.js.map +0 -1
  166. package/dist/states/index.d.ts +0 -49
  167. package/dist/states/index.js +0 -416
  168. package/dist/states/index.js.map +0 -1
  169. package/dist/static/tastyStatic.d.ts +0 -46
  170. package/dist/static/tastyStatic.js +0 -31
  171. package/dist/static/tastyStatic.js.map +0 -1
  172. package/dist/static/types.d.ts +0 -49
  173. package/dist/static/types.js +0 -24
  174. package/dist/static/types.js.map +0 -1
  175. package/dist/styles/align.d.ts +0 -15
  176. package/dist/styles/align.js +0 -14
  177. package/dist/styles/align.js.map +0 -1
  178. package/dist/styles/border.d.ts +0 -25
  179. package/dist/styles/border.js +0 -114
  180. package/dist/styles/border.js.map +0 -1
  181. package/dist/styles/color.d.ts +0 -14
  182. package/dist/styles/color.js +0 -23
  183. package/dist/styles/color.js.map +0 -1
  184. package/dist/styles/createStyle.js +0 -77
  185. package/dist/styles/createStyle.js.map +0 -1
  186. package/dist/styles/dimension.js +0 -97
  187. package/dist/styles/dimension.js.map +0 -1
  188. package/dist/styles/display.d.ts +0 -37
  189. package/dist/styles/display.js +0 -67
  190. package/dist/styles/display.js.map +0 -1
  191. package/dist/styles/fade.d.ts +0 -15
  192. package/dist/styles/fade.js +0 -58
  193. package/dist/styles/fade.js.map +0 -1
  194. package/dist/styles/fill.d.ts +0 -44
  195. package/dist/styles/fill.js +0 -51
  196. package/dist/styles/fill.js.map +0 -1
  197. package/dist/styles/flow.d.ts +0 -16
  198. package/dist/styles/flow.js +0 -12
  199. package/dist/styles/flow.js.map +0 -1
  200. package/dist/styles/gap.d.ts +0 -31
  201. package/dist/styles/gap.js +0 -37
  202. package/dist/styles/gap.js.map +0 -1
  203. package/dist/styles/height.d.ts +0 -17
  204. package/dist/styles/height.js +0 -20
  205. package/dist/styles/height.js.map +0 -1
  206. package/dist/styles/index.d.ts +0 -2
  207. package/dist/styles/index.js +0 -9
  208. package/dist/styles/index.js.map +0 -1
  209. package/dist/styles/inset.d.ts +0 -52
  210. package/dist/styles/inset.js +0 -150
  211. package/dist/styles/inset.js.map +0 -1
  212. package/dist/styles/justify.d.ts +0 -15
  213. package/dist/styles/justify.js +0 -14
  214. package/dist/styles/justify.js.map +0 -1
  215. package/dist/styles/list.d.ts +0 -16
  216. package/dist/styles/list.js +0 -98
  217. package/dist/styles/list.js.map +0 -1
  218. package/dist/styles/margin.d.ts +0 -24
  219. package/dist/styles/margin.js +0 -104
  220. package/dist/styles/margin.js.map +0 -1
  221. package/dist/styles/outline.d.ts +0 -29
  222. package/dist/styles/outline.js +0 -65
  223. package/dist/styles/outline.js.map +0 -1
  224. package/dist/styles/padding.d.ts +0 -24
  225. package/dist/styles/padding.js +0 -104
  226. package/dist/styles/padding.js.map +0 -1
  227. package/dist/styles/predefined.d.ts +0 -73
  228. package/dist/styles/predefined.js +0 -241
  229. package/dist/styles/predefined.js.map +0 -1
  230. package/dist/styles/preset.d.ts +0 -47
  231. package/dist/styles/preset.js +0 -126
  232. package/dist/styles/preset.js.map +0 -1
  233. package/dist/styles/radius.d.ts +0 -14
  234. package/dist/styles/radius.js +0 -51
  235. package/dist/styles/radius.js.map +0 -1
  236. package/dist/styles/scrollbar.d.ts +0 -21
  237. package/dist/styles/scrollbar.js +0 -105
  238. package/dist/styles/scrollbar.js.map +0 -1
  239. package/dist/styles/shadow.d.ts +0 -14
  240. package/dist/styles/shadow.js +0 -24
  241. package/dist/styles/shadow.js.map +0 -1
  242. package/dist/styles/styledScrollbar.d.ts +0 -47
  243. package/dist/styles/styledScrollbar.js +0 -38
  244. package/dist/styles/styledScrollbar.js.map +0 -1
  245. package/dist/styles/transition.d.ts +0 -14
  246. package/dist/styles/transition.js +0 -158
  247. package/dist/styles/transition.js.map +0 -1
  248. package/dist/styles/types.d.ts +0 -498
  249. package/dist/styles/width.d.ts +0 -17
  250. package/dist/styles/width.js +0 -20
  251. package/dist/styles/width.js.map +0 -1
  252. package/dist/tasty.d.ts +0 -982
  253. package/dist/tasty.js +0 -191
  254. package/dist/tasty.js.map +0 -1
  255. package/dist/tokens/typography.d.ts +0 -19
  256. package/dist/tokens/typography.js +0 -237
  257. package/dist/tokens/typography.js.map +0 -1
  258. package/dist/types.d.ts +0 -184
  259. package/dist/utils/cache-wrapper.js +0 -26
  260. package/dist/utils/cache-wrapper.js.map +0 -1
  261. package/dist/utils/case-converter.js +0 -8
  262. package/dist/utils/case-converter.js.map +0 -1
  263. package/dist/utils/colors.d.ts +0 -5
  264. package/dist/utils/colors.js +0 -9
  265. package/dist/utils/colors.js.map +0 -1
  266. package/dist/utils/css-types.d.ts +0 -7
  267. package/dist/utils/dotize.d.ts +0 -26
  268. package/dist/utils/dotize.js +0 -122
  269. package/dist/utils/dotize.js.map +0 -1
  270. package/dist/utils/filter-base-props.d.ts +0 -15
  271. package/dist/utils/filter-base-props.js +0 -45
  272. package/dist/utils/filter-base-props.js.map +0 -1
  273. package/dist/utils/get-display-name.d.ts +0 -7
  274. package/dist/utils/get-display-name.js +0 -10
  275. package/dist/utils/get-display-name.js.map +0 -1
  276. package/dist/utils/hsl-to-rgb.js +0 -38
  277. package/dist/utils/hsl-to-rgb.js.map +0 -1
  278. package/dist/utils/is-dev-env.js +0 -19
  279. package/dist/utils/is-dev-env.js.map +0 -1
  280. package/dist/utils/is-valid-element-type.js +0 -15
  281. package/dist/utils/is-valid-element-type.js.map +0 -1
  282. package/dist/utils/merge-styles.js.map +0 -1
  283. package/dist/utils/mod-attrs.d.ts +0 -8
  284. package/dist/utils/mod-attrs.js +0 -21
  285. package/dist/utils/mod-attrs.js.map +0 -1
  286. package/dist/utils/okhsl-to-rgb.js +0 -296
  287. package/dist/utils/okhsl-to-rgb.js.map +0 -1
  288. package/dist/utils/process-tokens.d.ts +0 -31
  289. package/dist/utils/process-tokens.js +0 -171
  290. package/dist/utils/process-tokens.js.map +0 -1
  291. package/dist/utils/resolve-recipes.d.ts +0 -17
  292. package/dist/utils/resolve-recipes.js.map +0 -1
  293. package/dist/utils/string.js +0 -8
  294. package/dist/utils/string.js.map +0 -1
  295. package/dist/utils/styles.d.ts +0 -183
  296. package/dist/utils/styles.js +0 -585
  297. package/dist/utils/styles.js.map +0 -1
  298. package/dist/utils/typography.d.ts +0 -36
  299. package/dist/utils/typography.js +0 -53
  300. package/dist/utils/typography.js.map +0 -1
  301. package/dist/utils/warnings.d.ts +0 -16
  302. package/dist/utils/warnings.js +0 -16
  303. package/dist/utils/warnings.js.map +0 -1
  304. package/dist/zero/css-writer.d.ts +0 -45
  305. package/dist/zero/css-writer.js +0 -74
  306. package/dist/zero/css-writer.js.map +0 -1
  307. package/dist/zero/extractor.d.ts +0 -24
  308. package/dist/zero/extractor.js +0 -150
  309. package/dist/zero/extractor.js.map +0 -1
package/docs/debug.md ADDED
@@ -0,0 +1,322 @@
1
+ # Tasty Debug Utilities
2
+
3
+ Runtime CSS inspection and diagnostics for the Tasty styling system. Inspect injected styles, measure cache performance, analyze style chunks, and troubleshoot CSS issues — all from the browser console.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ `tastyDebug` is a diagnostic object that exposes Tasty's runtime CSS state. It is designed for development use but can be manually installed in production for debugging.
10
+
11
+ In development mode (`isDevEnv()` returns `true`), `tastyDebug` is automatically installed on `window.tastyDebug`. In production, install it manually when needed.
12
+
13
+ All methods **log to the console by default**. Pass `{ raw: true }` to suppress logging and only return data.
14
+
15
+ > **Note (2.0.0+):** Class names use a content-addressed base36 hash format (e.g. `t3a5f`) instead of the previous sequential `t{number}` format. Cross-environment hydration reads the rendered class list from `window.__TASTY__` (the legacy `window.__TASTY_SSR_CACHE__` global was removed in 2.0.0).
16
+
17
+ ---
18
+
19
+ ## Quick Start
20
+
21
+ ```typescript
22
+ // Auto-installed in dev mode. Otherwise:
23
+ import { tastyDebug } from '@tenphi/tasty';
24
+ tastyDebug.install();
25
+
26
+ // Print a quick-start guide
27
+ tastyDebug.help();
28
+
29
+ // Get a comprehensive overview (logged automatically)
30
+ tastyDebug.summary();
31
+
32
+ // See all active CSS
33
+ tastyDebug.css('active');
34
+
35
+ // Inspect a specific element
36
+ tastyDebug.inspect('.my-button');
37
+
38
+ // Silent mode — return data only, no console output
39
+ const data = tastyDebug.summary({ raw: true });
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Options
45
+
46
+ All methods accept a shared options object:
47
+
48
+ ```typescript
49
+ interface DebugOptions {
50
+ root?: Document | ShadowRoot; // Target root (default: document)
51
+ raw?: boolean; // Suppress console logging (default: false)
52
+ }
53
+ ```
54
+
55
+ When `raw` is `false` (the default), results are logged to the console **and** returned. When `raw` is `true`, results are returned silently.
56
+
57
+ ---
58
+
59
+ ## API Reference
60
+
61
+ ### `css(target, opts?): string`
62
+
63
+ Retrieves CSS text for a given target. Logs the result with rule count and size.
64
+
65
+ **Targets:**
66
+
67
+ | Target | Description |
68
+ |---|---|
69
+ | `'all'` | All tasty CSS (component + global + raw) |
70
+ | `'active'` | CSS for classes currently in the DOM |
71
+ | `'unused'` | CSS for injected classes no element carries (cached but not rendered) |
72
+ | `'global'` | Only global CSS (from `injectGlobal`) |
73
+ | `'page'` | All CSS on the page (including non-tasty) |
74
+ | `'t3a5f'` | CSS for a specific tasty class (class names are `t` + base36 hash) |
75
+ | `['t3a5f', 't9k2']` | CSS for multiple tasty classes |
76
+ | `'.my-button'` | CSS affecting a DOM element (by selector) |
77
+ | `element` | CSS affecting a DOM element (by reference) |
78
+
79
+ **Extra options:**
80
+
81
+ ```typescript
82
+ interface CSSOptions extends DebugOptions {
83
+ prettify?: boolean; // Format output (default: true)
84
+ source?: boolean; // Read original CSS instead of live CSSOM (default: false, dev-mode only)
85
+ }
86
+ ```
87
+
88
+ ```typescript
89
+ // Active CSS with stats
90
+ tastyDebug.css('active');
91
+
92
+ // Specific class, silent
93
+ const css = tastyDebug.css('t3a5f', { raw: true });
94
+
95
+ // Compare original vs browser-parsed CSS (dev mode only)
96
+ tastyDebug.css('t3a5f'); // live CSSOM
97
+ tastyDebug.css('t3a5f', { source: true }); // original output
98
+
99
+ // Shadow DOM
100
+ tastyDebug.css('all', { root: shadowRoot });
101
+ ```
102
+
103
+ The `source` option reads from `RuleInfo.cssText`, which is only populated when `devMode` is active (development environment or `localStorage.TASTY_DEBUG = 'true'`). In production without debug mode, it falls back to the live CSSOM with a warning.
104
+
105
+ ---
106
+
107
+ ### `inspect(target, opts?): InspectResult`
108
+
109
+ Inspects a DOM element and returns detailed information about its tasty styles, including chunk assignments.
110
+
111
+ ```typescript
112
+ interface InspectResult {
113
+ element?: Element | null;
114
+ classes: string[]; // Tasty classes on the element
115
+ chunks: DebugChunkInfo[]; // Chunk assignment per class
116
+ css: string; // Prettified CSS
117
+ size: number; // CSS size in characters
118
+ rules: number; // Number of CSS rule blocks
119
+ }
120
+
121
+ interface DebugChunkInfo {
122
+ className: string;
123
+ chunkName: string | null; // e.g., 'appearance', 'font', 'dimension'
124
+ }
125
+ ```
126
+
127
+ ```typescript
128
+ tastyDebug.inspect('.my-card');
129
+ // Logs: inspect div — 3 classes, 5 rules, 1.2KB
130
+ // Chunks: t3a5f→appearance, t9k2→font, tb71→dimension
131
+
132
+ // Silent
133
+ const result = tastyDebug.inspect('.my-card', { raw: true });
134
+ console.log(result.classes); // ['t3a5f', 't9k2', 'tb71']
135
+ console.log(result.rules); // 5
136
+ ```
137
+
138
+ ---
139
+
140
+ ### `summary(opts?): Summary`
141
+
142
+ One-shot overview of the entire Tasty CSS state. Logs a compact report.
143
+
144
+ ```typescript
145
+ interface Summary {
146
+ activeClasses: string[];
147
+ unusedClasses: string[];
148
+ totalStyledClasses: string[];
149
+
150
+ activeCSSSize: number;
151
+ unusedCSSSize: number;
152
+ globalCSSSize: number;
153
+ rawCSSSize: number;
154
+ keyframesCSSSize: number;
155
+ propertyCSSSize: number;
156
+ totalCSSSize: number;
157
+
158
+ activeRuleCount: number;
159
+ unusedRuleCount: number;
160
+ globalRuleCount: number;
161
+ rawRuleCount: number;
162
+ keyframesRuleCount: number;
163
+ propertyRuleCount: number;
164
+ totalRuleCount: number;
165
+
166
+ metrics: CacheMetrics | null;
167
+ definedProperties: string[];
168
+ definedKeyframes: { name: string; refCount: number }[];
169
+ chunkBreakdown: ChunkBreakdown;
170
+ }
171
+ ```
172
+
173
+ ```typescript
174
+ // Logged automatically
175
+ tastyDebug.summary();
176
+ // Output:
177
+ // Active: 42 classes, 186 rules, 12.4KB
178
+ // Unused: 3 classes, 8 rules, 0.5KB
179
+ // Global: 12 rules, 1.1KB
180
+ // Total: 45 classes, 206 rules, 14.0KB
181
+ // Cache: 94.2% hit rate (312 lookups)
182
+
183
+ // Silent
184
+ const s = tastyDebug.summary({ raw: true });
185
+ console.log(s.totalRuleCount); // 206
186
+ ```
187
+
188
+ ---
189
+
190
+ ### `chunks(opts?): ChunkBreakdown`
191
+
192
+ Breakdown of styles by chunk type.
193
+
194
+ ```typescript
195
+ interface ChunkBreakdown {
196
+ byChunk: Record<string, {
197
+ classes: string[];
198
+ cssSize: number;
199
+ ruleCount: number;
200
+ }>;
201
+ totalChunkTypes: number;
202
+ totalClasses: number;
203
+ }
204
+ ```
205
+
206
+ ```typescript
207
+ tastyDebug.chunks();
208
+ // Output:
209
+ // appearance: 24 cls, 48 rules, 3.2KB
210
+ // font: 18 cls, 18 rules, 1.1KB
211
+ // dimension: 31 cls, 45 rules, 2.4KB
212
+ ```
213
+
214
+ Chunk types: `combined`, `appearance`, `font`, `dimension`, `display`, `layout`, `position`, `misc`, `subcomponents`.
215
+
216
+ ---
217
+
218
+ ### `cache(opts?): CacheStatus`
219
+
220
+ Cache state and performance metrics.
221
+
222
+ ```typescript
223
+ interface CacheStatus {
224
+ classes: {
225
+ active: string[];
226
+ unused: string[];
227
+ all: string[];
228
+ };
229
+ metrics: CacheMetrics | null;
230
+ }
231
+ ```
232
+
233
+ ```typescript
234
+ tastyDebug.cache();
235
+ // Output:
236
+ // Active: 42, Unused: 3
237
+ // Hits: 294, Misses: 18, Rate: 94.2%
238
+ ```
239
+
240
+ ---
241
+
242
+ ### `cleanup(opts?): void`
243
+
244
+ Removes every injected style that is neither carried by an element nor pinned by
245
+ an outstanding `inject()` handle — the same set `summary()` reports as unused.
246
+ Equivalent to `gc({ force: true })`.
247
+
248
+ ```typescript
249
+ tastyDebug.cleanup();
250
+ tastyDebug.cleanup({ root: shadowRoot });
251
+ ```
252
+
253
+ ---
254
+
255
+ ### `help(): void`
256
+
257
+ Prints a quick-start guide to the console.
258
+
259
+ ```typescript
260
+ tastyDebug.help();
261
+ ```
262
+
263
+ ---
264
+
265
+ ### `install(): void`
266
+
267
+ Attaches `tastyDebug` to `window.tastyDebug`. Called automatically in development mode.
268
+
269
+ ```typescript
270
+ import { tastyDebug } from '@tenphi/tasty';
271
+ tastyDebug.install();
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Shadow DOM Support
277
+
278
+ All methods accept a `root` option to target a Shadow DOM:
279
+
280
+ ```typescript
281
+ const shadowRoot = host.shadowRoot;
282
+ tastyDebug.css('all', { root: shadowRoot });
283
+ tastyDebug.inspect('.shadow-component', { root: shadowRoot });
284
+ tastyDebug.summary({ root: shadowRoot });
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Common Workflows
290
+
291
+ ### Debugging a component's styles
292
+
293
+ ```typescript
294
+ // 1. Inspect the element
295
+ tastyDebug.inspect('.my-button');
296
+
297
+ // 2. See CSS for a specific class
298
+ tastyDebug.css('t3a5f');
299
+
300
+ // 3. Compare original vs browser-parsed (dev mode)
301
+ tastyDebug.css('t3a5f', { source: true });
302
+ ```
303
+
304
+ ### Checking cache efficiency
305
+
306
+ ```typescript
307
+ const { metrics } = tastyDebug.cache({ raw: true });
308
+ if (metrics) {
309
+ const total = metrics.hits + metrics.misses;
310
+ const rate = total > 0 ? ((metrics.hits / total) * 100).toFixed(1) : 0;
311
+ console.log(`Cache hit rate: ${rate}%`);
312
+ }
313
+ ```
314
+
315
+ ### Monitoring CSS growth
316
+
317
+ ```typescript
318
+ const s = tastyDebug.summary({ raw: true });
319
+ console.log(`Total: ${s.totalRuleCount} rules, ${(s.totalCSSSize / 1024).toFixed(1)}KB`);
320
+ console.log(`Active: ${s.activeRuleCount} rules`);
321
+ console.log(`Unused: ${s.unusedRuleCount} rules`);
322
+ ```