@tenphi/tasty 0.0.0-snapshot.bbd10c7 → 0.0.0-snapshot.bbfcd75
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.
- package/README.md +196 -140
- package/dist/babel-Zs1Q03qt.d.ts +83 -0
- package/dist/chunks/async-storage-CG5HnUT5.js +20 -0
- package/dist/chunks/async-storage-CG5HnUT5.js.map +1 -0
- package/dist/chunks/build-config-CUQVwdWF.js +42 -0
- package/dist/chunks/build-config-CUQVwdWF.js.map +1 -0
- package/dist/chunks/collector-B0LTHw6Z.js +208 -0
- package/dist/chunks/collector-B0LTHw6Z.js.map +1 -0
- package/dist/chunks/config-engine-C3pF9EK9.js +267 -0
- package/dist/chunks/config-engine-C3pF9EK9.js.map +1 -0
- package/dist/chunks/css-definitions-D_it4XZH.js +875 -0
- package/dist/chunks/css-definitions-D_it4XZH.js.map +1 -0
- package/dist/chunks/css-resources-BN8apgxt.js +142 -0
- package/dist/chunks/css-resources-BN8apgxt.js.map +1 -0
- package/dist/{debug.js → chunks/debug-C9LeNVoJ.js} +187 -139
- package/dist/chunks/debug-C9LeNVoJ.js.map +1 -0
- package/dist/chunks/dsl-C5yuAn41.js +1373 -0
- package/dist/chunks/dsl-C5yuAn41.js.map +1 -0
- package/dist/chunks/hydration-TRcz5vnk.js +41 -0
- package/dist/chunks/hydration-TRcz5vnk.js.map +1 -0
- package/dist/chunks/react-runtime-O-OUrKLH.js +557 -0
- package/dist/chunks/react-runtime-O-OUrKLH.js.map +1 -0
- package/dist/chunks/runtime-engine-DvnE2g-E.js +2437 -0
- package/dist/chunks/runtime-engine-DvnE2g-E.js.map +1 -0
- package/dist/chunks/runtime-state-BTDqSYBk.js +127 -0
- package/dist/chunks/runtime-state-BTDqSYBk.js.map +1 -0
- package/dist/{utils/merge-styles.js → chunks/shared-utils-DWA4LjIa.js} +55 -55
- package/dist/chunks/shared-utils-DWA4LjIa.js.map +1 -0
- package/dist/chunks/style-engine-C1ECBZxR.js +5131 -0
- package/dist/chunks/style-engine-C1ECBZxR.js.map +1 -0
- package/dist/{zero/extractor.js → chunks/zero-engine-B6EnYcXY.js} +89 -82
- package/dist/chunks/zero-engine-B6EnYcXY.js.map +1 -0
- package/dist/collector-hl5KNH7k.d.ts +165 -0
- package/dist/config-DWL1ZYue.d.ts +1358 -0
- package/dist/core/index.d.ts +5 -34
- package/dist/core/index.js +9 -27
- package/dist/index-D9N9GV24.d.ts +1947 -0
- package/dist/index.d.ts +5 -51
- package/dist/index.js +11 -36
- package/dist/{utils/merge-styles.d.ts → merge-styles-C_oMoJVd.d.ts} +3 -3
- package/dist/ssr/astro-client.js +6 -0
- package/dist/ssr/astro-client.js.map +1 -0
- package/dist/ssr/astro-middleware-extract-static.d.ts +11 -0
- package/dist/ssr/astro-middleware-extract-static.js +9 -0
- package/dist/ssr/astro-middleware-extract-static.js.map +1 -0
- package/dist/ssr/astro-middleware-extract.d.ts +11 -0
- package/dist/ssr/astro-middleware-extract.js +9 -0
- package/dist/ssr/astro-middleware-extract.js.map +1 -0
- package/dist/ssr/astro-middleware-static.d.ts +18 -0
- package/dist/ssr/astro-middleware-static.js +7 -0
- package/dist/ssr/astro-middleware-static.js.map +1 -0
- package/dist/ssr/astro-middleware.d.ts +19 -0
- package/dist/ssr/astro-middleware.js +7 -0
- package/dist/ssr/astro-middleware.js.map +1 -0
- package/dist/ssr/astro.d.ts +117 -11
- package/dist/ssr/astro.js +204 -48
- package/dist/ssr/astro.js.map +1 -1
- package/dist/ssr/index.d.ts +37 -4
- package/dist/ssr/index.js +6 -6
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/next-config.d.ts +66 -0
- package/dist/ssr/next-config.js +124 -0
- package/dist/ssr/next-config.js.map +1 -0
- package/dist/ssr/next.d.ts +14 -5
- package/dist/ssr/next.js +31 -46
- package/dist/ssr/next.js.map +1 -1
- package/dist/static/index.d.ts +91 -5
- package/dist/static/index.js +31 -3
- package/dist/static/index.js.map +1 -0
- package/dist/static/inject.js.map +1 -1
- package/dist/types-jKZNpias.d.ts +1616 -0
- package/dist/zero/babel.d.ts +2 -182
- package/dist/zero/babel.js +82 -113
- package/dist/zero/babel.js.map +1 -1
- package/dist/zero/index.d.ts +81 -3
- package/dist/zero/index.js +2 -3
- package/dist/zero/next.d.ts +1 -1
- package/dist/zero/next.js +0 -31
- package/dist/zero/next.js.map +1 -1
- package/docs/README.md +20 -12
- package/docs/adoption.md +59 -32
- package/docs/ai-agents.md +229 -0
- package/docs/comparison.md +76 -48
- package/docs/configuration.md +566 -69
- package/docs/debug.md +37 -23
- package/docs/design-system.md +63 -32
- package/docs/dsl.md +527 -179
- package/docs/getting-started.md +62 -41
- package/docs/injector.md +157 -51
- package/docs/methodology.md +69 -37
- package/docs/migration-v3.md +285 -0
- package/docs/pipeline.md +744 -0
- package/docs/plugins.md +353 -0
- package/docs/{runtime.md → react-api.md} +176 -67
- package/docs/runtime-benchmarks.md +377 -0
- package/docs/ssr.md +350 -94
- package/docs/styles.md +108 -27
- package/docs/tasty-static.md +149 -87
- package/package.json +121 -23
- package/tasty.config.ts +6 -0
- package/dist/_virtual/_rolldown/runtime.js +0 -7
- package/dist/chunks/cacheKey.js +0 -77
- package/dist/chunks/cacheKey.js.map +0 -1
- package/dist/chunks/definitions.d.ts +0 -37
- package/dist/chunks/definitions.js +0 -258
- package/dist/chunks/definitions.js.map +0 -1
- package/dist/chunks/index.d.ts +0 -1
- package/dist/chunks/renderChunk.d.ts +0 -1
- package/dist/chunks/renderChunk.js +0 -59
- package/dist/chunks/renderChunk.js.map +0 -1
- package/dist/compute-styles.d.ts +0 -31
- package/dist/compute-styles.js +0 -356
- package/dist/compute-styles.js.map +0 -1
- package/dist/config.d.ts +0 -372
- package/dist/config.js +0 -507
- package/dist/config.js.map +0 -1
- package/dist/counter-style/index.js +0 -51
- package/dist/counter-style/index.js.map +0 -1
- package/dist/debug.d.ts +0 -89
- package/dist/debug.js.map +0 -1
- package/dist/font-face/index.js +0 -63
- package/dist/font-face/index.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -7
- package/dist/hooks/useCounterStyle.d.ts +0 -50
- package/dist/hooks/useCounterStyle.js +0 -45
- package/dist/hooks/useCounterStyle.js.map +0 -1
- package/dist/hooks/useFontFace.d.ts +0 -43
- package/dist/hooks/useFontFace.js +0 -69
- package/dist/hooks/useFontFace.js.map +0 -1
- package/dist/hooks/useGlobalStyles.d.ts +0 -30
- package/dist/hooks/useGlobalStyles.js +0 -77
- package/dist/hooks/useGlobalStyles.js.map +0 -1
- package/dist/hooks/useKeyframes.d.ts +0 -56
- package/dist/hooks/useKeyframes.js +0 -63
- package/dist/hooks/useKeyframes.js.map +0 -1
- package/dist/hooks/useProperty.d.ts +0 -79
- package/dist/hooks/useProperty.js +0 -108
- package/dist/hooks/useProperty.js.map +0 -1
- package/dist/hooks/useRawCSS.d.ts +0 -53
- package/dist/hooks/useRawCSS.js +0 -34
- package/dist/hooks/useRawCSS.js.map +0 -1
- package/dist/hooks/useStyles.d.ts +0 -40
- package/dist/hooks/useStyles.js +0 -29
- package/dist/hooks/useStyles.js.map +0 -1
- package/dist/injector/index.d.ts +0 -166
- package/dist/injector/index.js +0 -166
- package/dist/injector/index.js.map +0 -1
- package/dist/injector/injector.d.ts +0 -166
- package/dist/injector/injector.js +0 -464
- package/dist/injector/injector.js.map +0 -1
- package/dist/injector/sheet-manager.d.ts +0 -136
- package/dist/injector/sheet-manager.js +0 -733
- package/dist/injector/sheet-manager.js.map +0 -1
- package/dist/injector/types.d.ts +0 -204
- package/dist/keyframes/index.js +0 -206
- package/dist/keyframes/index.js.map +0 -1
- package/dist/parser/classify.js +0 -319
- package/dist/parser/classify.js.map +0 -1
- package/dist/parser/const.js +0 -60
- package/dist/parser/const.js.map +0 -1
- package/dist/parser/lru.js +0 -109
- package/dist/parser/lru.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -25
- package/dist/parser/parser.js +0 -115
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/tokenizer.js +0 -69
- package/dist/parser/tokenizer.js.map +0 -1
- package/dist/parser/types.d.ts +0 -51
- package/dist/parser/types.js +0 -46
- package/dist/parser/types.js.map +0 -1
- package/dist/pipeline/conditions.d.ts +0 -134
- package/dist/pipeline/conditions.js +0 -406
- package/dist/pipeline/conditions.js.map +0 -1
- package/dist/pipeline/exclusive.js +0 -230
- package/dist/pipeline/exclusive.js.map +0 -1
- package/dist/pipeline/index.d.ts +0 -55
- package/dist/pipeline/index.js +0 -708
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/materialize.js +0 -1103
- package/dist/pipeline/materialize.js.map +0 -1
- package/dist/pipeline/parseStateKey.d.ts +0 -15
- package/dist/pipeline/parseStateKey.js +0 -446
- package/dist/pipeline/parseStateKey.js.map +0 -1
- package/dist/pipeline/simplify.js +0 -515
- package/dist/pipeline/simplify.js.map +0 -1
- package/dist/pipeline/warnings.js +0 -18
- package/dist/pipeline/warnings.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -2
- package/dist/plugins/okhsl-plugin.d.ts +0 -35
- package/dist/plugins/okhsl-plugin.js +0 -97
- package/dist/plugins/okhsl-plugin.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -76
- package/dist/properties/index.js +0 -222
- package/dist/properties/index.js.map +0 -1
- package/dist/properties/property-type-resolver.d.ts +0 -24
- package/dist/properties/property-type-resolver.js +0 -90
- package/dist/properties/property-type-resolver.js.map +0 -1
- package/dist/ssr/async-storage.d.ts +0 -17
- package/dist/ssr/async-storage.js +0 -34
- package/dist/ssr/async-storage.js.map +0 -1
- package/dist/ssr/collect-auto-properties.js +0 -39
- package/dist/ssr/collect-auto-properties.js.map +0 -1
- package/dist/ssr/collector.d.ts +0 -102
- package/dist/ssr/collector.js +0 -219
- package/dist/ssr/collector.js.map +0 -1
- package/dist/ssr/format-global-rules.js +0 -22
- package/dist/ssr/format-global-rules.js.map +0 -1
- package/dist/ssr/format-keyframes.js +0 -69
- package/dist/ssr/format-keyframes.js.map +0 -1
- package/dist/ssr/format-property.js +0 -49
- package/dist/ssr/format-property.js.map +0 -1
- package/dist/ssr/format-rules.js +0 -73
- package/dist/ssr/format-rules.js.map +0 -1
- package/dist/ssr/hydrate.d.ts +0 -22
- package/dist/ssr/hydrate.js +0 -49
- package/dist/ssr/hydrate.js.map +0 -1
- package/dist/ssr/ssr-collector-ref.js +0 -12
- package/dist/ssr/ssr-collector-ref.js.map +0 -1
- package/dist/states/index.d.ts +0 -49
- package/dist/states/index.js +0 -170
- package/dist/states/index.js.map +0 -1
- package/dist/static/tastyStatic.d.ts +0 -46
- package/dist/static/tastyStatic.js +0 -30
- package/dist/static/tastyStatic.js.map +0 -1
- package/dist/static/types.d.ts +0 -49
- package/dist/static/types.js +0 -24
- package/dist/static/types.js.map +0 -1
- package/dist/styles/border.d.ts +0 -25
- package/dist/styles/border.js +0 -120
- package/dist/styles/border.js.map +0 -1
- package/dist/styles/color.d.ts +0 -14
- package/dist/styles/color.js +0 -26
- package/dist/styles/color.js.map +0 -1
- package/dist/styles/const.js +0 -17
- package/dist/styles/const.js.map +0 -1
- package/dist/styles/createStyle.js +0 -79
- package/dist/styles/createStyle.js.map +0 -1
- package/dist/styles/dimension.js +0 -109
- package/dist/styles/dimension.js.map +0 -1
- package/dist/styles/directional.js +0 -133
- package/dist/styles/directional.js.map +0 -1
- package/dist/styles/display.d.ts +0 -30
- package/dist/styles/display.js +0 -73
- package/dist/styles/display.js.map +0 -1
- package/dist/styles/fade.d.ts +0 -15
- package/dist/styles/fade.js +0 -62
- package/dist/styles/fade.js.map +0 -1
- package/dist/styles/fill.d.ts +0 -42
- package/dist/styles/fill.js +0 -51
- package/dist/styles/fill.js.map +0 -1
- package/dist/styles/flow.d.ts +0 -16
- package/dist/styles/flow.js +0 -12
- package/dist/styles/flow.js.map +0 -1
- package/dist/styles/gap.d.ts +0 -31
- package/dist/styles/gap.js +0 -38
- package/dist/styles/gap.js.map +0 -1
- package/dist/styles/height.d.ts +0 -17
- package/dist/styles/height.js +0 -19
- package/dist/styles/height.js.map +0 -1
- package/dist/styles/index.d.ts +0 -1
- package/dist/styles/index.js +0 -8
- package/dist/styles/index.js.map +0 -1
- package/dist/styles/inset.d.ts +0 -24
- package/dist/styles/inset.js +0 -34
- package/dist/styles/inset.js.map +0 -1
- package/dist/styles/list.d.ts +0 -16
- package/dist/styles/list.js +0 -100
- package/dist/styles/list.js.map +0 -1
- package/dist/styles/margin.d.ts +0 -24
- package/dist/styles/margin.js +0 -32
- package/dist/styles/margin.js.map +0 -1
- package/dist/styles/outline.d.ts +0 -29
- package/dist/styles/outline.js +0 -55
- package/dist/styles/outline.js.map +0 -1
- package/dist/styles/padding.d.ts +0 -24
- package/dist/styles/padding.js +0 -32
- package/dist/styles/padding.js.map +0 -1
- package/dist/styles/placement.d.ts +0 -37
- package/dist/styles/placement.js +0 -74
- package/dist/styles/placement.js.map +0 -1
- package/dist/styles/predefined.d.ts +0 -71
- package/dist/styles/predefined.js +0 -237
- package/dist/styles/predefined.js.map +0 -1
- package/dist/styles/preset.d.ts +0 -52
- package/dist/styles/preset.js +0 -127
- package/dist/styles/preset.js.map +0 -1
- package/dist/styles/radius.d.ts +0 -12
- package/dist/styles/radius.js +0 -83
- package/dist/styles/radius.js.map +0 -1
- package/dist/styles/scrollMargin.d.ts +0 -24
- package/dist/styles/scrollMargin.js +0 -32
- package/dist/styles/scrollMargin.js.map +0 -1
- package/dist/styles/scrollbar.d.ts +0 -25
- package/dist/styles/scrollbar.js +0 -51
- package/dist/styles/scrollbar.js.map +0 -1
- package/dist/styles/shadow.d.ts +0 -14
- package/dist/styles/shadow.js +0 -25
- package/dist/styles/shadow.js.map +0 -1
- package/dist/styles/shared.js +0 -17
- package/dist/styles/shared.js.map +0 -1
- package/dist/styles/transition.d.ts +0 -14
- package/dist/styles/transition.js +0 -159
- package/dist/styles/transition.js.map +0 -1
- package/dist/styles/types.d.ts +0 -564
- package/dist/styles/width.d.ts +0 -17
- package/dist/styles/width.js +0 -19
- package/dist/styles/width.js.map +0 -1
- package/dist/tasty.d.ts +0 -134
- package/dist/tasty.js +0 -240
- package/dist/tasty.js.map +0 -1
- package/dist/types.d.ts +0 -184
- package/dist/utils/cache-wrapper.js +0 -21
- package/dist/utils/cache-wrapper.js.map +0 -1
- package/dist/utils/case-converter.js +0 -8
- package/dist/utils/case-converter.js.map +0 -1
- package/dist/utils/color-math.d.ts +0 -46
- package/dist/utils/color-math.js +0 -749
- package/dist/utils/color-math.js.map +0 -1
- package/dist/utils/color-space.d.ts +0 -5
- package/dist/utils/color-space.js +0 -228
- package/dist/utils/color-space.js.map +0 -1
- package/dist/utils/colors.d.ts +0 -5
- package/dist/utils/colors.js +0 -10
- package/dist/utils/colors.js.map +0 -1
- package/dist/utils/css-types.d.ts +0 -7
- package/dist/utils/dotize.d.ts +0 -26
- package/dist/utils/dotize.js +0 -122
- package/dist/utils/dotize.js.map +0 -1
- package/dist/utils/filter-base-props.d.ts +0 -15
- package/dist/utils/filter-base-props.js +0 -45
- package/dist/utils/filter-base-props.js.map +0 -1
- package/dist/utils/get-display-name.d.ts +0 -7
- package/dist/utils/get-display-name.js +0 -10
- package/dist/utils/get-display-name.js.map +0 -1
- package/dist/utils/has-keys.js +0 -13
- package/dist/utils/has-keys.js.map +0 -1
- package/dist/utils/is-dev-env.js +0 -19
- package/dist/utils/is-dev-env.js.map +0 -1
- package/dist/utils/is-valid-element-type.js +0 -15
- package/dist/utils/is-valid-element-type.js.map +0 -1
- package/dist/utils/merge-styles.js.map +0 -1
- package/dist/utils/mod-attrs.d.ts +0 -6
- package/dist/utils/mod-attrs.js +0 -20
- package/dist/utils/mod-attrs.js.map +0 -1
- package/dist/utils/process-tokens.d.ts +0 -17
- package/dist/utils/process-tokens.js +0 -83
- package/dist/utils/process-tokens.js.map +0 -1
- package/dist/utils/resolve-recipes.d.ts +0 -17
- package/dist/utils/resolve-recipes.js +0 -146
- package/dist/utils/resolve-recipes.js.map +0 -1
- package/dist/utils/selector-transform.js +0 -32
- package/dist/utils/selector-transform.js.map +0 -1
- package/dist/utils/string.js +0 -8
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/styles.d.ts +0 -99
- package/dist/utils/styles.js +0 -220
- package/dist/utils/styles.js.map +0 -1
- package/dist/utils/typography.d.ts +0 -47
- package/dist/utils/typography.js +0 -51
- package/dist/utils/typography.js.map +0 -1
- package/dist/utils/warnings.d.ts +0 -16
- package/dist/utils/warnings.js +0 -16
- package/dist/utils/warnings.js.map +0 -1
- package/dist/zero/css-writer.d.ts +0 -45
- package/dist/zero/css-writer.js +0 -73
- package/dist/zero/css-writer.js.map +0 -1
- package/dist/zero/extractor.d.ts +0 -24
- package/dist/zero/extractor.js.map +0 -1
- package/docs/PIPELINE.md +0 -519
- /package/dist/{chunks/cacheKey.d.ts → ssr/astro-client.d.ts} +0 -0
package/docs/debug.md
CHANGED
|
@@ -6,18 +6,17 @@ Runtime CSS inspection and diagnostics for the Tasty styling system. Inspect inj
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
`tastyDebug` is a diagnostic object that exposes Tasty's runtime CSS state. It is designed for development use
|
|
10
|
-
|
|
11
|
-
In development mode (`isDevEnv()` returns `true`), `tastyDebug` is automatically installed on `window.tastyDebug`. In production, install it manually when needed.
|
|
9
|
+
`tastyDebug` is a diagnostic object that exposes Tasty's runtime CSS state. It is designed for development use and can be installed on `window` explicitly when needed.
|
|
12
10
|
|
|
13
11
|
All methods **log to the console by default**. Pass `{ raw: true }` to suppress logging and only return data.
|
|
14
12
|
|
|
13
|
+
> **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).
|
|
14
|
+
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
## Quick Start
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
|
-
// Auto-installed in dev mode. Otherwise:
|
|
21
20
|
import { tastyDebug } from '@tenphi/tasty';
|
|
22
21
|
tastyDebug.install();
|
|
23
22
|
|
|
@@ -52,6 +51,19 @@ interface DebugOptions {
|
|
|
52
51
|
|
|
53
52
|
When `raw` is `false` (the default), results are logged to the console **and** returned. When `raw` is `true`, results are returned silently.
|
|
54
53
|
|
|
54
|
+
### Environments Without a DOM
|
|
55
|
+
|
|
56
|
+
`tastyDebug` reads the document, so on a server — SSR, a Node REPL, a test
|
|
57
|
+
runner in the `node` environment — there is nothing for it to read. Every
|
|
58
|
+
method returns its empty result (`''`, an empty `InspectResult`, a summary of
|
|
59
|
+
zeroes, `metrics: null`) instead of throwing, and explains itself once with a
|
|
60
|
+
console warning. `{ raw: true }` suppresses that warning along with the rest of
|
|
61
|
+
the logging.
|
|
62
|
+
|
|
63
|
+
To see the styles a server render produced, read the `ServerStyleCollector`
|
|
64
|
+
instead — `collector.getCSS()` and `collector.getRenderedClassNames()`. See
|
|
65
|
+
[SSR](./ssr.md).
|
|
66
|
+
|
|
55
67
|
---
|
|
56
68
|
|
|
57
69
|
## API Reference
|
|
@@ -66,18 +78,18 @@ Retrieves CSS text for a given target. Logs the result with rule count and size.
|
|
|
66
78
|
|---|---|
|
|
67
79
|
| `'all'` | All tasty CSS (component + global + raw) |
|
|
68
80
|
| `'active'` | CSS for classes currently in the DOM |
|
|
69
|
-
| `'unused'` | CSS
|
|
81
|
+
| `'unused'` | CSS for injected classes no element carries (cached but not rendered) |
|
|
70
82
|
| `'global'` | Only global CSS (from `injectGlobal`) |
|
|
71
83
|
| `'page'` | All CSS on the page (including non-tasty) |
|
|
72
|
-
| `'
|
|
73
|
-
| `['
|
|
84
|
+
| `'t3a5f'` | CSS for a specific tasty class (class names are `t` + base36 hash) |
|
|
85
|
+
| `['t3a5f', 't9k2']` | CSS for multiple tasty classes |
|
|
74
86
|
| `'.my-button'` | CSS affecting a DOM element (by selector) |
|
|
75
87
|
| `element` | CSS affecting a DOM element (by reference) |
|
|
76
88
|
|
|
77
89
|
**Extra options:**
|
|
78
90
|
|
|
79
91
|
```typescript
|
|
80
|
-
interface
|
|
92
|
+
interface CSSOptions extends DebugOptions {
|
|
81
93
|
prettify?: boolean; // Format output (default: true)
|
|
82
94
|
source?: boolean; // Read original CSS instead of live CSSOM (default: false, dev-mode only)
|
|
83
95
|
}
|
|
@@ -88,11 +100,11 @@ interface CssOptions extends DebugOptions {
|
|
|
88
100
|
tastyDebug.css('active');
|
|
89
101
|
|
|
90
102
|
// Specific class, silent
|
|
91
|
-
const css = tastyDebug.css('
|
|
103
|
+
const css = tastyDebug.css('t3a5f', { raw: true });
|
|
92
104
|
|
|
93
105
|
// Compare original vs browser-parsed CSS (dev mode only)
|
|
94
|
-
tastyDebug.css('
|
|
95
|
-
tastyDebug.css('
|
|
106
|
+
tastyDebug.css('t3a5f'); // live CSSOM
|
|
107
|
+
tastyDebug.css('t3a5f', { source: true }); // original output
|
|
96
108
|
|
|
97
109
|
// Shadow DOM
|
|
98
110
|
tastyDebug.css('all', { root: shadowRoot });
|
|
@@ -109,14 +121,14 @@ Inspects a DOM element and returns detailed information about its tasty styles,
|
|
|
109
121
|
```typescript
|
|
110
122
|
interface InspectResult {
|
|
111
123
|
element?: Element | null;
|
|
112
|
-
classes: string[];
|
|
113
|
-
chunks:
|
|
114
|
-
css: string;
|
|
115
|
-
size: number;
|
|
116
|
-
rules: number;
|
|
124
|
+
classes: string[]; // Tasty classes on the element
|
|
125
|
+
chunks: DebugChunkInfo[]; // Chunk assignment per class
|
|
126
|
+
css: string; // Prettified CSS
|
|
127
|
+
size: number; // CSS size in characters
|
|
128
|
+
rules: number; // Number of CSS rule blocks
|
|
117
129
|
}
|
|
118
130
|
|
|
119
|
-
interface
|
|
131
|
+
interface DebugChunkInfo {
|
|
120
132
|
className: string;
|
|
121
133
|
chunkName: string | null; // e.g., 'appearance', 'font', 'dimension'
|
|
122
134
|
}
|
|
@@ -125,11 +137,11 @@ interface ChunkInfo {
|
|
|
125
137
|
```typescript
|
|
126
138
|
tastyDebug.inspect('.my-card');
|
|
127
139
|
// Logs: inspect div — 3 classes, 5 rules, 1.2KB
|
|
128
|
-
// Chunks:
|
|
140
|
+
// Chunks: t3a5f→appearance, t9k2→font, tb71→dimension
|
|
129
141
|
|
|
130
142
|
// Silent
|
|
131
143
|
const result = tastyDebug.inspect('.my-card', { raw: true });
|
|
132
|
-
console.log(result.classes); // ['
|
|
144
|
+
console.log(result.classes); // ['t3a5f', 't9k2', 'tb71']
|
|
133
145
|
console.log(result.rules); // 5
|
|
134
146
|
```
|
|
135
147
|
|
|
@@ -239,7 +251,9 @@ tastyDebug.cache();
|
|
|
239
251
|
|
|
240
252
|
### `cleanup(opts?): void`
|
|
241
253
|
|
|
242
|
-
|
|
254
|
+
Removes every injected style that is neither carried by an element nor pinned by
|
|
255
|
+
an outstanding `inject()` handle — the same set `summary()` reports as unused.
|
|
256
|
+
Equivalent to `gc({ force: true })`.
|
|
243
257
|
|
|
244
258
|
```typescript
|
|
245
259
|
tastyDebug.cleanup();
|
|
@@ -260,7 +274,7 @@ tastyDebug.help();
|
|
|
260
274
|
|
|
261
275
|
### `install(): void`
|
|
262
276
|
|
|
263
|
-
Attaches `tastyDebug` to `window.tastyDebug`.
|
|
277
|
+
Attaches `tastyDebug` to `window.tastyDebug`.
|
|
264
278
|
|
|
265
279
|
```typescript
|
|
266
280
|
import { tastyDebug } from '@tenphi/tasty';
|
|
@@ -291,10 +305,10 @@ tastyDebug.summary({ root: shadowRoot });
|
|
|
291
305
|
tastyDebug.inspect('.my-button');
|
|
292
306
|
|
|
293
307
|
// 2. See CSS for a specific class
|
|
294
|
-
tastyDebug.css('
|
|
308
|
+
tastyDebug.css('t3a5f');
|
|
295
309
|
|
|
296
310
|
// 3. Compare original vs browser-parsed (dev mode)
|
|
297
|
-
tastyDebug.css('
|
|
311
|
+
tastyDebug.css('t3a5f', { source: true });
|
|
298
312
|
```
|
|
299
313
|
|
|
300
314
|
### Checking cache efficiency
|
package/docs/design-system.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Building a Design System
|
|
2
2
|
|
|
3
|
-
This guide
|
|
3
|
+
This guide shows how to build shared React components whose styles stay predictable as states, variants, themes, and responsive rules accumulate. You will define tokens, state aliases, recipes, primitive APIs, and compound components with sub-elements.
|
|
4
4
|
|
|
5
|
-
It assumes you have already decided to adopt Tasty. The goal is not
|
|
5
|
+
It assumes you have already decided to adopt Tasty. The goal is not only to centralize values, but to give your design system one state model and a governed component-facing styling API. For evaluation criteria and incremental rollout, see the [Adoption Guide](adoption.md). For the recommended component architecture, see [Methodology](methodology.md).
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -43,8 +43,8 @@ configure({
|
|
|
43
43
|
'#border': '#e0e0e0',
|
|
44
44
|
|
|
45
45
|
// Unit values
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
$gap: '8px',
|
|
47
|
+
$radius: '4px',
|
|
48
48
|
'$border-width': '1px',
|
|
49
49
|
'$outline-width': '2px',
|
|
50
50
|
},
|
|
@@ -84,35 +84,65 @@ configure({
|
|
|
84
84
|
|
|
85
85
|
### Typography presets
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
Pass typography presets directly to `configure()` — they are converted to tokens automatically:
|
|
88
88
|
|
|
89
89
|
```tsx
|
|
90
|
-
import { configure
|
|
90
|
+
import { configure } from '@tenphi/tasty';
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
configure({
|
|
93
|
+
presets: {
|
|
94
|
+
h1: {
|
|
95
|
+
fontSize: '2rem',
|
|
96
|
+
lineHeight: '1.2',
|
|
97
|
+
letterSpacing: '-0.02em',
|
|
98
|
+
fontWeight: 700,
|
|
99
|
+
},
|
|
100
|
+
t2: {
|
|
101
|
+
fontSize: '0.875rem',
|
|
102
|
+
lineHeight: '1.5',
|
|
103
|
+
letterSpacing: 'normal',
|
|
104
|
+
fontWeight: 400,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
95
107
|
});
|
|
108
|
+
```
|
|
96
109
|
|
|
110
|
+
Preset values support state maps for responsive or theme-aware typography:
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
97
113
|
configure({
|
|
98
|
-
|
|
99
|
-
|
|
114
|
+
presets: {
|
|
115
|
+
t2: {
|
|
116
|
+
fontSize: '0.875rem',
|
|
117
|
+
lineHeight: '1.5',
|
|
118
|
+
fontWeight: { '': 400, '@dark': 300 },
|
|
119
|
+
},
|
|
100
120
|
},
|
|
101
121
|
});
|
|
102
122
|
```
|
|
103
123
|
|
|
104
124
|
Then use `preset: 'h1'` or `preset: 't2'` in any component's styles.
|
|
105
125
|
|
|
126
|
+
> You can also call `generateTypographyTokens()` manually and spread the result into `tokens` for more control — `presets` is just a shorthand.
|
|
127
|
+
|
|
106
128
|
### Registering brand fonts
|
|
107
129
|
|
|
108
|
-
Register your design system's custom fonts via `configure({
|
|
130
|
+
Register your design system's custom fonts via `configure({ fontFaces })` so every component can reference them:
|
|
109
131
|
|
|
110
132
|
```ts
|
|
111
133
|
configure({
|
|
112
|
-
|
|
134
|
+
fontFaces: {
|
|
113
135
|
'Brand Sans': [
|
|
114
|
-
{
|
|
115
|
-
|
|
136
|
+
{
|
|
137
|
+
src: 'url("/fonts/brand-regular.woff2") format("woff2")',
|
|
138
|
+
fontWeight: 400,
|
|
139
|
+
fontDisplay: 'swap',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
src: 'url("/fonts/brand-bold.woff2") format("woff2")',
|
|
143
|
+
fontWeight: 700,
|
|
144
|
+
fontDisplay: 'swap',
|
|
145
|
+
},
|
|
116
146
|
],
|
|
117
147
|
},
|
|
118
148
|
});
|
|
@@ -132,7 +162,8 @@ configure({
|
|
|
132
162
|
'@mobile': '@media(w < 768px)',
|
|
133
163
|
'@tablet': '@media(768px <= w < 1024px)',
|
|
134
164
|
'@desktop': '@media(w >= 1024px)',
|
|
135
|
-
'@dark':
|
|
165
|
+
'@dark':
|
|
166
|
+
'@root(schema=dark) | (!@root(schema) & @media(prefers-color-scheme: dark))',
|
|
136
167
|
'@reduced-motion': '@media(prefers-reduced-motion: reduce)',
|
|
137
168
|
},
|
|
138
169
|
});
|
|
@@ -173,7 +204,7 @@ configure({
|
|
|
173
204
|
'input-reset': {
|
|
174
205
|
border: 'none',
|
|
175
206
|
outline: 'none',
|
|
176
|
-
fill: '
|
|
207
|
+
fill: '#clear',
|
|
177
208
|
font: true,
|
|
178
209
|
preset: 't3',
|
|
179
210
|
},
|
|
@@ -199,7 +230,7 @@ const ProfileCard = tasty({
|
|
|
199
230
|
});
|
|
200
231
|
```
|
|
201
232
|
|
|
202
|
-
Use the `/` separator when a recipe should be applied
|
|
233
|
+
Use the `/` separator when a recipe should be applied _after_ local styles (post-merge), so recipe states take priority:
|
|
203
234
|
|
|
204
235
|
```tsx
|
|
205
236
|
const Input = tasty({
|
|
@@ -271,12 +302,12 @@ Product engineers use these to compose layouts without writing CSS:
|
|
|
271
302
|
|
|
272
303
|
Match the prop set to the component's role:
|
|
273
304
|
|
|
274
|
-
| Component category
|
|
275
|
-
|
|
276
|
-
| Layout containers (`Space`, `Box`, `Grid`) | `FLOW_STYLES` — flow, gap, align, justify, padding, fill
|
|
277
|
-
| Positioned elements (`Button`, `Badge`)
|
|
278
|
-
| Text elements
|
|
279
|
-
| Compound components
|
|
305
|
+
| Component category | Recommended styleProps |
|
|
306
|
+
| ------------------------------------------ | -------------------------------------------------------------- |
|
|
307
|
+
| Layout containers (`Space`, `Box`, `Grid`) | `FLOW_STYLES` — flow, gap, align, justify, padding, fill |
|
|
308
|
+
| Positioned elements (`Button`, `Badge`) | `POSITION_STYLES` — placeSelf, gridArea, order |
|
|
309
|
+
| Text elements | `['preset', 'color']` or a custom subset |
|
|
310
|
+
| Compound components | Typically none — styling happens via sub-elements and wrapping |
|
|
280
311
|
|
|
281
312
|
Exposing too many props weakens the design system's constraints. See [Methodology — styleProps as the public API](methodology.md#styleprops-as-the-public-api) for the rationale.
|
|
282
313
|
|
|
@@ -323,9 +354,7 @@ Usage:
|
|
|
323
354
|
```tsx
|
|
324
355
|
<Card>
|
|
325
356
|
<Card.Title>Monthly Revenue</Card.Title>
|
|
326
|
-
<Card.Content>
|
|
327
|
-
$1.2M — up 12% from last month.
|
|
328
|
-
</Card.Content>
|
|
357
|
+
<Card.Content>$1.2M — up 12% from last month.</Card.Content>
|
|
329
358
|
<Card.Footer>
|
|
330
359
|
<Button>Details</Button>
|
|
331
360
|
</Card.Footer>
|
|
@@ -334,7 +363,7 @@ Usage:
|
|
|
334
363
|
|
|
335
364
|
Sub-elements share the root component's state context by default. A `disabled` modifier on `<Card>` affects `Title`, `Content`, and `Footer` styles automatically — no prop drilling. For the full mental model, see [Methodology — Component architecture](methodology.md#component-architecture-root--sub-elements).
|
|
336
365
|
|
|
337
|
-
For sub-element syntax details (selector affix `$`, `@own()`, `elements` config), see [
|
|
366
|
+
For sub-element syntax details (selector affix `$`, `@own()`, `elements` config), see [React API — Sub-element Styling](react-api.md#sub-element-styling).
|
|
338
367
|
|
|
339
368
|
---
|
|
340
369
|
|
|
@@ -353,13 +382,15 @@ A design system works best when the rules for customization are explicit. Tasty
|
|
|
353
382
|
2. **Use modProps** — control component states through typed props instead of `mods`:
|
|
354
383
|
|
|
355
384
|
```tsx
|
|
356
|
-
<Button isLoading size="large">
|
|
385
|
+
<Button isLoading size="large">
|
|
386
|
+
Submit
|
|
387
|
+
</Button>
|
|
357
388
|
```
|
|
358
389
|
|
|
359
390
|
3. **Pass tokens** — inject runtime values through the `tokens` prop for per-instance customization:
|
|
360
391
|
|
|
361
392
|
```tsx
|
|
362
|
-
<ProgressBar tokens={{
|
|
393
|
+
<ProgressBar tokens={{ $progress: `${percent}%` }} />
|
|
363
394
|
```
|
|
364
395
|
|
|
365
396
|
4. **Create styled wrappers** — extend a component's styles with `tasty(Base, { styles })`:
|
|
@@ -404,7 +435,7 @@ ds/
|
|
|
404
435
|
index.ts # Recipe definitions (imported by config.ts)
|
|
405
436
|
tokens/
|
|
406
437
|
colors.ts # Color token definitions
|
|
407
|
-
typography.ts # Typography presets
|
|
438
|
+
typography.ts # Typography presets for configure({ presets })
|
|
408
439
|
spacing.ts # Spacing token definitions
|
|
409
440
|
index.ts # Public API: re-exports components + configure
|
|
410
441
|
```
|
|
@@ -418,7 +449,7 @@ The key principle: `config.ts` imports tokens and recipes, calls `configure()`,
|
|
|
418
449
|
- **[Methodology](methodology.md)** — The recommended patterns for structuring Tasty components
|
|
419
450
|
- **[Getting Started](getting-started.md)** — Installation, first component, tooling setup
|
|
420
451
|
- **[Style DSL](dsl.md)** — State maps, tokens, units, extending semantics, keyframes, @property
|
|
421
|
-
- **[
|
|
452
|
+
- **[React API](react-api.md)** — `tasty()` factory, component props, variants, sub-elements, style functions
|
|
422
453
|
- **[Configuration](configuration.md)** — Full `configure()` API: tokens, recipes, custom units, style handlers
|
|
423
454
|
- **[Adoption Guide](adoption.md)** — Who should adopt Tasty, incremental phases, what changes for product engineers
|
|
424
455
|
- **[Style Properties](styles.md)** — Complete reference for all enhanced style properties
|