# @bamboocss/dev

## 1.45.4

### Patch Changes

- @bamboocss/node@1.45.4
- @bamboocss/postcss@1.45.4
- @bamboocss/logger@1.45.4
- @bamboocss/preset-bamboo@1.45.4
- @bamboocss/preset-base@1.45.4
- @bamboocss/shared@1.45.4
- @bamboocss/token-dictionary@1.45.4
- @bamboocss/types@1.45.4

## 1.45.3

### Patch Changes

- @bamboocss/logger@1.45.3
- @bamboocss/node@1.45.3
- @bamboocss/postcss@1.45.3
- @bamboocss/preset-bamboo@1.45.3
- @bamboocss/preset-base@1.45.3
- @bamboocss/shared@1.45.3
- @bamboocss/token-dictionary@1.45.3
- @bamboocss/types@1.45.3

## 1.45.2

### Patch Changes

- Updated dependencies [00e7af9]
  - @bamboocss/node@1.45.2
  - @bamboocss/postcss@1.45.2
  - @bamboocss/logger@1.45.2
  - @bamboocss/preset-bamboo@1.45.2
  - @bamboocss/preset-base@1.45.2
  - @bamboocss/shared@1.45.2
  - @bamboocss/token-dictionary@1.45.2
  - @bamboocss/types@1.45.2

## 1.45.1

### Patch Changes

- Updated dependencies [2d97c50]
  - @bamboocss/node@1.45.1
  - @bamboocss/postcss@1.45.1
  - @bamboocss/logger@1.45.1
  - @bamboocss/preset-bamboo@1.45.1
  - @bamboocss/preset-base@1.45.1
  - @bamboocss/shared@1.45.1
  - @bamboocss/token-dictionary@1.45.1
  - @bamboocss/types@1.45.1

## 1.45.0

### Patch Changes

- @bamboocss/logger@1.45.0
- @bamboocss/node@1.45.0
- @bamboocss/postcss@1.45.0
- @bamboocss/preset-bamboo@1.45.0
- @bamboocss/preset-base@1.45.0
- @bamboocss/shared@1.45.0
- @bamboocss/token-dictionary@1.45.0
- @bamboocss/types@1.45.0

## 1.44.1

### Patch Changes

- @bamboocss/types@1.44.1
- @bamboocss/node@1.44.1
- @bamboocss/postcss@1.44.1
- @bamboocss/logger@1.44.1
- @bamboocss/preset-bamboo@1.44.1
- @bamboocss/preset-base@1.44.1
- @bamboocss/shared@1.44.1
- @bamboocss/token-dictionary@1.44.1

## 1.44.0

### Patch Changes

- Updated dependencies [78b4de5]
- Updated dependencies [f7a6d4c]
  - @bamboocss/types@1.44.0
  - @bamboocss/node@1.44.0
  - @bamboocss/logger@1.44.0
  - @bamboocss/preset-bamboo@1.44.0
  - @bamboocss/preset-base@1.44.0
  - @bamboocss/token-dictionary@1.44.0
  - @bamboocss/postcss@1.44.0
  - @bamboocss/shared@1.44.0

## 1.43.1

### Patch Changes

- @bamboocss/node@1.43.1
- @bamboocss/postcss@1.43.1
- @bamboocss/logger@1.43.1
- @bamboocss/preset-bamboo@1.43.1
- @bamboocss/preset-base@1.43.1
- @bamboocss/shared@1.43.1
- @bamboocss/token-dictionary@1.43.1
- @bamboocss/types@1.43.1

## 1.43.0

### Patch Changes

- Updated dependencies [1cef86c]
  - @bamboocss/types@1.43.0
  - @bamboocss/node@1.43.0
  - @bamboocss/logger@1.43.0
  - @bamboocss/preset-bamboo@1.43.0
  - @bamboocss/preset-base@1.43.0
  - @bamboocss/token-dictionary@1.43.0
  - @bamboocss/postcss@1.43.0
  - @bamboocss/shared@1.43.0

## 1.42.0

### Minor Changes

- 6fa8d1a: Remove `strictTokens: 'unknown-tokens'`. The build checks names now, and it is better at it.

  The setting existed to make `css({ color: 'mutedd' })` a type error, by narrowing every generated prop type: keep the
  keywords csstype enumerates, drop the open `string` it ends with. That worked, and it was the wrong layer.
  - It could not tell `top: 'navH'` from `animationName: 'fadeIn'`. csstype describes both as `… | (string & {})`, one
    because it takes lengths and the other because it takes a `<custom-ident>`, so the generator carried a hand-written
    list of 29 property names to know the difference.
  - That trailing `(string & {})` is csstype declining to say a list is exhaustive, and it declines for **70%** of the
    properties it describes. Narrowing them anyway rejects `width: 'stretch'` and `imageRendering: 'optimizeSpeed'`.
  - It only ever saw TypeScript. Two of the four findings on this repo's own documentation site are in **config
    recipes**, which `tsc` does not check — and none of it reaches a `.vue` template or a project not using TypeScript.
  - It could not say anything useful. A type error reports that a string is not assignable to a union of two hundred
    members and guesses a near-miss by spelling, which is how `transitionProperty: 'color'` came to be rejected in
    favour of `'colors'` — a utility value that emits seven declarations instead of one.

  The build answers all four, against the real CSS grammar, and says where the name actually lives:

  ```
  `top: navH` — `navH` is declared under `sizes`, but `top` reads `spacing`.
  It is emitted as written, and the browser will drop it.
  Use a `spacing` token, or write `[navH]` to mean it literally.
  ```

  **What this costs, measured** on this repo's documentation site with `tsc --extendedDiagnostics`. Deterministic
  counts, not wall clock:

  |                | with the narrowing | without       |
  | -------------- | ------------------ | ------------- |
  | Types          | 40,995             | 18,320 (−55%) |
  | Instantiations | 181,030            | 46,230 (−74%) |

  **Migration.** Delete the setting; the check it bought is on by default and needs no configuration. `strictTokens` is
  now a boolean and means only what its `true` always meant — every raw CSS value must be written `[14px]` — which is a
  design-system policy rather than a correctness check, so `bamboo init` no longer writes it. A config still naming
  `'unknown-tokens'` is reported by validation rather than silently read as `true`, which truthiness would otherwise
  make it.

  Also gone from the generated `styled-system`: `KnownKeywords`, `CssValueShape`, and the author-identifier property
  list.

- 5c33622: `strictTokens` is now `strictValues`, and it is a build check.

  Two things were wrong with it as a set of TypeScript narrowings, and both are about the same confusion — it was
  answering a _policy_ question with a _correctness_ mechanism.

  **A utility's values replaced the property's own.** `transitionProperty` declares the sugar `common`, `colors`,
  `size`, `position` and `background`, so the setting rejected `transitionProperty: 'color'` — a real CSS property name,
  and a `<custom-ident>` exactly where the grammar asks for one — and suggested `'colors'`, which emits seven
  declarations instead of one. A utility adds vocabulary to a property; it does not take the property's own away.
  Nothing narrows now, so a property always keeps its own values:

  ```ts
  // styled-system/types/style-props.d.ts
  transitionProperty?: ConditionalValue<UtilityValues['transitionProperty'] | CssVars | CssProperties['transitionProperty'] | AnyString>
  ```

  **It could not tell a keyword from a raw value.** `display: 'flex'` is not reaching outside the design system — `flex`
  is the only way to say it — so the old setting handled `display` by not narrowing it at all, which let
  `display: 'abc'` through with it. The grammar draws that line:

  ```ts
  css({ color: 'red.300' }) //               ✅ a token
  css({ display: 'flex' }) //                ✅ a keyword
  css({ animationName: 'fadeIn' }) //        ✅ an identifier you invented
  css({ transitionProperty: 'color' }) //    ✅ a css property name

  css({ fontSize: '14px' }) //               ❌ write `[14px]`
  css({ color: '#fff' }) //                  ❌
  css({ border: '1px solid red' }) //        ❌
  ```

  It reads the styles your **source** produced, so a preset's reset and your own config recipes are not held to a policy
  about your source — which is why it is a separate pass rather than a branch in the resolver, which sees both. Graded
  by `validation`: a warning by default, and a failure under `validation: 'error'`.

  **Migration.** Rename `strictTokens` to `strictValues` in your config, and `--strict-tokens` to `--strict-values`. The
  setting means what `true` always meant; there is no type-level version of it any more, so the errors move from `tsc`
  to the build.

  Together with removing the middle mode, this takes the whole type-level narrowing out. Measured on this repo's
  documentation site with `tsc --extendedDiagnostics` — deterministic counts, not wall clock — **Types 40,995 → 18,320
  and Instantiations 181,030 → 46,230.**

### Patch Changes

- Updated dependencies [4fcae37]
- Updated dependencies [6fa8d1a]
- Updated dependencies [5c33622]
  - @bamboocss/preset-bamboo@1.42.0
  - @bamboocss/types@1.42.0
  - @bamboocss/node@1.42.0
  - @bamboocss/shared@1.42.0
  - @bamboocss/logger@1.42.0
  - @bamboocss/preset-base@1.42.0
  - @bamboocss/token-dictionary@1.42.0
  - @bamboocss/postcss@1.42.0

## 1.41.1

### Patch Changes

- 3b91dce: Fix four dead declarations on the documentation site, and turn the check that found them on there.

  `strictTokens: 'unknown-tokens'` is what `bamboo init` now writes, so the site it is documented on should be running
  it. Doing that reported four, all real, all shipping a declaration the browser discards:
  - `zIndex: 'overlay'` and two `zIndex: 'modal'` in the drawer recipe, which came from Chakra where those are tokens.
    Nothing declared them here, so the sheet carried `z-index: overlay` and `z-index: modal` — both parse, so no build
    objected, and both are discarded, leaving the drawer with no stacking context at all. They are declared now, in the
    dialog's neighbourhood rather than Chakra's 1300/1400: `dialog.tsx` sets `--dialog-z-index: 200` and stacks above
    it, and the drawer is the same kind of surface.
  - `transform: 'auto'` on the expand icon, which is Panda's sugar for composing the transform variables. Bamboo has no
    such value, so it emitted a literal `transform: auto`, which is not css. Removed rather than translated: `rotate`
    here is bamboo's utility for the standalone `rotate` property, so the rotation was already applying on its own and
    the declaration was doing nothing.

  `next build` type-checks, so the setting is enforced by the website workflow from now on rather than being advice.
  - @bamboocss/node@1.41.1
  - @bamboocss/postcss@1.41.1
  - @bamboocss/logger@1.41.1
  - @bamboocss/preset-bamboo@1.41.1
  - @bamboocss/preset-base@1.41.1
  - @bamboocss/shared@1.41.1
  - @bamboocss/token-dictionary@1.41.1
  - @bamboocss/types@1.41.1

## 1.41.0

### Minor Changes

- 9b15513: `bamboo init` now writes `strictTokens: 'unknown-tokens'`, and a modifier no longer depends on how a utility
  is declared.

  The default is the setting a project keeps. Unchecked, `css({ color: 'mutedd' })` type-checks, builds, and ships
  `color: mutedd` — which parses, so nothing objects and the browser drops it at compute time; it surfaces as a colour
  that never applied, a long way from the typo. `true` catches it and rejects every raw CSS value with it, which is 468
  errors on one five-page app, so it is realistically a day-one decision and a project that did not make it then never
  will. `'unknown-tokens'` costs no migration — every literal value stays writable — and what it rejects is a bare
  identifier that names neither a token nor a keyword the property enumerates.

  Run across this repo's own documentation site it reported four, all real: `zIndex: 'overlay'` and two
  `zIndex: 'modal'` against a theme that declares no `zIndex` tokens, and a `transform: 'auto'` that is not CSS. All
  four emit a declaration the browser discards. A project created by `init` has nothing written yet, so it starts at
  zero either way — the default only decides whether the check is there when the first typo is.

  Declining still works and is not the same as saying nothing: `bamboo init --no-strict-tokens`, or "Not at all" in the
  prompt, leaves the key out. The config default is unchanged — an existing config that never mentions `strictTokens` is
  still unchecked.

  That run also turned up a false positive, which is fixed here rather than shipped as a default:

  ```ts
  css({ rounded: 'lg!' }) //        ✅
  css({ roundedBottom: 'lg!' }) //  ❌ was a type error
  ```

  Both emit `var(--radii-lg) !important`. `WithModifier` tested `[T] extends [string]` before distributing, and
  `KnownKeywords` keeps `Number` deliberately — a number cannot be a misspelled token path — so a utility declared as
  `Tokens["radii"] | KnownKeywords<…>` had one non-string member and lost every modifier form for the whole property,
  while its plain sibling kept them. It now filters with `Extract<T, string>`, which distributes over the same string
  members and yields `never` for the same empty case, so the union this expands into is the size it always was and the
  `& { __modifier?: true }` brand behind the 12.8x note is untouched.

### Patch Changes

- @bamboocss/node@1.41.0
- @bamboocss/postcss@1.41.0
- @bamboocss/logger@1.41.0
- @bamboocss/preset-bamboo@1.41.0
- @bamboocss/preset-base@1.41.0
- @bamboocss/shared@1.41.0
- @bamboocss/token-dictionary@1.41.0
- @bamboocss/types@1.41.0

## 1.40.1

### Patch Changes

- Updated dependencies [8985e58]
  - @bamboocss/node@1.40.1
  - @bamboocss/postcss@1.40.1
  - @bamboocss/logger@1.40.1
  - @bamboocss/preset-bamboo@1.40.1
  - @bamboocss/preset-base@1.40.1
  - @bamboocss/shared@1.40.1
  - @bamboocss/token-dictionary@1.40.1
  - @bamboocss/types@1.40.1

## 1.40.0

### Minor Changes

- 3151b14: Make `bamboo init` write the answers it collects, and stop steering Vite projects onto the runtime path.

  `--strict-tokens` did nothing. cac parsed it, the interactive prompt asked for it, and the init action destructured
  every other flag — so a project that asked for strict tokens got a config without the key, with nothing said. The flag
  is in the CLI reference, which made it worse: the only way to find out was to write a misspelled token and wait for a
  report that never came. It now reaches the generated config, and takes the middle mode too:
  `bamboo init --strict-tokens unknown-tokens`, which was otherwise a config-file feature `init` could not produce. As
  before, `init` writes nothing when a config already exists unless `--force` is passed, so the flag applies to the
  config it creates.

  An unrecognised value is refused rather than coerced. Mapping the unknown to `true` would make `--strict-tokens=false`
  turn it _on_, and a typo in the middle mode's name pick the strictest setting there is — every raw CSS value in the
  project becoming a type error with nothing naming the mistake. `false`, `no`, `off` and an empty value are all read as
  off.

  A config that names a setting which does not exist is now reported too. `strictTokens: 'unknown'` reached the
  generated types as a comparison against two known values and emitted a _fourth_ prop shape that no setting asks for,
  from a build that exited 0.

  The interactive prompt's first question — "Would you like to use PostCSS?" — defaulted to yes for every project. That
  is the choice between an integration that compiles your style calls away and one that ships the style engine to the
  client, and both render identically, so pressing Enter picked the heavier one and nothing afterwards said so. It now
  defaults from the project: a Vite config means `@bamboocss/vite` is available and the answer is no, unless the project
  is Svelte, Vue or Astro, whose components the compiler does not transform. The wording says what the question decides
  rather than naming the tool.

  The strict-tokens prompt offers the three modes rather than yes/no, and `InitFlags` declares what `interactive()`
  returns — the missing field behind an `as` cast is what let the answer be dropped in the first place.

### Patch Changes

- Updated dependencies [3151b14]
  - @bamboocss/node@1.40.0
  - @bamboocss/postcss@1.40.0
  - @bamboocss/logger@1.40.0
  - @bamboocss/preset-bamboo@1.40.0
  - @bamboocss/preset-base@1.40.0
  - @bamboocss/shared@1.40.0
  - @bamboocss/token-dictionary@1.40.0
  - @bamboocss/types@1.40.0

## 1.39.1

### Patch Changes

- 4734709: Put the Preact, SolidJS and Qwik guides on `@bamboocss/vite`, and say which Remix is which.

  Each of those frameworks builds with Vite, and each guide set Bamboo up through PostCSS — which emits the stylesheet
  and compiles nothing, so `css()` and `cva()` stayed runtime calls and the style engine shipped to the client. The
  guides now install `@bamboocss/vite`, add it to the Vite config, and import `virtual:bamboo.css`, with no PostCSS
  entry and no file carrying the `@layer` statement.

  Verified against a real build of the matching sandbox rather than by analogy, and the sandboxes were converted with
  them: Preact compiles 9/10 calls (the tenth is a nested fold), SolidJS 2/4 (the other two are `cx(props.className)`,
  the one intentional runtime surface), and Qwik 7/7 in both its client and SSR builds. All three emit a stylesheet
  carrying the marker and no style engine at all.

  Two things a reader would otherwise have hit are now in the guides: the template's own `index.css` has to go, since it
  is unlayered and outranks every Bamboo utility, and `prepare: bamboo codegen` has to exist before a build that
  typechecks first can resolve `styled-system`.

  Remix is the exception and is not converted. `create-remix` scaffolds a Vite project today, and that one belongs on
  the React Router guide; the steps that guide actually documents — and the sandbox behind it — are the classic
  `remix.config.js` compiler, where PostCSS is the only integration. The page now says which is which instead of
  implying one.

- Updated dependencies [4734709]
  - @bamboocss/shared@1.39.1
  - @bamboocss/node@1.39.1
  - @bamboocss/token-dictionary@1.39.1
  - @bamboocss/types@1.39.1
  - @bamboocss/postcss@1.39.1
  - @bamboocss/logger@1.39.1
  - @bamboocss/preset-bamboo@1.39.1
  - @bamboocss/preset-base@1.39.1

## 1.39.0

### Minor Changes

- 4c66fdb: Say when a Vite project is emitting the stylesheet through PostCSS, which silently ships the style engine.

  `@bamboocss/postcss` emits CSS and nothing else. Under it, `css()` and `cva()` stay runtime calls and the generated
  style engine goes out in the client bundle — where `@bamboocss/vite` compiles those calls to literal class strings and
  ships no engine at all. Nothing about the result distinguishes the two: the stylesheet is correct, the app renders,
  and the engine is the only difference — 20 kB of client JavaScript in one reported app. Bamboo's own React Router
  guide described the PostCSS setup, so projects reached it by following the docs rather than by choosing it.

  Both entry points now say so. `bamboo init --postcss` warns when the directory already has a Vite config, and the
  PostCSS plugin warns once per project when it runs in one — suppressed when a Bamboo source compiler is loaded in the
  same process, so a project that has both installed is not told off for the setup it already has. Pass
  `{ runtimeStyling: true }` to the plugin where resolving styles at runtime is deliberate.

  A Svelte, Vue or Astro project is the exception and is never warned: `@bamboocss/vite` compiles JavaScript and
  TypeScript, and their components are templates it leaves alone — moving one onto it would prune every rule only those
  components reach. The React Router guide now uses `@bamboocss/vite`, and the other Vite-framework guides say which
  integration they are describing.

### Patch Changes

- Updated dependencies [4c66fdb]
- Updated dependencies [4d27ba4]
  - @bamboocss/postcss@1.39.0
  - @bamboocss/node@1.39.0
  - @bamboocss/types@1.39.0
  - @bamboocss/logger@1.39.0
  - @bamboocss/preset-bamboo@1.39.0
  - @bamboocss/preset-base@1.39.0
  - @bamboocss/token-dictionary@1.39.0
  - @bamboocss/shared@1.39.0

## 1.38.0

### Patch Changes

- @bamboocss/logger@1.38.0
- @bamboocss/node@1.38.0
- @bamboocss/postcss@1.38.0
- @bamboocss/preset-bamboo@1.38.0
- @bamboocss/preset-base@1.38.0
- @bamboocss/shared@1.38.0
- @bamboocss/token-dictionary@1.38.0
- @bamboocss/types@1.38.0

## 1.37.13

### Patch Changes

- @bamboocss/logger@1.37.13
- @bamboocss/node@1.37.13
- @bamboocss/postcss@1.37.13
- @bamboocss/preset-bamboo@1.37.13
- @bamboocss/preset-base@1.37.13
- @bamboocss/shared@1.37.13
- @bamboocss/token-dictionary@1.37.13
- @bamboocss/types@1.37.13

## 1.37.12

### Patch Changes

- @bamboocss/node@1.37.12
- @bamboocss/postcss@1.37.12
- @bamboocss/logger@1.37.12
- @bamboocss/preset-bamboo@1.37.12
- @bamboocss/preset-base@1.37.12
- @bamboocss/shared@1.37.12
- @bamboocss/token-dictionary@1.37.12
- @bamboocss/types@1.37.12

## 1.37.11

### Patch Changes

- @bamboocss/logger@1.37.11
- @bamboocss/node@1.37.11
- @bamboocss/postcss@1.37.11
- @bamboocss/preset-bamboo@1.37.11
- @bamboocss/preset-base@1.37.11
- @bamboocss/shared@1.37.11
- @bamboocss/token-dictionary@1.37.11
- @bamboocss/types@1.37.11

## 1.37.10

### Patch Changes

- @bamboocss/logger@1.37.10
- @bamboocss/node@1.37.10
- @bamboocss/postcss@1.37.10
- @bamboocss/preset-bamboo@1.37.10
- @bamboocss/preset-base@1.37.10
- @bamboocss/shared@1.37.10
- @bamboocss/token-dictionary@1.37.10
- @bamboocss/types@1.37.10

## 1.37.9

### Patch Changes

- @bamboocss/logger@1.37.9
- @bamboocss/node@1.37.9
- @bamboocss/postcss@1.37.9
- @bamboocss/preset-bamboo@1.37.9
- @bamboocss/preset-base@1.37.9
- @bamboocss/shared@1.37.9
- @bamboocss/token-dictionary@1.37.9
- @bamboocss/types@1.37.9

## 1.37.8

### Patch Changes

- @bamboocss/logger@1.37.8
- @bamboocss/node@1.37.8
- @bamboocss/postcss@1.37.8
- @bamboocss/preset-bamboo@1.37.8
- @bamboocss/preset-base@1.37.8
- @bamboocss/shared@1.37.8
- @bamboocss/token-dictionary@1.37.8
- @bamboocss/types@1.37.8

## 1.37.7

### Patch Changes

- @bamboocss/logger@1.37.7
- @bamboocss/node@1.37.7
- @bamboocss/postcss@1.37.7
- @bamboocss/preset-bamboo@1.37.7
- @bamboocss/preset-base@1.37.7
- @bamboocss/shared@1.37.7
- @bamboocss/token-dictionary@1.37.7
- @bamboocss/types@1.37.7

## 1.37.6

### Patch Changes

- @bamboocss/logger@1.37.6
- @bamboocss/node@1.37.6
- @bamboocss/postcss@1.37.6
- @bamboocss/preset-bamboo@1.37.6
- @bamboocss/preset-base@1.37.6
- @bamboocss/shared@1.37.6
- @bamboocss/token-dictionary@1.37.6
- @bamboocss/types@1.37.6

## 1.37.5

### Patch Changes

- @bamboocss/logger@1.37.5
- @bamboocss/node@1.37.5
- @bamboocss/postcss@1.37.5
- @bamboocss/preset-bamboo@1.37.5
- @bamboocss/preset-base@1.37.5
- @bamboocss/shared@1.37.5
- @bamboocss/token-dictionary@1.37.5
- @bamboocss/types@1.37.5

## 1.37.4

### Patch Changes

- @bamboocss/logger@1.37.4
- @bamboocss/node@1.37.4
- @bamboocss/postcss@1.37.4
- @bamboocss/preset-bamboo@1.37.4
- @bamboocss/preset-base@1.37.4
- @bamboocss/shared@1.37.4
- @bamboocss/token-dictionary@1.37.4
- @bamboocss/types@1.37.4

## 1.37.3

### Patch Changes

- @bamboocss/logger@1.37.3
- @bamboocss/node@1.37.3
- @bamboocss/postcss@1.37.3
- @bamboocss/preset-bamboo@1.37.3
- @bamboocss/preset-base@1.37.3
- @bamboocss/shared@1.37.3
- @bamboocss/token-dictionary@1.37.3
- @bamboocss/types@1.37.3

## 1.37.2

### Patch Changes

- Updated dependencies [35a689c]
  - @bamboocss/node@1.37.2
  - @bamboocss/postcss@1.37.2
  - @bamboocss/logger@1.37.2
  - @bamboocss/preset-bamboo@1.37.2
  - @bamboocss/preset-base@1.37.2
  - @bamboocss/shared@1.37.2
  - @bamboocss/token-dictionary@1.37.2
  - @bamboocss/types@1.37.2

## 1.37.1

### Patch Changes

- @bamboocss/logger@1.37.1
- @bamboocss/node@1.37.1
- @bamboocss/postcss@1.37.1
- @bamboocss/preset-bamboo@1.37.1
- @bamboocss/preset-base@1.37.1
- @bamboocss/shared@1.37.1
- @bamboocss/token-dictionary@1.37.1
- @bamboocss/types@1.37.1

## 1.37.0

### Patch Changes

- @bamboocss/logger@1.37.0
- @bamboocss/node@1.37.0
- @bamboocss/postcss@1.37.0
- @bamboocss/preset-bamboo@1.37.0
- @bamboocss/preset-base@1.37.0
- @bamboocss/shared@1.37.0
- @bamboocss/token-dictionary@1.37.0
- @bamboocss/types@1.37.0

## 1.36.5

### Patch Changes

- @bamboocss/logger@1.36.5
- @bamboocss/node@1.36.5
- @bamboocss/postcss@1.36.5
- @bamboocss/preset-bamboo@1.36.5
- @bamboocss/preset-base@1.36.5
- @bamboocss/shared@1.36.5
- @bamboocss/token-dictionary@1.36.5
- @bamboocss/types@1.36.5

## 1.36.4

### Patch Changes

- @bamboocss/logger@1.36.4
- @bamboocss/node@1.36.4
- @bamboocss/postcss@1.36.4
- @bamboocss/preset-bamboo@1.36.4
- @bamboocss/preset-base@1.36.4
- @bamboocss/shared@1.36.4
- @bamboocss/token-dictionary@1.36.4
- @bamboocss/types@1.36.4

## 1.36.3

### Patch Changes

- @bamboocss/logger@1.36.3
- @bamboocss/node@1.36.3
- @bamboocss/postcss@1.36.3
- @bamboocss/preset-bamboo@1.36.3
- @bamboocss/preset-base@1.36.3
- @bamboocss/shared@1.36.3
- @bamboocss/token-dictionary@1.36.3
- @bamboocss/types@1.36.3

## 1.36.2

### Patch Changes

- @bamboocss/logger@1.36.2
- @bamboocss/node@1.36.2
- @bamboocss/postcss@1.36.2
- @bamboocss/preset-bamboo@1.36.2
- @bamboocss/preset-base@1.36.2
- @bamboocss/shared@1.36.2
- @bamboocss/token-dictionary@1.36.2
- @bamboocss/types@1.36.2

## 1.36.1

### Patch Changes

- @bamboocss/logger@1.36.1
- @bamboocss/node@1.36.1
- @bamboocss/postcss@1.36.1
- @bamboocss/preset-bamboo@1.36.1
- @bamboocss/preset-base@1.36.1
- @bamboocss/shared@1.36.1
- @bamboocss/token-dictionary@1.36.1
- @bamboocss/types@1.36.1

## 1.36.0

### Patch Changes

- @bamboocss/node@1.36.0
- @bamboocss/postcss@1.36.0
- @bamboocss/logger@1.36.0
- @bamboocss/preset-bamboo@1.36.0
- @bamboocss/preset-base@1.36.0
- @bamboocss/shared@1.36.0
- @bamboocss/token-dictionary@1.36.0
- @bamboocss/types@1.36.0

## 1.35.5

### Patch Changes

- @bamboocss/logger@1.35.5
- @bamboocss/node@1.35.5
- @bamboocss/postcss@1.35.5
- @bamboocss/preset-bamboo@1.35.5
- @bamboocss/preset-base@1.35.5
- @bamboocss/shared@1.35.5
- @bamboocss/token-dictionary@1.35.5
- @bamboocss/types@1.35.5

## 1.35.4

### Patch Changes

- @bamboocss/logger@1.35.4
- @bamboocss/node@1.35.4
- @bamboocss/postcss@1.35.4
- @bamboocss/preset-bamboo@1.35.4
- @bamboocss/preset-base@1.35.4
- @bamboocss/shared@1.35.4
- @bamboocss/token-dictionary@1.35.4
- @bamboocss/types@1.35.4

## 1.35.3

### Patch Changes

- @bamboocss/logger@1.35.3
- @bamboocss/node@1.35.3
- @bamboocss/postcss@1.35.3
- @bamboocss/preset-bamboo@1.35.3
- @bamboocss/preset-base@1.35.3
- @bamboocss/shared@1.35.3
- @bamboocss/token-dictionary@1.35.3
- @bamboocss/types@1.35.3

## 1.35.2

### Patch Changes

- Updated dependencies [eb3025a]
  - @bamboocss/shared@1.35.2
  - @bamboocss/node@1.35.2
  - @bamboocss/token-dictionary@1.35.2
  - @bamboocss/types@1.35.2
  - @bamboocss/postcss@1.35.2
  - @bamboocss/logger@1.35.2
  - @bamboocss/preset-bamboo@1.35.2
  - @bamboocss/preset-base@1.35.2

## 1.35.1

### Patch Changes

- @bamboocss/logger@1.35.1
- @bamboocss/node@1.35.1
- @bamboocss/postcss@1.35.1
- @bamboocss/preset-bamboo@1.35.1
- @bamboocss/preset-base@1.35.1
- @bamboocss/shared@1.35.1
- @bamboocss/token-dictionary@1.35.1
- @bamboocss/types@1.35.1

## 1.35.0

### Patch Changes

- Updated dependencies [9bfcf31]
  - @bamboocss/node@1.35.0
  - @bamboocss/types@1.35.0
  - @bamboocss/postcss@1.35.0
  - @bamboocss/logger@1.35.0
  - @bamboocss/preset-bamboo@1.35.0
  - @bamboocss/preset-base@1.35.0
  - @bamboocss/token-dictionary@1.35.0
  - @bamboocss/shared@1.35.0

## 1.34.1

### Patch Changes

- @bamboocss/node@1.34.1
- @bamboocss/postcss@1.34.1
- @bamboocss/logger@1.34.1
- @bamboocss/preset-bamboo@1.34.1
- @bamboocss/preset-base@1.34.1
- @bamboocss/shared@1.34.1
- @bamboocss/token-dictionary@1.34.1
- @bamboocss/types@1.34.1

## 1.34.0

### Patch Changes

- Updated dependencies [c49ab36]
- Updated dependencies [e66c5f8]
- Updated dependencies [c527ea7]
- Updated dependencies [10bf63d]
- Updated dependencies [c49ab36]
- Updated dependencies [09d4203]
- Updated dependencies [c527ea7]
  - @bamboocss/shared@1.34.0
  - @bamboocss/node@1.34.0
  - @bamboocss/types@1.34.0
  - @bamboocss/token-dictionary@1.34.0
  - @bamboocss/postcss@1.34.0
  - @bamboocss/logger@1.34.0
  - @bamboocss/preset-bamboo@1.34.0
  - @bamboocss/preset-base@1.34.0

## 1.33.0

### Patch Changes

- Updated dependencies [f7bbc14]
  - @bamboocss/types@1.33.0
  - @bamboocss/node@1.33.0
  - @bamboocss/logger@1.33.0
  - @bamboocss/preset-bamboo@1.33.0
  - @bamboocss/preset-base@1.33.0
  - @bamboocss/token-dictionary@1.33.0
  - @bamboocss/postcss@1.33.0
  - @bamboocss/shared@1.33.0

## 1.32.0

### Minor Changes

- 591a0f1: Remove `cssgen --minimal`, leaving the artifact type as the one way to say what `cssgen` emits.

  `cssgen <type>` names one of `preflight`, `tokens`, `static`, `global` or `keyframes`. `--minimal` answered the same
  question from the other side — everything _except_ those five — so which flag you reached for depended on which side
  of the set you were standing on.

  To ship only the css your source uses, generate everything and import the part you want. `--splitting` writes each
  layer as its own file:

  ```bash
  bamboo cssgen --splitting
  ```

  ```
  styled-system/styles/utilities.css   # what --minimal emitted
  styled-system/styles/recipes.css
  ```

  That costs the generation of the layers you then do not import, which is build time rather than shipped bytes.

- da792cc: Replace `textStyles`, `layerStyles` and `animationStyles` with one `theme.mixins`.

  The three were one mechanism wearing three names: one registration, one cascade layer, and a `{ description?, value }`
  shape they all shared. They differed only in which css properties the value was allowed to set — a partition that was
  arbitrary at the edges (`color` was legal in a text style _and_ a layer style; `transform` in a layer style but
  `transformOrigin` only in an animation style) and costly in the middle, since a bundle wanting a font _and_ a border
  had to be split across two keys and applied twice.

  ```ts
  // before
  export default defineConfig({
    theme: { textStyles, layerStyles, animationStyles },
  })
  css({ textStyle: 'body' })
  css({ layerStyle: 'card' })

  // after
  export default defineConfig({ theme: { mixins } })
  css({ mixin: 'body' })
  css({ mixin: 'card' })
  ```

  - `defineTextStyles`, `defineLayerStyles` and `defineAnimationStyles` become `defineMixins`.
  - The `text-styles.json`, `layer-styles.json` and `animation-styles.json` specs become `mixins.json`, and the MCP
    tools `get_text_styles`, `get_layer_styles` and `get_animation_styles` become `get_mixins`.
  - Setting a property that does not exist is still an error. `Mixin` is built on the same property set `css()` uses
    rather than on `SystemStyleObject`, whose index signature would accept a typo — which is what the three allowlists
    were really protecting, and why one of them shipped `hypens` for as long as it did.
  - One namespace now holds every mixin, so prefix them by purpose — `text.body`, `layer.card` — if the flat list gets
    long. Nesting already supports this, and `DEFAULT` gives each group a bare name.

  A config still setting one of the three old keys fails with the replacement named, rather than reverting to the
  default in silence.

- f3a8b0d: Remove `defineParts`, leaving one way to model a multi-part component.

  A slot recipe is that way. Where you wanted the other thing `defineParts` offered — a single class on the root that
  reaches its children, so there is nothing to bind — that was never an API, only an object whose keys are selectors:

  ```ts
  defineRecipe({
    className: 'checkbox',
    base: {
      '& [data-part="root"]': {
        display: 'flex',
        alignItems: 'center',
        gap: '2',
      },
      '& [data-part="control"]': { borderWidth: '1px', borderRadius: 'sm' },
    },
  })
  ```

  `defineParts` only keyed that object by part name instead. It earned its place when the selectors came from a Zag or
  Ark `anatomy` and were tedious to spell out — `&[data-scope="card"][data-part="root"], & [data-scope=…]` per part.
  That case is still real, and still a few lines that belong in your codebase rather than in the framework:

  ```ts
  const toParts =
    <T extends Record<string, { selector: string }>>(anatomy: T) =>
    (config: Partial<Record<keyof T, SystemStyleObject>>): SystemStyleObject =>
      Object.fromEntries(Object.entries(config).map(([part, styles]) => [anatomy[part].selector, styles]))
  ```

  The `Part` and `Parts` types go with it, as does the `defineParts` declaration in the generated `styled-system/types`.

  `no-config-function-in-source` also picks up `defineMixins` and drops `defineLayerStyles` and `defineTextStyles`,
  which the preceding mixins change had left behind — writing `defineMixins` in a source file was not being flagged.

### Patch Changes

- Updated dependencies [c29044f]
- Updated dependencies [b0ed6dc]
- Updated dependencies [8a66bb9]
- Updated dependencies [2b84dfa]
- Updated dependencies [591a0f1]
- Updated dependencies [aecf2b1]
- Updated dependencies [da792cc]
- Updated dependencies [1cc1860]
- Updated dependencies [c29044f]
- Updated dependencies [b2b4173]
- Updated dependencies [f3a8b0d]
- Updated dependencies [1243f93]
- Updated dependencies [c29044f]
  - @bamboocss/node@1.32.0
  - @bamboocss/shared@1.32.0
  - @bamboocss/types@1.32.0
  - @bamboocss/preset-base@1.32.0
  - @bamboocss/preset-bamboo@1.32.0
  - @bamboocss/postcss@1.32.0
  - @bamboocss/token-dictionary@1.32.0
  - @bamboocss/logger@1.32.0

## 1.31.0

### Minor Changes

- 8fb87ac: **Config options are renamed and removed in this release.** It ships as a minor, so nothing in the version
  signals it — the migration notes below are the warning. Every removed or renamed option is reported by name on the
  next build, with the edit to make.

  Settle the config surface before the API freezes: remove the options that were a second way to say something the
  config already said, and rename the ones whose names disagreed with each other.

  Every removed or renamed option is reported by name on the next build, with the edit to make. An unknown key is
  otherwise ignored in silence, which would mean the build reverting to a default without saying so.

  **`strict` now means exactly one thing.** It was six options across three packages covering three unrelated concerns.
  `strictTokens` and `strictPropertyValues` are unchanged and are the only remaining use of the word — both narrow
  generated TypeScript and neither affects a build.
  - `vite.strict` → `vite.failOnUnfolded`. Named for what it checks.
  - `PatternConfig.strict` + `PatternConfig.blocklist` → `PatternConfig.cssProps: 'all' | 'none' | { except }`. These
    were two answers to one question, and setting both silently dropped the blocklist — it is only applied to the type
    that `strict: true` does not emit.
  - `validation: 'none'` → `validation: 'off'`, matching `prune`.

  **`prune` separates the strategy from the report.**
  - `prune.tokens` takes `'off' | 'reachable' | 'accounted'` instead of a boolean.
  - `prune.unresolved` → `prune.unresolvedPath`, and is now orthogonal: the accounting pass is `tokens: 'accounted'`,
    the severity is `unresolvedPath`. `'off'` used to mean both "do not account" and "do not report", which left
    "account, and stay quiet" unsayable.
  - `prune.propertyRegistrations` is new. Dropping unreachable `@property` registrations was a side effect of
    `prune.tokens`, and happened even when it was off — so an option documented as keeping every token declaration
    quietly removed something else, and nothing could keep them.

  **Four `global*` keys become one.** `globalCss`, `globalFontface`, `globalPositionTry` and `globalVars` are
  `global.css`, `global.fontface`, `global.positionTry` and `global.vars`. `globalVars` was the one of the four
  `PresetCore` never listed, so it kept its `extend` wrapper in the resolved config while its siblings lost theirs.

  **`themes` becomes `theme.variants`.** One character from `theme`, both spellings valid, so the typo resolved to a
  different feature rather than to an error.

  **`presets` is authoritative.** What the config lists is what is loaded; an unset `presets` loads `defaultPresets`,
  exported from `@bamboocss/dev/presets`. `eject` is removed — `presets: []` is what it meant. Previously, listing any
  preset kept `@bamboocss/preset-base` and silently dropped `@bamboocss/preset-bamboo`, so `presets` was neither
  additive nor replacing, and `presets: []` meant "base only" rather than "none". A config that lists presets without
  `preset-base` now warns, because the change is otherwise silent: `preset-base` carries the utility table, so dropping
  it changes every generated class name rather than raising an error.

  ```ts
  import { defaultPresets } from '@bamboocss/dev/presets'

  export default defineConfig({ presets: [...defaultPresets, myPreset] })
  ```

  **`lightningcss` is removed; list the plugin instead.** Its only job was to push `pluginLightningcss()` into
  `plugins`. Naming the plugin from inside `@bamboocss/node` made it a static import, so
  `@bamboocss/plugin-lightningcss` — and the `lightningcss` native binary behind it — installed with every project
  whether or not the flag was set. It is a separate package so that cost can be opt-in.

  ```ts
  import { pluginLightningcss } from '@bamboocss/plugin-lightningcss'

  export default defineConfig({ plugins: [pluginLightningcss()] })
  ```

  **Fixes**
  - `validation` no longer switches off removed-option detection. Setting it to `'none'` returned before that check ran,
    so the one mechanism that tells an upgrader their setting is no longer read was disabled by a severity setting.
  - `forceConsistentTypeExtension` now emits import specifiers as `./x.mjs` rather than `./x.d.mts`, which is only legal
    under `allowImportingTsExtensions`. The flag previously emitted imports that did not resolve.

- 8fb87ac: Declare the generated output's entry points in its `package.json`, so `node16`/`nodenext` resolve them and
  the modules behind them stop being importable.

  `styled-system/tokens` did not resolve under those modes at all. They do no directory-index lookup and the file
  declared no `exports`, so the artifact had to be spelled `styled-system/tokens/index.mjs` — a workaround the token
  scanner still has to recognise because projects have it written down. Both spellings resolve now.

  The map also states the boundary: `./css`, `./tokens`, `./types`, `./patterns`, `./recipes`, `./themes`,
  `./styles.css`, `./styles/*` and `./specs/*` are the output. `css/merge-css`, `css/utilities`, `tokens/tokens` and
  `helpers` exist for the modules beside them and are no longer reachable from outside. A relative import within the
  generated directory is unaffected.

  This enforces where the output is resolved as a package — the component-library layout `emit-pkg` produces. It cannot
  enforce against a `paths` alias like `"styled-system/*": ["./styled-system/*"]`, which resolves straight to the
  filesystem without consulting `exports`; there the map documents intent rather than imposing it.

  `emit-pkg` now derives its map from the same builder instead of restating it. That copy had drifted: it advertised a
  `require` condition pointing at `.mjs`, for output that is ESM under every setting, and listed `./types` as a runtime
  entry for a directory holding only declarations.

### Patch Changes

- Updated dependencies [8fb87ac]
- Updated dependencies [8fb87ac]
- Updated dependencies [8fb87ac]
- Updated dependencies [cd5954c]
- Updated dependencies [9c32b00]
- Updated dependencies [9fdce28]
- Updated dependencies [8fb87ac]
- Updated dependencies [678bdee]
- Updated dependencies [a72eb09]
- Updated dependencies [774048b]
  - @bamboocss/types@1.31.0
  - @bamboocss/node@1.31.0
  - @bamboocss/preset-base@1.31.0
  - @bamboocss/logger@1.31.0
  - @bamboocss/shared@1.31.0
  - @bamboocss/token-dictionary@1.31.0
  - @bamboocss/preset-bamboo@1.31.0
  - @bamboocss/postcss@1.31.0

## 1.30.1

### Patch Changes

- Updated dependencies [2634909]
  - @bamboocss/node@1.30.1
  - @bamboocss/postcss@1.30.1
  - @bamboocss/logger@1.30.1
  - @bamboocss/preset-bamboo@1.30.1
  - @bamboocss/preset-base@1.30.1
  - @bamboocss/shared@1.30.1
  - @bamboocss/token-dictionary@1.30.1
  - @bamboocss/types@1.30.1

## 1.30.0

### Patch Changes

- Updated dependencies
- Updated dependencies [009294f]
- Updated dependencies [242b24c]
  - @bamboocss/types@1.30.0
  - @bamboocss/node@1.30.0
  - @bamboocss/shared@1.30.0
  - @bamboocss/logger@1.30.0
  - @bamboocss/preset-bamboo@1.30.0
  - @bamboocss/preset-base@1.30.0
  - @bamboocss/token-dictionary@1.30.0
  - @bamboocss/postcss@1.30.0

## 1.29.0

### Patch Changes

- Updated dependencies [5e6eafe]
- Updated dependencies [a137758]
- Updated dependencies [0dbe9c4]
- Updated dependencies [6114f6e]
- Updated dependencies [38393c4]
  - @bamboocss/node@1.29.0
  - @bamboocss/types@1.29.0
  - @bamboocss/token-dictionary@1.29.0
  - @bamboocss/postcss@1.29.0
  - @bamboocss/logger@1.29.0
  - @bamboocss/preset-bamboo@1.29.0
  - @bamboocss/preset-base@1.29.0
  - @bamboocss/shared@1.29.0

## 1.28.1

### Patch Changes

- Updated dependencies [31749e1]
- Updated dependencies [be39dac]
  - @bamboocss/types@1.28.1
  - @bamboocss/logger@1.28.1
  - @bamboocss/node@1.28.1
  - @bamboocss/preset-bamboo@1.28.1
  - @bamboocss/preset-base@1.28.1
  - @bamboocss/token-dictionary@1.28.1
  - @bamboocss/postcss@1.28.1
  - @bamboocss/shared@1.28.1

## 1.28.0

### Patch Changes

- Updated dependencies [d7fc408]
  - @bamboocss/types@1.28.0
  - @bamboocss/node@1.28.0
  - @bamboocss/logger@1.28.0
  - @bamboocss/preset-bamboo@1.28.0
  - @bamboocss/preset-base@1.28.0
  - @bamboocss/token-dictionary@1.28.0
  - @bamboocss/postcss@1.28.0
  - @bamboocss/shared@1.28.0

## 1.27.0

### Patch Changes

- @bamboocss/node@1.27.0
- @bamboocss/postcss@1.27.0
- @bamboocss/logger@1.27.0
- @bamboocss/preset-bamboo@1.27.0
- @bamboocss/preset-base@1.27.0
- @bamboocss/shared@1.27.0
- @bamboocss/token-dictionary@1.27.0
- @bamboocss/types@1.27.0

## 1.26.0

### Patch Changes

- Updated dependencies [5e8814c]
  - @bamboocss/node@1.26.0
  - @bamboocss/postcss@1.26.0
  - @bamboocss/logger@1.26.0
  - @bamboocss/preset-bamboo@1.26.0
  - @bamboocss/preset-base@1.26.0
  - @bamboocss/shared@1.26.0
  - @bamboocss/token-dictionary@1.26.0
  - @bamboocss/types@1.26.0

## 1.25.0

### Patch Changes

- @bamboocss/node@1.25.0
- @bamboocss/postcss@1.25.0
- @bamboocss/logger@1.25.0
- @bamboocss/preset-bamboo@1.25.0
- @bamboocss/preset-base@1.25.0
- @bamboocss/shared@1.25.0
- @bamboocss/token-dictionary@1.25.0
- @bamboocss/types@1.25.0

## 1.24.0

### Patch Changes

- @bamboocss/logger@1.24.0
- @bamboocss/node@1.24.0
- @bamboocss/postcss@1.24.0
- @bamboocss/preset-bamboo@1.24.0
- @bamboocss/preset-base@1.24.0
- @bamboocss/shared@1.24.0
- @bamboocss/token-dictionary@1.24.0
- @bamboocss/types@1.24.0

## 1.23.0

### Patch Changes

- Updated dependencies [b041398]
- Updated dependencies [087b884]
  - @bamboocss/types@1.23.0
  - @bamboocss/shared@1.23.0
  - @bamboocss/node@1.23.0
  - @bamboocss/logger@1.23.0
  - @bamboocss/preset-bamboo@1.23.0
  - @bamboocss/preset-base@1.23.0
  - @bamboocss/token-dictionary@1.23.0
  - @bamboocss/postcss@1.23.0

## 1.22.0

### Patch Changes

- Updated dependencies [edb97e2]
- Updated dependencies [fe62614]
- Updated dependencies [41d9052]
- Updated dependencies [a1062c9]
- Updated dependencies [43ae8a7]
- Updated dependencies [0e6a4ee]
  - @bamboocss/node@1.22.0
  - @bamboocss/types@1.22.0
  - @bamboocss/shared@1.22.0
  - @bamboocss/postcss@1.22.0
  - @bamboocss/logger@1.22.0
  - @bamboocss/preset-bamboo@1.22.0
  - @bamboocss/preset-base@1.22.0
  - @bamboocss/token-dictionary@1.22.0

## 1.21.0

### Patch Changes

- Updated dependencies [81f8789]
  - @bamboocss/shared@1.21.0
  - @bamboocss/node@1.21.0
  - @bamboocss/token-dictionary@1.21.0
  - @bamboocss/types@1.21.0
  - @bamboocss/postcss@1.21.0
  - @bamboocss/logger@1.21.0
  - @bamboocss/preset-bamboo@1.21.0
  - @bamboocss/preset-base@1.21.0

## 1.20.4

### Patch Changes

- @bamboocss/node@1.20.4
- @bamboocss/postcss@1.20.4
- @bamboocss/logger@1.20.4
- @bamboocss/preset-bamboo@1.20.4
- @bamboocss/preset-base@1.20.4
- @bamboocss/shared@1.20.4
- @bamboocss/token-dictionary@1.20.4
- @bamboocss/types@1.20.4

## 1.20.3

### Patch Changes

- @bamboocss/node@1.20.3
- @bamboocss/postcss@1.20.3
- @bamboocss/logger@1.20.3
- @bamboocss/preset-bamboo@1.20.3
- @bamboocss/preset-base@1.20.3
- @bamboocss/shared@1.20.3
- @bamboocss/token-dictionary@1.20.3
- @bamboocss/types@1.20.3

## 1.20.2

### Patch Changes

- Updated dependencies [8a73d2a]
  - @bamboocss/node@1.20.2
  - @bamboocss/postcss@1.20.2
  - @bamboocss/logger@1.20.2
  - @bamboocss/preset-bamboo@1.20.2
  - @bamboocss/preset-base@1.20.2
  - @bamboocss/shared@1.20.2
  - @bamboocss/token-dictionary@1.20.2
  - @bamboocss/types@1.20.2

## 1.20.1

### Patch Changes

- Updated dependencies [559924f]
  - @bamboocss/node@1.20.1
  - @bamboocss/postcss@1.20.1
  - @bamboocss/logger@1.20.1
  - @bamboocss/preset-bamboo@1.20.1
  - @bamboocss/preset-base@1.20.1
  - @bamboocss/shared@1.20.1
  - @bamboocss/token-dictionary@1.20.1
  - @bamboocss/types@1.20.1

## 1.20.0

### Patch Changes

- Updated dependencies [045ab1e]
- Updated dependencies [6512d6b]
- Updated dependencies [5d2c91c]
- Updated dependencies [10d7c9b]
- Updated dependencies [aa0f641]
- Updated dependencies [0441724]
- Updated dependencies [0e2cb31]
  - @bamboocss/preset-base@1.20.0
  - @bamboocss/node@1.20.0
  - @bamboocss/postcss@1.20.0
  - @bamboocss/types@1.20.0
  - @bamboocss/shared@1.20.0
  - @bamboocss/token-dictionary@1.20.0
  - @bamboocss/logger@1.20.0
  - @bamboocss/preset-bamboo@1.20.0

## 1.19.0

### Patch Changes

- @bamboocss/node@1.19.0
- @bamboocss/postcss@1.19.0
- @bamboocss/logger@1.19.0
- @bamboocss/preset-bamboo@1.19.0
- @bamboocss/preset-base@1.19.0
- @bamboocss/shared@1.19.0
- @bamboocss/token-dictionary@1.19.0
- @bamboocss/types@1.19.0

## 1.18.0

### Patch Changes

- Updated dependencies [21c6daa]
- Updated dependencies [070f9da]
- Updated dependencies [112cb85]
  - @bamboocss/shared@1.18.0
  - @bamboocss/node@1.18.0
  - @bamboocss/preset-base@1.18.0
  - @bamboocss/token-dictionary@1.18.0
  - @bamboocss/postcss@1.18.0
  - @bamboocss/types@1.18.0
  - @bamboocss/logger@1.18.0
  - @bamboocss/preset-bamboo@1.18.0

## 1.17.3

### Patch Changes

- @bamboocss/types@1.17.3
- @bamboocss/node@1.17.3
- @bamboocss/postcss@1.17.3
- @bamboocss/logger@1.17.3
- @bamboocss/preset-bamboo@1.17.3
- @bamboocss/preset-base@1.17.3
- @bamboocss/shared@1.17.3
- @bamboocss/token-dictionary@1.17.3

## 1.17.2

### Patch Changes

- Updated dependencies [7c81ec9]
- Updated dependencies [bf2d9c5]
  - @bamboocss/preset-base@1.17.2
  - @bamboocss/node@1.17.2
  - @bamboocss/postcss@1.17.2
  - @bamboocss/logger@1.17.2
  - @bamboocss/preset-bamboo@1.17.2
  - @bamboocss/shared@1.17.2
  - @bamboocss/token-dictionary@1.17.2
  - @bamboocss/types@1.17.2

## 1.17.1

### Patch Changes

- Updated dependencies [fc381ca]
  - @bamboocss/shared@1.17.1
  - @bamboocss/node@1.17.1
  - @bamboocss/token-dictionary@1.17.1
  - @bamboocss/postcss@1.17.1
  - @bamboocss/types@1.17.1
  - @bamboocss/logger@1.17.1
  - @bamboocss/preset-bamboo@1.17.1
  - @bamboocss/preset-base@1.17.1

## 1.17.0

### Patch Changes

- Updated dependencies [049a382]
- Updated dependencies [3cdd0d1]
- Updated dependencies [29f9bbe]
- Updated dependencies [d5347ab]
- Updated dependencies [c6154dc]
- Updated dependencies [7251bf8]
- Updated dependencies [355e573]
  - @bamboocss/node@1.17.0
  - @bamboocss/shared@1.17.0
  - @bamboocss/postcss@1.17.0
  - @bamboocss/preset-base@1.17.0
  - @bamboocss/types@1.17.0
  - @bamboocss/token-dictionary@1.17.0
  - @bamboocss/logger@1.17.0
  - @bamboocss/preset-bamboo@1.17.0

## 1.16.1

### Patch Changes

- @bamboocss/types@1.16.1
- @bamboocss/node@1.16.1
- @bamboocss/postcss@1.16.1
- @bamboocss/logger@1.16.1
- @bamboocss/preset-bamboo@1.16.1
- @bamboocss/preset-base@1.16.1
- @bamboocss/shared@1.16.1
- @bamboocss/token-dictionary@1.16.1

## 1.16.0

### Minor Changes

- f2d5df2: **Breaking:** remove the JSX factory. Bamboo no longer generates components, and is now framework-agnostic.

  `styled-system/jsx` is not emitted at all. `styled` / `bamboo`, style props, the `css` prop, `as`, `unstyled`,
  `createStyleContext`, `splitCssProps` and `isCssProperty` are gone, along with `jsxFramework`, `jsxFactory` and
  `jsxStyleProps`. There is no React, Vue, Solid, Preact or Qwik codegen left anywhere.

  ```tsx
  // before
  <styled.div color="red.300" padding="4">hi</styled.div>
  const Button = styled('button', buttonRecipe)

  // after
  <div className={css({ color: 'red.300', padding: '4' })}>hi</div>
  const Button = (props: ButtonProps) => {
    const [variantProps, rest] = buttonRecipe.splitVariantProps(props)
    return <button {...rest} className={cx(buttonRecipe(variantProps), props.className)} />
  }
  ```

  For an override to be deterministic the component's styles have to sit in a lower cascade layer, which means declaring
  them as a config recipe — an inline `cva()` is atomic and lands in `utilities` alongside the consumer. A component
  that instead accepts a style object and merges it with `css(base, props.css)` needs no layer at all.

  **Recipe JSX tracking is kept**, and no longer depends on `jsxFramework`. A recipe's `jsx: ['Button']` hint is how the
  build reads `<Button variant="danger">` on a component you wrote and emits `--variant_danger`; without it those
  variants would silently stop being generated. It costs no codegen — it is extraction only.

  **`createStyleContext` has no replacement in the box.** Compound components that need one slot to see the variant
  chosen at the root now write their own context; `docs/concepts/slot-recipes` documents the ~20-line version.

  What this removes beyond the API: the whole per-framework generator tree, `is-valid-prop` (a large module that shipped
  to the browser only to decide whether a prop was a style prop), `normalize-html`, the vite fold's JSX element path —
  which has nothing left to fold — and the per-framework test matrix.

  `@bamboocss/plugin-vue` and `@bamboocss/plugin-svelte` are unaffected: they transform source so the extractor can read
  it, which has nothing to do with the factory.

- d7226f0: **Breaking:** remove template literal syntax.

  The `syntax` config option is gone, along with the `--syntax` CLI flag and the syntax question `bamboo init -i` asked.
  Styles are written as objects.

  A project that set `syntax: 'template-literal'` now gets a TypeScript error on the option, and its tagged templates
  are no longer read by the extractor — `` css`color: red;` `` and `` styled.div`color: red;` `` produce no CSS. Convert
  them to object literals:

  ```tsx
  // before
  const One = styled.div`
    display: flex;
    width: 300px;
  `

  // after
  const One = styled('div', {
    base: {
      display: 'flex',
      width: '300px',
    },
  })
  ```

  Everything the option gated goes with it: the string-literal `css`/`conditions` runtimes and the string-literal JSX
  factories and types for all five frameworks, the parser's tagged-template branch, the extractor's `taggedTemplates`
  matcher, the vite fold's tagged-template path, and `astish` from `@bamboocss/shared`. Under the object syntax `cva`,
  `sva`, patterns, `is-valid-prop`, style props and `viewTransition()` were already the only paths taken, so their
  generated output is unchanged — the codegen artifacts are byte-identical.

### Patch Changes

- 3d665c4: Keep the render-parity test artifact out of the sandbox's extraction glob.

  `sandbox/runtime-perf/__tests__/render-parity.test.ts` writes `tree.folded.tsx` beside its source — deliberately, so
  the relative imports resolve identically — and deletes it when the file finishes. Any Bamboo context built while it
  exists globs it, and the glob reads every matched path with no guard. So a context created in one test file and the
  cleanup running in another race each other, and the loser fails with `ENOENT` pointing at a file no one was asking
  about:

  ```
  FAIL sandbox/runtime-perf/__tests__/bundle-size.test.ts
  Error: [bamboocss] ENOENT: no such file or directory, open '…/src/parity/tree.folded.tsx'
  ```

  Roughly one full-suite run in five. Excluding `**/*.folded.tsx` closes it: the folded file already carries literal
  class strings, so nothing needs to extract from it — its classes come from the `tree.tsx` it was folded from, which
  stays included.

  Test-only; no user-facing behaviour changes.

- 73f309e: Document the browser floor `@scope` introduces, and drop the last `styled-system/jsx` reference from the
  docs.

  Scoping a slot recipe's variants to its root emits `@scope`, which is newer than everything else Bamboo relies on. The
  browser support page now says so, with the raised floor (Chrome/Edge 118, Firefox 128, Safari/iOS 17.4, Opera 104)
  kept separate from the baseline — a project with no slot recipes, or none declaring a `root` slot, never emits one and
  is unaffected.

  It also says there is no polyfill and why: `@scope` picks between two matching rules by DOM proximity, which is the
  whole reason it is there and is not something a build step can compute. The way out is documented instead — slots that
  are not named `root` fall back to a variant class per slot.

  Three stale references are gone with it: the `./jsx` entry in the component library guide's `exports` example, the
  patterns page still describing patterns as usable "as functions or JSX elements", and a link from the slot recipes
  page to Park UI's `create-style-context.tsx` — which is built on `styled(Component, {}, { shouldForwardProp })` and so
  cannot compile against a Bamboo with no JSX factory.

- Updated dependencies [bb6d999]
- Updated dependencies [4877a67]
- Updated dependencies [645bb09]
- Updated dependencies [645bb09]
- Updated dependencies [645bb09]
- Updated dependencies [645bb09]
- Updated dependencies [645bb09]
- Updated dependencies [091f2e1]
- Updated dependencies [f2d5df2]
- Updated dependencies [1dbeb84]
- Updated dependencies [d7226f0]
- Updated dependencies [31d8577]
- Updated dependencies [2ab7f19]
- Updated dependencies [ca558fb]
- Updated dependencies [645bb09]
  - @bamboocss/node@1.16.0
  - @bamboocss/shared@1.16.0
  - @bamboocss/types@1.16.0
  - @bamboocss/preset-base@1.16.0
  - @bamboocss/postcss@1.16.0
  - @bamboocss/token-dictionary@1.16.0
  - @bamboocss/logger@1.16.0
  - @bamboocss/preset-bamboo@1.16.0

## 1.15.0

### Patch Changes

- Updated dependencies [3014989]
  - @bamboocss/shared@1.15.0
  - @bamboocss/types@1.15.0
  - @bamboocss/node@1.15.0
  - @bamboocss/token-dictionary@1.15.0
  - @bamboocss/logger@1.15.0
  - @bamboocss/preset-bamboo@1.15.0
  - @bamboocss/preset-base@1.15.0
  - @bamboocss/postcss@1.15.0

## 1.14.0

### Minor Changes

- b567114: Drop `@bamboocss/studio` and `@bamboocss/astro-plugin-studio`.

  Studio was the visual token browser inherited from Panda — an Astro site that read your config and rendered your
  colors, typography and spacing. It is no longer maintained, and both packages are removed from the repository. The
  versions already on npm stay there and keep working; they will not receive further releases.

  **`bamboo studio` is gone.** Its own flags — `--build`, `--preview`, `--port`, `--host`, `--outdir` and `--base` —
  have no replacement. If you have it in a `package.json` script, remove the script.

  **`config.studio` is gone**, along with the `StudioOptions` type. Leaving `studio: { logo, outdir, inject }` in a
  config is now a TypeScript error rather than a silent no-op, so delete it — a plain-JS config will keep ignoring it.
  `Context.studio` is removed from `@bamboocss/core`, and the `MISSING_STUDIO` error code from `@bamboocss/shared`'s
  `BambooErrorCode` union.

  The studio output directory is no longer written to `.gitignore` by `bamboo init`. Existing `.gitignore` files keep
  their `styled-system-studio` line until you remove it, which is harmless — nothing writes there anymore.

  For documenting a design system, [spec files](/docs/theming/spec) generate a machine-readable description of your
  tokens, recipes and patterns that you can render however you like, and the [MCP server](/docs/ai/mcp-server) exposes
  the same information to AI tooling.

- f59d235: Ship the MCP server as a standalone package and drop it from `@bamboocss/dev`.

  `@bamboocss/mcp` was a dependency of the CLI, so every Bamboo install downloaded the Model Context Protocol SDK — and
  with it Express, Hono, `jose`, `ajv`, `cors` and a dozen more. It came to roughly 18 MB, against about 3 MB for
  ts-morph, postcss and lightningcss combined: the AI server outweighed the CSS toolchain several times over, in every
  project, whether or not anything ever started it.

  It now has its own binary and is fetched on demand:

  ```bash
  npx -y @bamboocss/mcp
  ```

  **`bamboo mcp` is gone.** It remains as a command only to say so — on stderr, since a stale config invokes it as the
  server and clients discard stdout. Run `bamboo init-mcp` again to rewrite your client config: the generated entry
  changes from `["bamboo", "mcp"]` to `["-y", "@bamboocss/mcp@<version>"]`.

  It is pinned rather than left to float. The server loads your config with its own copy of `@bamboocss/node`, and every
  `@bamboocss/*` package releases in lockstep, so an unpinned `latest` would read a pinned project's design system
  through a different release of the thing that defines it. Re-run `init-mcp` after upgrading Bamboo.

  **`bamboo init-mcp` is unaffected**, and still needs nothing beyond `@bamboocss/dev`. Writing a client config never
  touched the SDK, so that half moved into the CLI rather than out of reach; only starting the server needs the protocol
  dependencies.

  `@bamboocss/mcp` no longer exports `initMcpConfig`, `MCP_CLIENTS` or the client types — those belong to the CLI now —
  and no longer depends on `@clack/prompts`.

### Patch Changes

- Updated dependencies [b567114]
- Updated dependencies [d1d05fc]
  - @bamboocss/types@1.14.0
  - @bamboocss/node@1.14.0
  - @bamboocss/shared@1.14.0
  - @bamboocss/logger@1.14.0
  - @bamboocss/preset-bamboo@1.14.0
  - @bamboocss/preset-base@1.14.0
  - @bamboocss/token-dictionary@1.14.0
  - @bamboocss/postcss@1.14.0

## 1.13.2

### Patch Changes

- Updated dependencies [79c9872]
- Updated dependencies [61fe88c]
- Updated dependencies [be3764d]
- Updated dependencies [7a63215]
- Updated dependencies [2130606]
  - @bamboocss/shared@1.13.2
  - @bamboocss/config@1.13.2
  - @bamboocss/node@1.13.2
  - @bamboocss/token-dictionary@1.13.2
  - @bamboocss/types@1.13.2
  - @bamboocss/mcp@1.13.2
  - @bamboocss/postcss@1.13.2
  - @bamboocss/logger@1.13.2
  - @bamboocss/preset-bamboo@1.13.2
  - @bamboocss/preset-base@1.13.2

## 1.13.1

### Patch Changes

- Publish the 1.13.x line under npm Trusted Publishing.

  1.13.0 was versioned, tagged and merged, but never reached npm: the publish ran without a credential, and npm answers
  an unauthenticated PUT with E404 rather than 401, so the failure read as a missing package rather than as an auth
  error.

  Publishing is now authenticated by OIDC instead of a long-lived NPM_TOKEN. All 26 packages name this repository,
  `release.yaml` and the `release` environment as their trusted publisher.

  No source changes. `@bamboocss/**` is a fixed group, so this entry moves every package in it.
  - @bamboocss/config@1.13.1
  - @bamboocss/logger@1.13.1
  - @bamboocss/mcp@1.13.1
  - @bamboocss/node@1.13.1
  - @bamboocss/postcss@1.13.1
  - @bamboocss/preset-bamboo@1.13.1
  - @bamboocss/preset-base@1.13.1
  - @bamboocss/shared@1.13.1
  - @bamboocss/token-dictionary@1.13.1
  - @bamboocss/types@1.13.1

## 1.13.0

### Patch Changes

- fd03a10: Give the generated `styled-system/package.json` a name.

  That file was emitted without one, deliberately, so that two outputs in a single workspace could not collide on the
  same name. But a nameless `package.json` is not one a workspace scanner skips — it is one it refuses. pnpm, npm and
  changesets all abort with `missing the "name" field`, and none of them say which directory produced it. Any project
  whose workspace globs reach an output directory hit this, and a recursive glob such as `packages/**` reaches every one
  of them.

  The name is derived from `outdir`, the only input that is both deterministic and portable (`cwd` is absolute, so
  putting it in generated output would make that output differ per machine). Two projects in one workspace that both
  keep the default `outdir` therefore still collide — but on a duplicate-name error that names both paths, rather than
  on a missing field that points nowhere.

  `bamboo emit-pkg` used to treat a missing name as its signal that the file was generated rather than hand-authored. It
  now keys on the file being `private` with no `version`, which is what actually distinguishes generated output from a
  package the consumer owns — a private _named_ package in the output directory is the `@acme/styled-system` workspace
  layout the component-library guide recommends, and that is still left alone.

- 5b16a67: Emit a `package.json` into the generated output so bundlers can tree-shake the barrels.

  The output is a plain directory rather than an installed package, so it carried no `sideEffects` hint and bundlers had
  to assume every module mutates something. Nothing a barrel reached could be dropped:
  `import { Box } from 'styled-system/jsx'` retained all twenty pattern modules, and a deep import at
  `styled-system/jsx/box.mjs` — which nobody writes — produced a materially smaller bundle than the documented one.

  Declaring `sideEffects` closes that gap. A barrel import now costs what the deep import costs: 41.2 KB to 34.1 KB
  minified, 12.6 KB to 10.7 KB gzipped, with nineteen unused pattern modules dropped. The patterns barrel improves by
  about 26%; recipes scale with how many are defined. In a real Vite build of `sandbox/vite-ts` — an app that does use
  several patterns, so it sees less than the ceiling — JS goes from 242.22 KB to 236.95 KB with the CSS byte-identical.

  Two details in the emitted file are load-bearing:
  - `sideEffects` lists CSS globs rather than being a bare `false`. A bare `false` permits a bundler to drop
    `import 'styled-system/styles.css'`, which is how the stylesheet reaches CLI-flow apps. Vite happens to retain CSS
    imports regardless, but webpack historically does not. Both `*.css` and `**/*.css` are listed because the stylesheet
    is emitted at the root and, under `splitting`, in `styles/`.
  - `type` is set to `module`. Adding a `package.json` makes the output its own package boundary, so `.js` output would
    stop inheriting the consumer's `type` and be re-read as CommonJS. The emitted code is always ESM. This is a no-op
    under the default `mjs` extension and only matters for `outExtension: 'js'`.
  - `private` is set, and the file stays nameless. That same package boundary lets a workspace glob match the output
    directory — this repo's own `packages/**` now does — so it is marked unpublishable, and left unnamed so that several
    outputs in one workspace cannot collide.

  Unlike the rest of the output, `package.json` is not exclusively ours — `emit-pkg` writes entrypoints to the same path
  and consumers hand-edit it — so it is merged rather than overwritten. Only absent keys are filled in: an existing
  `exports` map survives, and a deliberate `sideEffects` or `type` is left as it stands. A file that cannot be parsed as
  JSON is reported and skipped rather than replaced. The merged file keeps its trailing newline, so a consumer who
  tracks it in source control does not see a diff on every codegen.

  `emit-pkg` had to learn the other half of that arrangement. It used to write a whole package only when the directory
  had none, and codegen now always leaves one there, so it would have contributed an entrypoint map to a nameless
  `private` file and stopped — no `name`, no `version`, no `license`, nothing publishable or resolvable. It now reads a
  file without a `name` as ours: it supplies the identity that file lacks and lifts the `private` flag that kept a
  nameless directory unpublishable, which is the whole point of running it. A file that already carries a `name` belongs
  to the consumer and is still left alone but for `exports`.

  This only affects what bundlers may discard, so no CSS output or class name changes.

- 5b881ee: Use absolute paths consistently in the file watchers.

  The watch handlers removed files by absolute path but reloaded and created them by the path the watcher reported,
  which is relative to the working directory. A reload that fails to match the file the project holds does nothing and
  returns quietly, leaving the edit unread — and with cross-file extraction, an unread edit also leaves every importer
  emitting the previous styles.

  A newly added file now also rebuilds the files importing it, since it can satisfy an import that previously resolved
  to nothing.

- Updated dependencies [9ffb84f]
- Updated dependencies [e482ab3]
- Updated dependencies [7bf6798]
- Updated dependencies [11c9409]
- Updated dependencies [9ffb84f]
- Updated dependencies [a07286f]
- Updated dependencies [a5cb5a8]
- Updated dependencies [9ffb84f]
- Updated dependencies [a966bae]
- Updated dependencies [5b16a67]
- Updated dependencies [5b881ee]
- Updated dependencies [5b881ee]
- Updated dependencies [5b881ee]
- Updated dependencies [5b881ee]
  - @bamboocss/shared@1.13.0
  - @bamboocss/types@1.13.0
  - @bamboocss/node@1.13.0
  - @bamboocss/config@1.13.0
  - @bamboocss/token-dictionary@1.13.0
  - @bamboocss/logger@1.13.0
  - @bamboocss/mcp@1.13.0
  - @bamboocss/preset-bamboo@1.13.0
  - @bamboocss/preset-base@1.13.0
  - @bamboocss/postcss@1.13.0

## 1.12.3

### Patch Changes

- @bamboocss/node@1.12.3
- @bamboocss/mcp@1.12.3
- @bamboocss/postcss@1.12.3
- @bamboocss/config@1.12.3
- @bamboocss/logger@1.12.3
- @bamboocss/preset-bamboo@1.12.3
- @bamboocss/preset-base@1.12.3
- @bamboocss/shared@1.12.3
- @bamboocss/token-dictionary@1.12.3
- @bamboocss/types@1.12.3

## 1.12.2

### Patch Changes

- @bamboocss/config@1.12.2
- @bamboocss/logger@1.12.2
- @bamboocss/mcp@1.12.2
- @bamboocss/node@1.12.2
- @bamboocss/postcss@1.12.2
- @bamboocss/preset-bamboo@1.12.2
- @bamboocss/preset-base@1.12.2
- @bamboocss/shared@1.12.2
- @bamboocss/token-dictionary@1.12.2
- @bamboocss/types@1.12.2

## 1.12.1

### Patch Changes

- @bamboocss/config@1.12.1
- @bamboocss/logger@1.12.1
- @bamboocss/mcp@1.12.1
- @bamboocss/node@1.12.1
- @bamboocss/postcss@1.12.1
- @bamboocss/preset-bamboo@1.12.1
- @bamboocss/preset-base@1.12.1
- @bamboocss/shared@1.12.1
- @bamboocss/token-dictionary@1.12.1
- @bamboocss/types@1.12.1

## 1.12.0

### Patch Changes

- @bamboocss/config@1.12.0
- @bamboocss/logger@1.12.0
- @bamboocss/mcp@1.12.0
- @bamboocss/node@1.12.0
- @bamboocss/postcss@1.12.0
- @bamboocss/preset-bamboo@1.12.0
- @bamboocss/preset-base@1.12.0
- @bamboocss/shared@1.12.0
- @bamboocss/token-dictionary@1.12.0
- @bamboocss/types@1.12.0

## 1.11.5

### Patch Changes

- f3591d8: Fix chunk splitting in build output that produced unstable hashed filenames in published packages.
  - Build each entry point independently to prevent shared-code extraction into chunk files
  - Fix build ordering race condition where studio postbuild could run before CLI was ready

- Updated dependencies [f3591d8]
  - @bamboocss/config@1.11.5
  - @bamboocss/node@1.11.5
  - @bamboocss/mcp@1.11.5
  - @bamboocss/postcss@1.11.5
  - @bamboocss/logger@1.11.5
  - @bamboocss/preset-bamboo@1.11.5
  - @bamboocss/preset-base@1.11.5
  - @bamboocss/shared@1.11.5
  - @bamboocss/token-dictionary@1.11.5
  - @bamboocss/types@1.11.5

## 1.11.4

### Patch Changes

- fix pre-commit hook leaving dirty state after commit
- Updated dependencies
  - @bamboocss/config@1.11.4
  - @bamboocss/logger@1.11.4
  - @bamboocss/mcp@1.11.4
  - @bamboocss/node@1.11.4
  - @bamboocss/postcss@1.11.4
  - @bamboocss/preset-bamboo@1.11.4
  - @bamboocss/preset-base@1.11.4
  - @bamboocss/shared@1.11.4
  - @bamboocss/token-dictionary@1.11.4
  - @bamboocss/types@1.11.4

## 1.11.3

### Patch Changes

- fix shared package producing chunk files that break codegen output
- Updated dependencies
  - @bamboocss/config@1.11.3
  - @bamboocss/logger@1.11.3
  - @bamboocss/mcp@1.11.3
  - @bamboocss/node@1.11.3
  - @bamboocss/postcss@1.11.3
  - @bamboocss/preset-bamboo@1.11.3
  - @bamboocss/preset-base@1.11.3
  - @bamboocss/shared@1.11.3
  - @bamboocss/token-dictionary@1.11.3
  - @bamboocss/types@1.11.3

## 1.11.2

### Patch Changes

- 0f53be6: rename chakra-ui to bamboocss links
- 0f49103: migrate build to tsdown
- migrate to tsdown
- Updated dependencies [0f49103]
- Updated dependencies [05705ba]
- Updated dependencies
  - @bamboocss/token-dictionary@1.11.2
  - @bamboocss/preset-bamboo@1.11.2
  - @bamboocss/preset-base@1.11.2
  - @bamboocss/postcss@1.11.2
  - @bamboocss/config@1.11.2
  - @bamboocss/logger@1.11.2
  - @bamboocss/shared@1.11.2
  - @bamboocss/types@1.11.2
  - @bamboocss/node@1.11.2
  - @bamboocss/mcp@1.11.2

## 1.11.1

### Patch Changes

- Updated dependencies [fe9c11c]
- Updated dependencies [2f29aa6]
- Updated dependencies [2ea9205]
  - @bamboocss/mcp@1.11.1
  - @bamboocss/node@1.11.1
  - @bamboocss/postcss@1.11.1
  - @bamboocss/types@1.11.1
  - @bamboocss/config@1.11.1
  - @bamboocss/logger@1.11.1
  - @bamboocss/preset-base@1.11.1
  - @bamboocss/preset-bamboo@1.11.1
  - @bamboocss/token-dictionary@1.11.1
  - @bamboocss/shared@1.11.1

## 1.11.0

### Patch Changes

- Updated dependencies [78869ae]
  - @bamboocss/types@1.11.0
  - @bamboocss/config@1.11.0
  - @bamboocss/node@1.11.0
  - @bamboocss/logger@1.11.0
  - @bamboocss/mcp@1.11.0
  - @bamboocss/preset-base@1.11.0
  - @bamboocss/preset-bamboo@1.11.0
  - @bamboocss/token-dictionary@1.11.0
  - @bamboocss/postcss@1.11.0
  - @bamboocss/shared@1.11.0

## 1.10.0

### Patch Changes

- 53a2c1b: Re-export the `AnimationStyles` type from `@bamboocss/dev` so the return type of `defineAnimationStyles` can
  be resolved by consumers. Previously only `TextStyles` and `LayerStyles` were re-exported, which caused the generated
  `.d.ts` to fall back to a deep qualified name (`_bamboocss_types.AnimationStyles`) for `defineAnimationStyles`'s
  inferred return type. When consumers could not resolve that path, the value was inferred as `any` and triggered
  `@typescript-eslint/no-unsafe-assignment` at call sites.
- c31f3a2: Improve error handling architecture across all packages.
- Updated dependencies [c31f3a2]
- Updated dependencies [bbaa8b3]
- Updated dependencies [22b444d]
- Updated dependencies [bc2b8d7]
- Updated dependencies [8d3b6f8]
- Updated dependencies [44457bb]
  - @bamboocss/types@1.10.0
  - @bamboocss/logger@1.10.0
  - @bamboocss/shared@1.10.0
  - @bamboocss/config@1.10.0
  - @bamboocss/node@1.10.0
  - @bamboocss/token-dictionary@1.10.0
  - @bamboocss/mcp@1.10.0
  - @bamboocss/preset-base@1.10.0
  - @bamboocss/preset-bamboo@1.10.0
  - @bamboocss/postcss@1.10.0

## 1.9.1

### Patch Changes

- Updated dependencies [d02fcf6]
- Updated dependencies [028e755]
  - @bamboocss/token-dictionary@1.9.1
  - @bamboocss/preset-base@1.9.1
  - @bamboocss/mcp@1.9.1
  - @bamboocss/node@1.9.1
  - @bamboocss/config@1.9.1
  - @bamboocss/postcss@1.9.1
  - @bamboocss/logger@1.9.1
  - @bamboocss/preset-bamboo@1.9.1
  - @bamboocss/shared@1.9.1
  - @bamboocss/types@1.9.1

## 1.9.0

### Patch Changes

- @bamboocss/node@1.9.0
- @bamboocss/mcp@1.9.0
- @bamboocss/postcss@1.9.0
- @bamboocss/config@1.9.0
- @bamboocss/logger@1.9.0
- @bamboocss/preset-base@1.9.0
- @bamboocss/preset-bamboo@1.9.0
- @bamboocss/shared@1.9.0
- @bamboocss/token-dictionary@1.9.0
- @bamboocss/types@1.9.0

## 1.8.2

### Patch Changes

- Updated dependencies [331d1a5]
  - @bamboocss/types@1.8.2
  - @bamboocss/config@1.8.2
  - @bamboocss/logger@1.8.2
  - @bamboocss/mcp@1.8.2
  - @bamboocss/node@1.8.2
  - @bamboocss/preset-base@1.8.2
  - @bamboocss/preset-bamboo@1.8.2
  - @bamboocss/token-dictionary@1.8.2
  - @bamboocss/postcss@1.8.2
  - @bamboocss/shared@1.8.2

## 1.8.1

### Patch Changes

- Updated dependencies [3c86c29]
  - @bamboocss/types@1.8.1
  - @bamboocss/config@1.8.1
  - @bamboocss/logger@1.8.1
  - @bamboocss/mcp@1.8.1
  - @bamboocss/node@1.8.1
  - @bamboocss/preset-base@1.8.1
  - @bamboocss/preset-bamboo@1.8.1
  - @bamboocss/token-dictionary@1.8.1
  - @bamboocss/postcss@1.8.1
  - @bamboocss/shared@1.8.1

## 1.8.0

### Minor Changes

- d7e46e0: **MCP Server [NEW]**: Added MCP server that exposes tools for AI agents.

  ```sh
  bamboo init-mcp
  ```

  Available tools: `get_tokens`, `get_semantic_tokens`, `get_recipes`, `get_patterns`, `get_conditions`,
  `get_text_styles`, `get_layer_styles`, `get_keyframes`, `get_config`, `get_usage_report`.

### Patch Changes

- Updated dependencies [d7e46e0]
  - @bamboocss/mcp@1.8.0
  - @bamboocss/config@1.8.0
  - @bamboocss/logger@1.8.0
  - @bamboocss/node@1.8.0
  - @bamboocss/postcss@1.8.0
  - @bamboocss/preset-base@1.8.0
  - @bamboocss/preset-bamboo@1.8.0
  - @bamboocss/shared@1.8.0
  - @bamboocss/token-dictionary@1.8.0
  - @bamboocss/types@1.8.0

## 1.7.3

### Patch Changes

- Updated dependencies [ac2fb5c]
  - @bamboocss/preset-base@1.7.3
  - @bamboocss/config@1.7.3
  - @bamboocss/node@1.7.3
  - @bamboocss/postcss@1.7.3
  - @bamboocss/logger@1.7.3
  - @bamboocss/preset-bamboo@1.7.3
  - @bamboocss/shared@1.7.3
  - @bamboocss/token-dictionary@1.7.3
  - @bamboocss/types@1.7.3

## 1.7.2

### Patch Changes

- Updated dependencies [af2d06b]
  - @bamboocss/node@1.7.2
  - @bamboocss/postcss@1.7.2
  - @bamboocss/config@1.7.2
  - @bamboocss/logger@1.7.2
  - @bamboocss/preset-base@1.7.2
  - @bamboocss/preset-bamboo@1.7.2
  - @bamboocss/shared@1.7.2
  - @bamboocss/token-dictionary@1.7.2
  - @bamboocss/types@1.7.2

## 1.7.1

### Patch Changes

- Updated dependencies [cc04ebf]
- Updated dependencies [b6e9646]
  - @bamboocss/config@1.7.1
  - @bamboocss/preset-base@1.7.1
  - @bamboocss/node@1.7.1
  - @bamboocss/postcss@1.7.1
  - @bamboocss/logger@1.7.1
  - @bamboocss/preset-bamboo@1.7.1
  - @bamboocss/shared@1.7.1
  - @bamboocss/token-dictionary@1.7.1
  - @bamboocss/types@1.7.1

## 1.7.0

### Minor Changes

- 86b30b1: Add `bamboo spec` command to generate specification files for your theme (useful for documentation). This
  command generates JSON specification files containing metadata, examples, and usage information.

  ```bash
  # Generate all spec files
  bamboo spec

  # Custom output directory
  bamboo spec --outdir custom/specs
  ```

  **Token Spec Structure:**

  ```json
  {
    "type": "tokens",
    "data": [
      {
        "type": "aspectRatios",
        "values": [
          {
            "name": "square",
            "value": "1 / 1",
            "cssVar": "var(--aspect-ratios-square)"
          }
        ],
        "tokenFunctionExamples": ["token('aspectRatios.square')"],
        "functionExamples": ["css({ aspectRatio: 'square' })"],
        "jsxExamples": ["<Box aspectRatio=\"square\" />"]
      }
    ]
  }
  ```

  **Spec Usage:**

  ```javascript
  import tokens from 'styled-system/specs/tokens'
  import recipes from 'styled-system/specs/recipes'
  ```

### Patch Changes

- Updated dependencies [86b30b1]
  - @bamboocss/node@1.7.0
  - @bamboocss/types@1.7.0
  - @bamboocss/postcss@1.7.0
  - @bamboocss/config@1.7.0
  - @bamboocss/logger@1.7.0
  - @bamboocss/preset-base@1.7.0
  - @bamboocss/preset-bamboo@1.7.0
  - @bamboocss/token-dictionary@1.7.0
  - @bamboocss/shared@1.7.0

## 1.6.1

### Patch Changes

- @bamboocss/node@1.6.1
- @bamboocss/postcss@1.6.1
- @bamboocss/config@1.6.1
- @bamboocss/logger@1.6.1
- @bamboocss/preset-base@1.6.1
- @bamboocss/preset-bamboo@1.6.1
- @bamboocss/shared@1.6.1
- @bamboocss/token-dictionary@1.6.1
- @bamboocss/types@1.6.1

## 1.6.0

### Minor Changes

- 8aa3c64: Add `--splitting` flag to `cssgen` command for per-layer CSS output.

  When enabled, CSS is emitted as separate files instead of a single `styles.css`:

  ```
  styled-system/
  ├── styles.css              # @layer declaration + @imports
  └── styles/
      ├── reset.css           # Preflight/reset CSS
      ├── global.css          # Global CSS
      ├── tokens.css          # Design tokens
      ├── utilities.css       # Utility classes
      ├── recipes/
      │   ├── index.css       # @imports all recipe files
      │   └── {recipe}.css    # Individual recipe styles
      └── themes/
          └── {theme}.css     # Theme tokens (not auto-imported)
  ```

  Usage:

  ```bash
  bamboo cssgen --splitting
  ```

### Patch Changes

- Updated dependencies [8aa3c64]
  - @bamboocss/node@1.6.0
  - @bamboocss/postcss@1.6.0
  - @bamboocss/config@1.6.0
  - @bamboocss/logger@1.6.0
  - @bamboocss/preset-base@1.6.0
  - @bamboocss/preset-bamboo@1.6.0
  - @bamboocss/shared@1.6.0
  - @bamboocss/token-dictionary@1.6.0
  - @bamboocss/types@1.6.0

## 1.5.1

### Patch Changes

- @bamboocss/node@1.5.1
- @bamboocss/postcss@1.5.1
- @bamboocss/config@1.5.1
- @bamboocss/logger@1.5.1
- @bamboocss/preset-base@1.5.1
- @bamboocss/preset-bamboo@1.5.1
- @bamboocss/shared@1.5.1
- @bamboocss/token-dictionary@1.5.1
- @bamboocss/types@1.5.1

## 1.5.0

### Patch Changes

- Updated dependencies [91c65ff]
  - @bamboocss/types@1.5.0
  - @bamboocss/token-dictionary@1.5.0
  - @bamboocss/config@1.5.0
  - @bamboocss/logger@1.5.0
  - @bamboocss/node@1.5.0
  - @bamboocss/preset-base@1.5.0
  - @bamboocss/preset-bamboo@1.5.0
  - @bamboocss/postcss@1.5.0
  - @bamboocss/shared@1.5.0

## 1.4.3

### Patch Changes

- 65aed7b: Fix `Cannot find module '@bamboocss/preset-base'` error when using Bun or other package managers that use
  flat `node_modules` structures.
- Updated dependencies [bb32028]
- Updated dependencies [84a0de9]
  - @bamboocss/node@1.4.3
  - @bamboocss/postcss@1.4.3
  - @bamboocss/config@1.4.3
  - @bamboocss/logger@1.4.3
  - @bamboocss/preset-base@1.4.3
  - @bamboocss/preset-bamboo@1.4.3
  - @bamboocss/shared@1.4.3
  - @bamboocss/token-dictionary@1.4.3
  - @bamboocss/types@1.4.3

## 1.4.2

### Patch Changes

- 1290a27: Only log errors that are instances of `BambooError`, preventing test framework and other non-Bamboo errors
  from being logged during development.
- Updated dependencies [0679f6f]
- Updated dependencies [1290a27]
- Updated dependencies [70420dd]
  - @bamboocss/config@1.4.2
  - @bamboocss/shared@1.4.2
  - @bamboocss/token-dictionary@1.4.2
  - @bamboocss/node@1.4.2
  - @bamboocss/types@1.4.2
  - @bamboocss/postcss@1.4.2
  - @bamboocss/logger@1.4.2
  - @bamboocss/preset-bamboo@1.4.2

## 1.4.1

### Patch Changes

- @bamboocss/node@1.4.1
- @bamboocss/postcss@1.4.1
- @bamboocss/config@1.4.1
- @bamboocss/logger@1.4.1
- @bamboocss/preset-bamboo@1.4.1
- @bamboocss/shared@1.4.1
- @bamboocss/token-dictionary@1.4.1
- @bamboocss/types@1.4.1

## 1.4.0

### Patch Changes

- Updated dependencies [29cf719]
  - @bamboocss/preset-bamboo@1.4.0
  - @bamboocss/node@1.4.0
  - @bamboocss/config@1.4.0
  - @bamboocss/postcss@1.4.0
  - @bamboocss/logger@1.4.0
  - @bamboocss/shared@1.4.0
  - @bamboocss/token-dictionary@1.4.0
  - @bamboocss/types@1.4.0

## 1.3.1

### Patch Changes

- @bamboocss/node@1.3.1
- @bamboocss/postcss@1.3.1
- @bamboocss/config@1.3.1
- @bamboocss/logger@1.3.1
- @bamboocss/preset-bamboo@1.3.1
- @bamboocss/shared@1.3.1
- @bamboocss/token-dictionary@1.3.1
- @bamboocss/types@1.3.1

## 1.3.0

### Patch Changes

- Updated dependencies [70efd73]
  - @bamboocss/types@1.3.0
  - @bamboocss/node@1.3.0
  - @bamboocss/config@1.3.0
  - @bamboocss/logger@1.3.0
  - @bamboocss/preset-bamboo@1.3.0
  - @bamboocss/token-dictionary@1.3.0
  - @bamboocss/postcss@1.3.0
  - @bamboocss/shared@1.3.0

## 1.2.0

### Patch Changes

- Updated dependencies [ae7cc8d]
  - @bamboocss/preset-bamboo@1.2.0
  - @bamboocss/config@1.2.0
  - @bamboocss/node@1.2.0
  - @bamboocss/postcss@1.2.0
  - @bamboocss/logger@1.2.0
  - @bamboocss/shared@1.2.0
  - @bamboocss/token-dictionary@1.2.0
  - @bamboocss/types@1.2.0

## 1.1.0

### Patch Changes

- Updated dependencies [47a0011]
- Updated dependencies [e8ec0aa]
  - @bamboocss/types@1.1.0
  - @bamboocss/config@1.1.0
  - @bamboocss/shared@1.1.0
  - @bamboocss/logger@1.1.0
  - @bamboocss/node@1.1.0
  - @bamboocss/preset-bamboo@1.1.0
  - @bamboocss/token-dictionary@1.1.0
  - @bamboocss/postcss@1.1.0

## 1.0.1

### Patch Changes

- @bamboocss/node@1.0.1
- @bamboocss/config@1.0.1
- @bamboocss/postcss@1.0.1
- @bamboocss/logger@1.0.1
- @bamboocss/preset-bamboo@1.0.1
- @bamboocss/shared@1.0.1
- @bamboocss/token-dictionary@1.0.1
- @bamboocss/types@1.0.1

## 1.0.0

### Major Changes

- a3bcbea: Stable release of BambooCSS

  ### Style Context

  Add `createStyleContext` function to framework artifacts for React, Preact, Solid, and Vue frameworks

  ```tsx
  import { sva } from 'styled-system/css'
  import { createStyleContext } from 'styled-system/jsx'

  const card = sva({
    slots: ['root', 'label'],
    base: {
      root: {
        color: 'red',
        bg: 'red.300',
      },
      label: {
        fontWeight: 'medium',
      },
    },
    variants: {
      size: {
        sm: {
          root: {
            padding: '10px',
          },
        },
        md: {
          root: {
            padding: '20px',
          },
        },
      },
    },
    defaultVariants: {
      size: 'sm',
    },
  })

  const { withProvider, withContext } = createStyleContext(card)

  const CardRoot = withProvider('div', 'root')
  const CardLabel = withContext('label', 'label')
  ```

  Then, use like this:

  ```tsx
  <CardRoot size="sm">
    <CardLabel>Hello</CardLabel>
  </CardRoot>
  ```

### Patch Changes

- Updated dependencies [a3bcbea]
  - @bamboocss/config@1.0.0
  - @bamboocss/logger@1.0.0
  - @bamboocss/node@1.0.0
  - @bamboocss/postcss@1.0.0
  - @bamboocss/preset-bamboo@1.0.0
  - @bamboocss/shared@1.0.0
  - @bamboocss/token-dictionary@1.0.0
  - @bamboocss/types@1.0.0

## 0.54.0

### Patch Changes

- Updated dependencies [76c4e61]
- Updated dependencies [efa060d]
- Updated dependencies [d2aede5]
- Updated dependencies [fdf5142]
  - @bamboocss/node@0.54.0
  - @bamboocss/shared@0.54.0
  - @bamboocss/token-dictionary@0.54.0
  - @bamboocss/postcss@0.54.0
  - @bamboocss/config@0.54.0
  - @bamboocss/types@0.54.0
  - @bamboocss/logger@0.54.0
  - @bamboocss/preset-bamboo@0.54.0

## 0.53.7

### Patch Changes

- @bamboocss/node@0.53.7
- @bamboocss/postcss@0.53.7
- @bamboocss/config@0.53.7
- @bamboocss/logger@0.53.7
- @bamboocss/preset-bamboo@0.53.7
- @bamboocss/shared@0.53.7
- @bamboocss/token-dictionary@0.53.7
- @bamboocss/types@0.53.7

## 0.53.6

### Patch Changes

- @bamboocss/node@0.53.6
- @bamboocss/postcss@0.53.6
- @bamboocss/config@0.53.6
- @bamboocss/logger@0.53.6
- @bamboocss/preset-bamboo@0.53.6
- @bamboocss/shared@0.53.6
- @bamboocss/token-dictionary@0.53.6
- @bamboocss/types@0.53.6

## 0.53.5

### Patch Changes

- @bamboocss/node@0.53.5
- @bamboocss/config@0.53.5
- @bamboocss/postcss@0.53.5
- @bamboocss/logger@0.53.5
- @bamboocss/preset-bamboo@0.53.5
- @bamboocss/shared@0.53.5
- @bamboocss/token-dictionary@0.53.5
- @bamboocss/types@0.53.5

## 0.53.4

### Patch Changes

- @bamboocss/node@0.53.4
- @bamboocss/postcss@0.53.4
- @bamboocss/config@0.53.4
- @bamboocss/logger@0.53.4
- @bamboocss/preset-bamboo@0.53.4
- @bamboocss/shared@0.53.4
- @bamboocss/token-dictionary@0.53.4
- @bamboocss/types@0.53.4

## 0.53.3

### Patch Changes

- @bamboocss/config@0.53.3
- @bamboocss/node@0.53.3
- @bamboocss/postcss@0.53.3
- @bamboocss/logger@0.53.3
- @bamboocss/preset-bamboo@0.53.3
- @bamboocss/shared@0.53.3
- @bamboocss/token-dictionary@0.53.3
- @bamboocss/types@0.53.3

## 0.53.2

### Patch Changes

- Updated dependencies [cde9a0b]
  - @bamboocss/config@0.53.2
  - @bamboocss/node@0.53.2
  - @bamboocss/postcss@0.53.2
  - @bamboocss/logger@0.53.2
  - @bamboocss/preset-bamboo@0.53.2
  - @bamboocss/shared@0.53.2
  - @bamboocss/token-dictionary@0.53.2
  - @bamboocss/types@0.53.2

## 0.53.1

### Patch Changes

- Updated dependencies [b67a2a5]
  - @bamboocss/node@0.53.1
  - @bamboocss/postcss@0.53.1
  - @bamboocss/config@0.53.1
  - @bamboocss/logger@0.53.1
  - @bamboocss/preset-bamboo@0.53.1
  - @bamboocss/shared@0.53.1
  - @bamboocss/token-dictionary@0.53.1
  - @bamboocss/types@0.53.1

## 0.53.0

### Patch Changes

- Updated dependencies [5286731]
  - @bamboocss/types@0.53.0
  - @bamboocss/node@0.53.0
  - @bamboocss/config@0.53.0
  - @bamboocss/logger@0.53.0
  - @bamboocss/preset-bamboo@0.53.0
  - @bamboocss/token-dictionary@0.53.0
  - @bamboocss/postcss@0.53.0
  - @bamboocss/shared@0.53.0

## 0.52.0

### Patch Changes

- Updated dependencies [2f1165c]
  - @bamboocss/node@0.52.0
  - @bamboocss/config@0.52.0
  - @bamboocss/postcss@0.52.0
  - @bamboocss/logger@0.52.0
  - @bamboocss/preset-bamboo@0.52.0
  - @bamboocss/shared@0.52.0
  - @bamboocss/token-dictionary@0.52.0
  - @bamboocss/types@0.52.0

## 0.51.1

### Patch Changes

- 9c1327e: Redesigned the recipe report to be more readable and easier to understand. We simplified the `JSX` and
  `Function` columns to be more concise.

  **BEFORE**

  ```sh
  ╔════════════════════════╤══════════════════════╤═════════╤═══════╤════════════╤═══════════════════╤══════════╗
  ║ Recipe                 │ Variant Combinations │ Usage % │ JSX % │ Function % │ Most Used         │ Found in ║
  ╟────────────────────────┼──────────────────────┼─────────┼───────┼────────────┼───────────────────┼──────────╢
  ║ someRecipe (1 variant) │ 1 / 1                │ 100%    │ 100%  │ 0%         │ size.small        │ 1 file   ║
  ╟────────────────────────┼──────────────────────┼─────────┼───────┼────────────┼───────────────────┼──────────╢
  ║ button (4 variants)    │ 7 / 9                │ 77.78%  │ 63%   │ 38%        │ size.md, size.sm, │ 2 files  ║
  ║                        │                      │         │       │            │ state.focused,    │          ║
  ║                        │                      │         │       │            │ variant.danger,   │          ║
  ║                        │                      │         │       │            │ variant.primary   │          ║
  ╚════════════════════════╧══════════════════════╧═════════╧═══════╧════════════╧═══════════════════╧══════════╝
  ```

  **AFTER**

  ```sh
  ╔════════════════════════╤════════════════╤═══════════════════╤═══════════════════╤══════════╤═══════════╗
  ║ Recipe                 │ Variant values │ Usage %           │ Most used         │ Found in │ Used as   ║
  ╟────────────────────────┼────────────────┼───────────────────┼───────────────────┼──────────┼───────────╢
  ║ someRecipe (1 variant) │ 1 value        │ 100% (1 value)    │ size.small        │ 1 file   │ jsx: 100% ║
  ║                        │                │                   │                   │          │ fn: 0%    ║
  ╟────────────────────────┼────────────────┼───────────────────┼───────────────────┼──────────┼───────────╢
  ║ button (4 variants)    │ 9 values       │ 77.78% (7 values) │ size.md, size.sm, │ 2 files  │ jsx: 63%  ║
  ║                        │                │                   │ state.focused,    │          │ fn: 38%   ║
  ║                        │                │                   │ variant.danger,   │          │           ║
  ║                        │                │                   │ variant.primary   │          │           ║
  ╚════════════════════════╧════════════════╧═══════════════════╧═══════════════════╧══════════╧═══════════╝
  ```

  - @bamboocss/node@0.51.1
  - @bamboocss/postcss@0.51.1
  - @bamboocss/config@0.51.1
  - @bamboocss/logger@0.51.1
  - @bamboocss/preset-bamboo@0.51.1
  - @bamboocss/shared@0.51.1
  - @bamboocss/token-dictionary@0.51.1
  - @bamboocss/types@0.51.1

## 0.51.0

### Patch Changes

- Updated dependencies [d68ad1f]
  - @bamboocss/config@0.51.0
  - @bamboocss/types@0.51.0
  - @bamboocss/node@0.51.0
  - @bamboocss/logger@0.51.0
  - @bamboocss/preset-bamboo@0.51.0
  - @bamboocss/token-dictionary@0.51.0
  - @bamboocss/postcss@0.51.0
  - @bamboocss/shared@0.51.0

## 0.50.0

### Minor Changes

- fea78c7: Adds support for static analysis of used tokens and recipe variants. It helps to get a birds-eye view of how
  your design system is used and answers the following questions:
  - What tokens are most used?
  - What recipe variants are most used?
  - How many hardcoded values vs tokens do we have?

  ```sh
  bamboo analyze --scope=<token|recipe>
  ```

  > Still work in progress but we're excited to get your feedback!

### Patch Changes

- Updated dependencies [fea78c7]
- Updated dependencies [ad89b90]
  - @bamboocss/types@0.50.0
  - @bamboocss/node@0.50.0
  - @bamboocss/token-dictionary@0.50.0
  - @bamboocss/config@0.50.0
  - @bamboocss/logger@0.50.0
  - @bamboocss/preset-bamboo@0.50.0
  - @bamboocss/postcss@0.50.0
  - @bamboocss/shared@0.50.0

## 0.49.0

### Minor Changes

- 97a0e4d: Add support for animation styles. Animation styles focus solely on animations, allowing you to orchestrate
  animation properties.

  > Pairing animation styles with text styles and layer styles can make your styles a lot cleaner.

  Here's an example of this:

  ```jsx
  import { defineAnimationStyles } from '@bamboocss/dev'

  export const animationStyles = defineAnimationStyles({
    'slide-fade-in': {
      value: {
        transformOrigin: 'var(--transform-origin)',
        animationDuration: 'fast',
        '&[data-placement^=top]': {
          animationName: 'slide-from-top, fade-in',
        },
        '&[data-placement^=bottom]': {
          animationName: 'slide-from-bottom, fade-in',
        },
        '&[data-placement^=left]': {
          animationName: 'slide-from-left, fade-in',
        },
        '&[data-placement^=right]': {
          animationName: 'slide-from-right, fade-in',
        },
      },
    },
  })
  ```

  With that defined, I can use it in my recipe or css like so:

  ```js
  export const popoverSlotRecipe = defineSlotRecipe({
    slots: anatomy.keys(),
    base: {
      content: {
        _open: {
          animationStyle: 'scale-fade-in',
        },
        _closed: {
          animationStyle: 'scale-fade-out',
        },
      },
    },
  })
  ```

  This feature will drive consumers to lean in towards CSS for animations rather than JS. Composing animation names is a
  powerful feature we should encourage consumers to use.

### Patch Changes

- Updated dependencies [97a0e4d]
  - @bamboocss/preset-bamboo@0.49.0
  - @bamboocss/types@0.49.0
  - @bamboocss/config@0.49.0
  - @bamboocss/node@0.49.0
  - @bamboocss/logger@0.49.0
  - @bamboocss/token-dictionary@0.49.0
  - @bamboocss/postcss@0.49.0
  - @bamboocss/shared@0.49.0

## 0.48.1

### Patch Changes

- Updated dependencies [fd87f3a]
  - @bamboocss/node@0.48.1
  - @bamboocss/postcss@0.48.1
  - @bamboocss/config@0.48.1
  - @bamboocss/logger@0.48.1
  - @bamboocss/preset-bamboo@0.48.1
  - @bamboocss/shared@0.48.1
  - @bamboocss/token-dictionary@0.48.1
  - @bamboocss/types@0.48.1

## 0.48.0

### Patch Changes

- @bamboocss/config@0.48.0
- @bamboocss/node@0.48.0
- @bamboocss/postcss@0.48.0
- @bamboocss/logger@0.48.0
- @bamboocss/preset-bamboo@0.48.0
- @bamboocss/shared@0.48.0
- @bamboocss/token-dictionary@0.48.0
- @bamboocss/types@0.48.0

## 0.47.1

### Patch Changes

- Updated dependencies [50fc8ef]
- Updated dependencies [144113f]
  - @bamboocss/postcss@0.47.1
  - @bamboocss/token-dictionary@0.47.1
  - @bamboocss/node@0.47.1
  - @bamboocss/config@0.47.1
  - @bamboocss/logger@0.47.1
  - @bamboocss/preset-bamboo@0.47.1
  - @bamboocss/shared@0.47.1
  - @bamboocss/types@0.47.1

## 0.47.0

### Patch Changes

- Updated dependencies [5e683ee]
  - @bamboocss/token-dictionary@0.47.0
  - @bamboocss/types@0.47.0
  - @bamboocss/node@0.47.0
  - @bamboocss/config@0.47.0
  - @bamboocss/logger@0.47.0
  - @bamboocss/preset-bamboo@0.47.0
  - @bamboocss/postcss@0.47.0
  - @bamboocss/shared@0.47.0

## 0.46.1

### Patch Changes

- @bamboocss/node@0.46.1
- @bamboocss/postcss@0.46.1
- @bamboocss/config@0.46.1
- @bamboocss/logger@0.46.1
- @bamboocss/preset-bamboo@0.46.1
- @bamboocss/shared@0.46.1
- @bamboocss/token-dictionary@0.46.1
- @bamboocss/types@0.46.1

## 0.46.0

### Patch Changes

- Updated dependencies [54426a2]
  - @bamboocss/shared@0.46.0
  - @bamboocss/config@0.46.0
  - @bamboocss/node@0.46.0
  - @bamboocss/token-dictionary@0.46.0
  - @bamboocss/postcss@0.46.0
  - @bamboocss/types@0.46.0
  - @bamboocss/logger@0.46.0
  - @bamboocss/preset-bamboo@0.46.0

## 0.45.2

### Patch Changes

- @bamboocss/node@0.45.2
- @bamboocss/postcss@0.45.2
- @bamboocss/config@0.45.2
- @bamboocss/logger@0.45.2
- @bamboocss/preset-bamboo@0.45.2
- @bamboocss/shared@0.45.2
- @bamboocss/token-dictionary@0.45.2
- @bamboocss/types@0.45.2

## 0.45.1

### Patch Changes

- Updated dependencies [26924c7]
- Updated dependencies [3439ecf]
  - @bamboocss/node@0.45.1
  - @bamboocss/token-dictionary@0.45.1
  - @bamboocss/postcss@0.45.1
  - @bamboocss/config@0.45.1
  - @bamboocss/logger@0.45.1
  - @bamboocss/preset-bamboo@0.45.1
  - @bamboocss/shared@0.45.1
  - @bamboocss/types@0.45.1

## 0.45.0

### Patch Changes

- Updated dependencies [dcc9053]
- Updated dependencies [a21fcfe]
- Updated dependencies [552dd4b]
  - @bamboocss/types@0.45.0
  - @bamboocss/token-dictionary@0.45.0
  - @bamboocss/shared@0.45.0
  - @bamboocss/node@0.45.0
  - @bamboocss/config@0.45.0
  - @bamboocss/logger@0.45.0
  - @bamboocss/preset-bamboo@0.45.0
  - @bamboocss/postcss@0.45.0

## 0.44.0

### Patch Changes

- Updated dependencies [d7f5cab]
- Updated dependencies [c99cb75]
  - @bamboocss/config@0.44.0
  - @bamboocss/types@0.44.0
  - @bamboocss/node@0.44.0
  - @bamboocss/logger@0.44.0
  - @bamboocss/preset-bamboo@0.44.0
  - @bamboocss/token-dictionary@0.44.0
  - @bamboocss/postcss@0.44.0
  - @bamboocss/shared@0.44.0

## 0.43.0

### Patch Changes

- Updated dependencies [e952f82]
  - @bamboocss/types@0.43.0
  - @bamboocss/node@0.43.0
  - @bamboocss/config@0.43.0
  - @bamboocss/logger@0.43.0
  - @bamboocss/preset-bamboo@0.43.0
  - @bamboocss/token-dictionary@0.43.0
  - @bamboocss/postcss@0.43.0
  - @bamboocss/shared@0.43.0

## 0.42.0

### Patch Changes

- 19c3a2c: Minor changes to the format of the `bamboo analyze --output coverage.json` file
- 17a1932: [BREAKING] Removed the legacy `config.optimize` option because it was redundant. Now, we always optimize the
  generated CSS where possible.
- Updated dependencies [e157dd1]
- Updated dependencies [19c3a2c]
- Updated dependencies [f00ff88]
- Updated dependencies [ec64819]
- Updated dependencies [17a1932]
  - @bamboocss/preset-bamboo@0.42.0
  - @bamboocss/types@0.42.0
  - @bamboocss/node@0.42.0
  - @bamboocss/config@0.42.0
  - @bamboocss/logger@0.42.0
  - @bamboocss/token-dictionary@0.42.0
  - @bamboocss/postcss@0.42.0
  - @bamboocss/shared@0.42.0

## 0.41.0

### Patch Changes

- @bamboocss/node@0.41.0
- @bamboocss/types@0.41.0
- @bamboocss/postcss@0.41.0
- @bamboocss/config@0.41.0
- @bamboocss/logger@0.41.0
- @bamboocss/preset-bamboo@0.41.0
- @bamboocss/shared@0.41.0
- @bamboocss/token-dictionary@0.41.0

## 0.40.1

### Patch Changes

- 48ff2b8: Improve `bamboo init --outdir=<x>` command to reflect `outdir` in generated bamboo config file.
- Updated dependencies [48ff2b8]
  - @bamboocss/node@0.40.1
  - @bamboocss/postcss@0.40.1
  - @bamboocss/config@0.40.1
  - @bamboocss/logger@0.40.1
  - @bamboocss/preset-bamboo@0.40.1
  - @bamboocss/shared@0.40.1
  - @bamboocss/token-dictionary@0.40.1
  - @bamboocss/types@0.40.1

## 0.40.0

### Minor Changes

- 5dcdae4: Improve monorepo setup DX by exposing some cli flags

  ### `bamboo init`
  - Added new flag `--no-codegen` to skip codegen during initialization
  - Added new flag `--outdir` to specify the output directory for generated files

  ### `bamboo emit-pkg`
  - Added new `--base` flag to specify the base directory for the entrypoints in the generated `package.json#exports`
    field

### Patch Changes

- Updated dependencies [5dcdae4]
  - @bamboocss/node@0.40.0
  - @bamboocss/postcss@0.40.0
  - @bamboocss/config@0.40.0
  - @bamboocss/logger@0.40.0
  - @bamboocss/preset-bamboo@0.40.0
  - @bamboocss/shared@0.40.0
  - @bamboocss/token-dictionary@0.40.0
  - @bamboocss/types@0.40.0

## 0.39.2

### Patch Changes

- Updated dependencies [2f63a4c]
- Updated dependencies [1f636eb]
- Updated dependencies [8b07cdf]
- Updated dependencies [af15ae9]
  - @bamboocss/config@0.39.2
  - @bamboocss/shared@0.39.2
  - @bamboocss/node@0.39.2
  - @bamboocss/token-dictionary@0.39.2
  - @bamboocss/postcss@0.39.2
  - @bamboocss/types@0.39.2
  - @bamboocss/logger@0.39.2
  - @bamboocss/preset-bamboo@0.39.2

## 0.39.1

### Patch Changes

- @bamboocss/node@0.39.1
- @bamboocss/postcss@0.39.1
- @bamboocss/config@0.39.1
- @bamboocss/logger@0.39.1
- @bamboocss/preset-bamboo@0.39.1
- @bamboocss/shared@0.39.1
- @bamboocss/token-dictionary@0.39.1
- @bamboocss/types@0.39.1

## 0.39.0

### Patch Changes

- Updated dependencies [221c9a2]
- Updated dependencies [c3e797e]
- Updated dependencies [935ec86]
  - @bamboocss/types@0.39.0
  - @bamboocss/shared@0.39.0
  - @bamboocss/config@0.39.0
  - @bamboocss/node@0.39.0
  - @bamboocss/logger@0.39.0
  - @bamboocss/preset-bamboo@0.39.0
  - @bamboocss/token-dictionary@0.39.0
  - @bamboocss/postcss@0.39.0

## 0.38.0

### Patch Changes

- Updated dependencies [96b47b3]
- Updated dependencies [bc09d89]
- Updated dependencies [2c8b933]
  - @bamboocss/types@0.38.0
  - @bamboocss/token-dictionary@0.38.0
  - @bamboocss/shared@0.38.0
  - @bamboocss/node@0.38.0
  - @bamboocss/config@0.38.0
  - @bamboocss/logger@0.38.0
  - @bamboocss/preset-bamboo@0.38.0
  - @bamboocss/postcss@0.38.0

## 0.37.2

### Patch Changes

- d238b17: Add missing type PatternProperties to solve a TypeScript issue (The inferred type of xxx cannot be named
  without a reference)
- Updated dependencies [84edd38]
- Updated dependencies [74dfb3e]
  - @bamboocss/node@0.37.2
  - @bamboocss/types@0.37.2
  - @bamboocss/postcss@0.37.2
  - @bamboocss/config@0.37.2
  - @bamboocss/logger@0.37.2
  - @bamboocss/preset-bamboo@0.37.2
  - @bamboocss/token-dictionary@0.37.2
  - @bamboocss/shared@0.37.2

## 0.37.1

### Patch Changes

- Updated dependencies [93dc9f5]
- Updated dependencies [88049c5]
- Updated dependencies [885963c]
- Updated dependencies [99870bb]
  - @bamboocss/token-dictionary@0.37.1
  - @bamboocss/config@0.37.1
  - @bamboocss/types@0.37.1
  - @bamboocss/shared@0.37.1
  - @bamboocss/node@0.37.1
  - @bamboocss/logger@0.37.1
  - @bamboocss/preset-bamboo@0.37.1
  - @bamboocss/postcss@0.37.1

## 0.37.0

### Patch Changes

- Updated dependencies [7daf159]
- Updated dependencies [bcfb5c5]
- Updated dependencies [6247dfb]
  - @bamboocss/shared@0.37.0
  - @bamboocss/types@0.37.0
  - @bamboocss/node@0.37.0
  - @bamboocss/config@0.37.0
  - @bamboocss/token-dictionary@0.37.0
  - @bamboocss/logger@0.37.0
  - @bamboocss/preset-bamboo@0.37.0
  - @bamboocss/postcss@0.37.0

## 0.36.1

### Patch Changes

- Updated dependencies [bd0cb07]
  - @bamboocss/types@0.36.1
  - @bamboocss/node@0.36.1
  - @bamboocss/config@0.36.1
  - @bamboocss/logger@0.36.1
  - @bamboocss/preset-bamboo@0.36.1
  - @bamboocss/token-dictionary@0.36.1
  - @bamboocss/postcss@0.36.1
  - @bamboocss/shared@0.36.1

## 0.36.0

### Minor Changes

- 2691f16: Add `config.themes` to easily define and apply a theme on multiple tokens at once, using data attributes and
  CSS variables.

  Can pre-generate multiple themes with token overrides as static CSS, but also dynamically import and inject a theme
  stylesheet at runtime (browser or server).

  Example:

  ```ts
  // bamboo.config.ts
  import { defineConfig } from '@bamboocss/dev'

  export default defineConfig({
    // ...
    // main theme
    theme: {
      extend: {
        tokens: {
          colors: {
            text: { value: 'blue' },
          },
        },
        semanticTokens: {
          colors: {
            body: {
              value: {
                base: '{colors.blue.600}',
                _osDark: '{colors.blue.400}',
              },
            },
          },
        },
      },
    },
    // alternative theme variants
    themes: {
      primary: {
        tokens: {
          colors: {
            text: { value: 'red' },
          },
        },
        semanticTokens: {
          colors: {
            muted: { value: '{colors.red.200}' },
            body: {
              value: {
                base: '{colors.red.600}',
                _osDark: '{colors.red.400}',
              },
            },
          },
        },
      },
      secondary: {
        tokens: {
          colors: {
            text: { value: 'blue' },
          },
        },
        semanticTokens: {
          colors: {
            muted: { value: '{colors.blue.200}' },
            body: {
              value: {
                base: '{colors.blue.600}',
                _osDark: '{colors.blue.400}',
              },
            },
          },
        },
      },
    },
  })
  ```

  ### Pregenerating themes

  By default, no additional theme variant is generated, you need to specify the specific themes you want to generate in
  `staticCss.themes` to include them in the CSS output.

  ```ts
  // bamboo.config.ts
  import { defineConfig } from '@bamboocss/dev'

  export default defineConfig({
    // ...
    staticCss: {
      themes: ['primary', 'secondary'],
    },
  })
  ```

  This will generate the following CSS:

  ```css
  @layer tokens {
    :where(:root, :host) {
      --colors-text: blue;
      --colors-body: var(--colors-blue-600);
    }

    [data-bamboo-theme='primary'] {
      --colors-text: red;
      --colors-muted: var(--colors-red-200);
      --colors-body: var(--colors-red-600);
    }

    @media (prefers-color-scheme: dark) {
      :where(:root, :host) {
        --colors-body: var(--colors-blue-400);
      }

      [data-bamboo-theme='primary'] {
        --colors-body: var(--colors-red-400);
      }
    }
  }
  ```

  ***

  An alternative way of applying a theme is by using the new `styled-system/themes` entrypoint where you can import the
  themes CSS variables and use them in your app.

  > ℹ️ The `styled-system/themes` will always contain every themes (tree-shaken if not used), `staticCss.themes` only
  > applies to the CSS output.

  Each theme has a corresponding JSON file with a similar structure:

  ```json
  {
    "name": "primary",
    "id": "bamboo-themes-primary",
    "dataAttr": "primary",
    "css": "[data-bamboo-theme=primary] { ... }"
  }
  ```

  > ℹ️ Note that for semantic tokens, you need to use inject the theme styles, see below

  Dynamically import a theme using its name:

  ```ts
  import { getTheme } from '../styled-system/themes'

  const theme = await getTheme('red')
  //    ^? {
  //     name: "red";
  //     id: string;
  //     css: string;
  // }
  ```

  Inject the theme styles into the DOM:

  ```ts
  import { injectTheme } from '../styled-system/themes'

  const theme = await getTheme('red')
  injectTheme(document.documentElement, theme) // this returns the injected style element
  ```

  ***

  SSR example with NextJS:

  ```tsx
  // app/layout.tsx
  import { Inter } from 'next/font/google'
  import { cookies } from 'next/headers'
  import { ThemeName, getTheme } from '../../styled-system/themes'

  export default async function RootLayout({ children }: { children: React.ReactNode }) {
    const store = cookies()
    const themeName = store.get('theme')?.value as ThemeName
    const theme = themeName && (await getTheme(themeName))

    return (
      <html lang="en" data-bamboo-theme={themeName ? themeName : undefined}>
        {themeName && (
          <head>
            <style type="text/css" id={theme.id} dangerouslySetInnerHTML={{ __html: theme.css }} />
          </head>
        )}
        <body>{children}</body>
      </html>
    )
  }

  // app/page.tsx
  import { getTheme, injectTheme } from '../../styled-system/themes'

  export default function Home() {
    return (
      <>
        <button
          onClick={async () => {
            const current = document.documentElement.dataset.bambooTheme
            const next = current === 'primary' ? 'secondary' : 'primary'
            const theme = await getTheme(next)
            setCookie('theme', next, 7)
            injectTheme(document.documentElement, theme)
          }}
        >
          swap theme
        </button>
      </>
    )
  }

  // Set a Cookie
  function setCookie(cName: string, cValue: any, expDays: number) {
    let date = new Date()
    date.setTime(date.getTime() + expDays * 24 * 60 * 60 * 1000)
    const expires = 'expires=' + date.toUTCString()
    document.cookie = cName + '=' + cValue + '; ' + expires + '; path=/'
  }
  ```

  ***

  Finally, you can create a theme contract to ensure that all themes have the same structure:

  ```ts
  import { defineThemeContract } from '@bamboocss/dev'

  const defineTheme = defineThemeContract({
    tokens: {
      colors: {
        red: { value: '' }, // theme implementations must have a red color
      },
    },
  })

  defineTheme({
    selector: '.theme-secondary',
    tokens: {
      colors: {
        // ^^^^   Property 'red' is missing in type '{}' but required in type '{ red: { value: string; }; }'
        //
        // fixed with
        // red: { value: 'red' },
      },
    },
  })
  ```

### Patch Changes

- Updated dependencies [445c7b6]
- Updated dependencies [3af3940]
- Updated dependencies [861a280]
- Updated dependencies [2691f16]
- Updated dependencies [340f4f1]
- Updated dependencies [fabdabe]
  - @bamboocss/config@0.36.0
  - @bamboocss/token-dictionary@0.36.0
  - @bamboocss/types@0.36.0
  - @bamboocss/node@0.36.0
  - @bamboocss/logger@0.36.0
  - @bamboocss/preset-bamboo@0.36.0
  - @bamboocss/postcss@0.36.0
  - @bamboocss/shared@0.36.0

## 0.35.0

### Patch Changes

- Updated dependencies [f2fdc48]
- Updated dependencies [50db354]
- Updated dependencies [f6befbf]
- Updated dependencies [888feae]
- Updated dependencies [a0c4d27]
  - @bamboocss/token-dictionary@0.35.0
  - @bamboocss/config@0.35.0
  - @bamboocss/types@0.35.0
  - @bamboocss/postcss@0.35.0
  - @bamboocss/node@0.35.0
  - @bamboocss/logger@0.35.0
  - @bamboocss/preset-bamboo@0.35.0
  - @bamboocss/shared@0.35.0

## 0.34.3

### Patch Changes

- @bamboocss/node@0.34.3
- @bamboocss/postcss@0.34.3
- @bamboocss/config@0.34.3
- @bamboocss/logger@0.34.3
- @bamboocss/preset-bamboo@0.34.3
- @bamboocss/shared@0.34.3
- @bamboocss/token-dictionary@0.34.3
- @bamboocss/types@0.34.3

## 0.34.2

### Patch Changes

- Updated dependencies [58388de]
  - @bamboocss/config@0.34.2
  - @bamboocss/node@0.34.2
  - @bamboocss/types@0.34.2
  - @bamboocss/postcss@0.34.2
  - @bamboocss/logger@0.34.2
  - @bamboocss/preset-bamboo@0.34.2
  - @bamboocss/shared@0.34.2
  - @bamboocss/token-dictionary@0.34.2

## 0.34.1

### Patch Changes

- Updated dependencies [d4942e0]
  - @bamboocss/token-dictionary@0.34.1
  - @bamboocss/node@0.34.1
  - @bamboocss/postcss@0.34.1
  - @bamboocss/config@0.34.1
  - @bamboocss/logger@0.34.1
  - @bamboocss/preset-bamboo@0.34.1
  - @bamboocss/shared@0.34.1
  - @bamboocss/types@0.34.1

## 0.34.0

### Patch Changes

- Updated dependencies [1c63216]
- Updated dependencies [64d5144]
- Updated dependencies [d1516c8]
- Updated dependencies [9f04427]
  - @bamboocss/config@0.34.0
  - @bamboocss/token-dictionary@0.34.0
  - @bamboocss/types@0.34.0
  - @bamboocss/node@0.34.0
  - @bamboocss/logger@0.34.0
  - @bamboocss/preset-bamboo@0.34.0
  - @bamboocss/postcss@0.34.0
  - @bamboocss/shared@0.34.0

## 0.33.0

### Patch Changes

- 1968da5: Allow dynamically recording profiling session by pressing the `p` key in your terminal when using the
  `--cpu-prof` flag for long-running sessions (with `-w` or `--watch` for `bamboo` / `bamboo cssgen` /
  `bamboo codegen`).
- 8feeb95: Add `definePlugin` config functions for type-safety around plugins, add missing `plugins` in config
  dependencies to trigger a config reload on `plugins` change
- Updated dependencies [34d94cf]
- Updated dependencies [1968da5]
- Updated dependencies [e855c64]
- Updated dependencies [8feeb95]
- Updated dependencies [cca50d5]
- Updated dependencies [fde37d8]
  - @bamboocss/token-dictionary@0.33.0
  - @bamboocss/node@0.33.0
  - @bamboocss/config@0.33.0
  - @bamboocss/types@0.33.0
  - @bamboocss/postcss@0.33.0
  - @bamboocss/logger@0.33.0
  - @bamboocss/preset-bamboo@0.33.0
  - @bamboocss/shared@0.33.0

## 0.32.1

### Patch Changes

- Updated dependencies [a032375]
- Updated dependencies [5184771]
- Updated dependencies [6d8c884]
- Updated dependencies [89ffb6b]
  - @bamboocss/config@0.32.1
  - @bamboocss/types@0.32.1
  - @bamboocss/token-dictionary@0.32.1
  - @bamboocss/node@0.32.1
  - @bamboocss/logger@0.32.1
  - @bamboocss/preset-bamboo@0.32.1
  - @bamboocss/postcss@0.32.1
  - @bamboocss/shared@0.32.1

## 0.32.0

### Patch Changes

- ba67381: Fix issue in `defineParts` where it silently fails if a part not defined is used. It now errors with a
  helpful message
- Updated dependencies [8cd8c19]
- Updated dependencies [60cace3]
- Updated dependencies [de4d9ef]
  - @bamboocss/shared@0.32.0
  - @bamboocss/types@0.32.0
  - @bamboocss/config@0.32.0
  - @bamboocss/node@0.32.0
  - @bamboocss/token-dictionary@0.32.0
  - @bamboocss/logger@0.32.0
  - @bamboocss/preset-bamboo@0.32.0
  - @bamboocss/postcss@0.32.0

## 0.31.0

### Minor Changes

- a17fe387: - Add a `config.polyfill` option that will polyfill the CSS @layer at-rules using a
  [postcss plugin](https://www.npmjs.com/package/@csstools/postcss-cascade-layers)
  - And `--polyfill` flag to `bamboo` and `bamboo cssgen` commands

### Patch Changes

- Updated dependencies [8f36f9af]
- Updated dependencies [f0296249]
- Updated dependencies [e2ad0eed]
- Updated dependencies [a17fe387]
- Updated dependencies [2d69b340]
- Updated dependencies [ddeda8ac]
  - @bamboocss/types@0.31.0
  - @bamboocss/config@0.31.0
  - @bamboocss/shared@0.31.0
  - @bamboocss/node@0.31.0
  - @bamboocss/logger@0.31.0
  - @bamboocss/preset-bamboo@0.31.0
  - @bamboocss/token-dictionary@0.31.0
  - @bamboocss/postcss@0.31.0

## 0.30.2

### Patch Changes

- f4ef1ed8: Fix issue where the param for `--outdir` was missing, leading to errors
- Updated dependencies [6b829cab]
  - @bamboocss/types@0.30.2
  - @bamboocss/node@0.30.2
  - @bamboocss/config@0.30.2
  - @bamboocss/logger@0.30.2
  - @bamboocss/preset-bamboo@0.30.2
  - @bamboocss/token-dictionary@0.30.2
  - @bamboocss/postcss@0.30.2
  - @bamboocss/shared@0.30.2

## 0.30.1

### Patch Changes

- Updated dependencies [ffe177fd]
  - @bamboocss/config@0.30.1
  - @bamboocss/node@0.30.1
  - @bamboocss/postcss@0.30.1
  - @bamboocss/logger@0.30.1
  - @bamboocss/preset-bamboo@0.30.1
  - @bamboocss/shared@0.30.1
  - @bamboocss/token-dictionary@0.30.1
  - @bamboocss/types@0.30.1

## 0.30.0

### Patch Changes

- d5977c24: - Add a `--logfile` flag to the `bamboo`, `bamboo codegen`, `bamboo cssgen` and `bamboo debug` commands.
  - Add a `logfile` option to the postcss plugin

  Logs will be streamed to the file specified by the `--logfile` flag or the `logfile` option. This is useful for
  debugging issues that occur during the build process.

  ```sh
  bamboo --logfile ./logs/bamboo.log
  ```

  ```js
  module.exports = {
    plugins: {
      '@bamboocss/dev/postcss': {
        logfile: './logs/bamboo.log',
      },
    },
  }
  ```

- Updated dependencies [0dd45b6a]
- Updated dependencies [05686b9d]
- Updated dependencies [74485ef1]
- Updated dependencies [ab32d1d7]
- Updated dependencies [ab32d1d7]
- Updated dependencies [49c760cd]
- Updated dependencies [d5977c24]
  - @bamboocss/config@0.30.0
  - @bamboocss/node@0.30.0
  - @bamboocss/types@0.30.0
  - @bamboocss/token-dictionary@0.30.0
  - @bamboocss/shared@0.30.0
  - @bamboocss/postcss@0.30.0
  - @bamboocss/logger@0.30.0
  - @bamboocss/preset-bamboo@0.30.0

## 0.29.1

### Patch Changes

- Updated dependencies [a5c75607]
  - @bamboocss/node@0.29.1
  - @bamboocss/postcss@0.29.1
  - @bamboocss/config@0.29.1
  - @bamboocss/logger@0.29.1
  - @bamboocss/preset-bamboo@0.29.1
  - @bamboocss/shared@0.29.1
  - @bamboocss/token-dictionary@0.29.1
  - @bamboocss/types@0.29.1

## 0.29.0

### Minor Changes

- a2fb5cc6: - Add support for explicitly specifying config related files that should trigger a context reload on change.

  > We automatically track the config file and (transitive) files imported by the config file as much as possible, but
  > sometimes we might miss some. You can use this option as a workaround for those edge cases.

  Set the `dependencies` option in `bamboo.config.ts` to a glob or list of files.

  ```ts
  export default defineConfig({
    // ...
    dependencies: ['path/to/files/**.ts'],
  })
  ```

  - Invoke `config:change` hook in more situations (when the `--watch` flag is passed to `bamboo codegen`,
    `bamboo cssgen`, `bamboo ship`)

  - Watch for more config options paths changes, so that the related artifacts will be regenerated a bit more reliably
    (ex: updating the `config.hooks` will now trigger a full regeneration of `styled-system`)

### Patch Changes

- Updated dependencies [5fcdeb75]
- Updated dependencies [7c7340ec]
- Updated dependencies [ea3f5548]
- Updated dependencies [250b4d11]
- Updated dependencies [a2fb5cc6]
  - @bamboocss/types@0.29.0
  - @bamboocss/token-dictionary@0.29.0
  - @bamboocss/config@0.29.0
  - @bamboocss/node@0.29.0
  - @bamboocss/preset-bamboo@0.29.0
  - @bamboocss/postcss@0.29.0
  - @bamboocss/logger@0.29.0
  - @bamboocss/shared@0.29.0

## 0.28.0

### Minor Changes

- f58f6df2: Refactor `config.hooks` to be much more powerful, you can now:
  - Tweak the config after it has been resolved (after presets are loaded and merged), this could be used to dynamically
    load all `recipes` from a folder
  - Transform a source file's content before parsing it, this could be used to transform the file content to a
    `tsx`-friendly syntax so that Bamboo's parser can parse it.
  - Implement your own parser logic and add the extracted results to the classic Bamboo pipeline, this could be used to
    parse style usage from any template language
  - Tweak the CSS content for any `@layer` or even right before it's written to disk (if using the CLI) or injected
    through the postcss plugin, allowing all kinds of customizations like removing the unused CSS variables, etc.
  - React to any config change or after the codegen step (your outdir, the `styled-system` folder) have been generated

  See the list of available `config.hooks` here:

  ```ts
  export interface BambooHooks {
    /**
     * Called when the config is resolved, after all the presets are loaded and merged.
     * This is the first hook called, you can use it to tweak the config before the context is created.
     */
    'config:resolved': (args: { conf: LoadConfigResult }) => MaybeAsyncReturn
    /**
     * Called when the Bamboo context has been created and the API is ready to be used.
     */
    'context:created': (args: { ctx: ApiInterface; logger: LoggerInterface }) => void
    /**
     * Called when the config file or one of its dependencies (imports) has changed.
     */
    'config:change': (args: { config: UserConfig }) => MaybeAsyncReturn
    /**
     * Called after reading the file content but before parsing it.
     * You can use this hook to transform the file content to a tsx-friendly syntax so that Bamboo's parser can parse it.
     * You can also use this hook to parse the file's content on your side using a custom parser, in this case you don't have to return anything.
     */
    'parser:before': (args: { filePath: string; content: string }) => string | void
    /**
     * Called after the file styles are extracted and processed into the resulting ParserResult object.
     * You can also use this hook to add your own extraction results from your custom parser to the ParserResult object.
     */
    'parser:after': (args: { filePath: string; result: ParserResultInterface | undefined }) => void
    /**
     * Called after the codegen is completed
     */
    'codegen:done': () => MaybeAsyncReturn
    /**
     * Called right before adding the design-system CSS (global, static, preflight, tokens, keyframes) to the final CSS
     * Called right before writing/injecting the final CSS (styles.css) that contains the design-system CSS and the parser CSS
     * You can use it to tweak the CSS content before it's written to disk or injected through the postcss plugin.
     */
    'cssgen:done': (args: {
      artifact: 'global' | 'static' | 'reset' | 'tokens' | 'keyframes' | 'styles.css'
      content: string
    }) => string | void
  }
  ```

### Patch Changes

- f255342f: Add a `--cpu-prof` flag to `bamboo`, `bamboo cssgen`, `bamboo codegen` and `bamboo debug` commands This is
  useful for debugging performance issues in `bamboo` itself. This will generate a
  `bamboo-{command}-{timestamp}.cpuprofile` file in the current working directory, which can be opened in tools like
  [Speedscope](https://www.speedscope.app/)

  This is mostly intended for maintainers or can be asked by maintainers to help debug issues.

- Updated dependencies [f58f6df2]
- Updated dependencies [770c7aa4]
- Updated dependencies [f255342f]
- Updated dependencies [d4fa5de9]
  - @bamboocss/config@0.28.0
  - @bamboocss/types@0.28.0
  - @bamboocss/node@0.28.0
  - @bamboocss/shared@0.28.0
  - @bamboocss/token-dictionary@0.28.0
  - @bamboocss/preset-bamboo@0.28.0
  - @bamboocss/postcss@0.28.0
  - @bamboocss/error@0.28.0
  - @bamboocss/logger@0.28.0

## 0.27.3

### Patch Changes

- Updated dependencies [1ed4df77]
- Updated dependencies [39d10c79]
  - @bamboocss/types@0.27.3
  - @bamboocss/node@0.27.3
  - @bamboocss/config@0.27.3
  - @bamboocss/preset-bamboo@0.27.3
  - @bamboocss/token-dictionary@0.27.3
  - @bamboocss/postcss@0.27.3
  - @bamboocss/error@0.27.3
  - @bamboocss/logger@0.27.3
  - @bamboocss/shared@0.27.3

## 0.27.2

### Patch Changes

- bfa8b1ee: Switch back to `node:path` from `pathe` to resolve issues with windows path in PostCSS + Webpack set up
- Updated dependencies [bfa8b1ee]
  - @bamboocss/node@0.27.2
  - @bamboocss/postcss@0.27.2
  - @bamboocss/config@0.27.2
  - @bamboocss/error@0.27.2
  - @bamboocss/logger@0.27.2
  - @bamboocss/preset-bamboo@0.27.2
  - @bamboocss/shared@0.27.2
  - @bamboocss/token-dictionary@0.27.2
  - @bamboocss/types@0.27.2

## 0.27.1

### Patch Changes

- Updated dependencies [ee9341db]
  - @bamboocss/postcss@0.27.1
  - @bamboocss/node@0.27.1
  - @bamboocss/types@0.27.1
  - @bamboocss/config@0.27.1
  - @bamboocss/preset-bamboo@0.27.1
  - @bamboocss/token-dictionary@0.27.1
  - @bamboocss/error@0.27.1
  - @bamboocss/logger@0.27.1
  - @bamboocss/shared@0.27.1

## 0.27.0

### Minor Changes

- 84304901: Improve performance, mostly for the CSS generation by removing a lot of `postcss` usage (and plugins).

  ## Public changes:
  - Introduce a new `config.lightningcss` option to use `lightningcss` (currently disabled by default) instead of
    `postcss`.
  - Add a new `config.browserslist` option to configure the browserslist used by `lightningcss`.
  - Add a `--lightningcss` flag to the `bamboo` and `bamboo cssgen` command to use `lightningcss` instead of `postcss`
    for this run.

  ## Internal changes:
  - `markImportant` fn from JS instead of walking through postcss AST nodes
  - use a fork of `stitches` `stringify` function instead of `postcss-css-in-js` to write the CSS string from a JS
    object
  - only compute once `TokenDictionary` properties
  - refactor `serializeStyle` to use the same code path as the rest of the pipeline with `StyleEncoder` / `StyleDecoder`
    and rename it to `transformStyles` to better convey what it does

### Patch Changes

- Updated dependencies [84304901]
- Updated dependencies [bee3ec85]
- Updated dependencies [74ac0d9d]
- Updated dependencies [c9195a4e]
  - @bamboocss/token-dictionary@0.27.0
  - @bamboocss/preset-bamboo@0.27.0
  - @bamboocss/postcss@0.27.0
  - @bamboocss/config@0.27.0
  - @bamboocss/logger@0.27.0
  - @bamboocss/shared@0.27.0
  - @bamboocss/error@0.27.0
  - @bamboocss/types@0.27.0
  - @bamboocss/node@0.27.0

## 0.26.2

### Patch Changes

- @bamboocss/config@0.26.2
- @bamboocss/node@0.26.2
- @bamboocss/postcss@0.26.2
- @bamboocss/error@0.26.2
- @bamboocss/logger@0.26.2
- @bamboocss/preset-bamboo@0.26.2
- @bamboocss/shared@0.26.2
- @bamboocss/token-dictionary@0.26.2
- @bamboocss/types@0.26.2

## 0.26.1

### Patch Changes

- @bamboocss/node@0.26.1
- @bamboocss/postcss@0.26.1
- @bamboocss/config@0.26.1
- @bamboocss/error@0.26.1
- @bamboocss/logger@0.26.1
- @bamboocss/preset-bamboo@0.26.1
- @bamboocss/shared@0.26.1
- @bamboocss/token-dictionary@0.26.1
- @bamboocss/types@0.26.1

## 0.26.0

### Patch Changes

- Updated dependencies [657ca5da]
- Updated dependencies [b5cf6ee6]
- Updated dependencies [58df7d74]
- Updated dependencies [1bd7fbb7]
- Updated dependencies [1bd7fbb7]
  - @bamboocss/shared@0.26.0
  - @bamboocss/types@0.26.0
  - @bamboocss/config@0.26.0
  - @bamboocss/node@0.26.0
  - @bamboocss/token-dictionary@0.26.0
  - @bamboocss/preset-bamboo@0.26.0
  - @bamboocss/postcss@0.26.0
  - @bamboocss/error@0.26.0
  - @bamboocss/logger@0.26.0

## 0.25.0

### Patch Changes

- Updated dependencies [bc154358]
- Updated dependencies [59fd291c]
- Updated dependencies [de282f60]
  - @bamboocss/node@0.25.0
  - @bamboocss/types@0.25.0
  - @bamboocss/token-dictionary@0.25.0
  - @bamboocss/postcss@0.25.0
  - @bamboocss/config@0.25.0
  - @bamboocss/preset-bamboo@0.25.0
  - @bamboocss/error@0.25.0
  - @bamboocss/logger@0.25.0
  - @bamboocss/shared@0.25.0

## 0.24.2

### Patch Changes

- b2e00ca0: Fix an issue with the `bamboo init` command which didn't update existing `.gitignore` to include the
  `styled-system`
- Updated dependencies [71e82a4e]
  - @bamboocss/shared@0.24.2
  - @bamboocss/types@0.24.2
  - @bamboocss/config@0.24.2
  - @bamboocss/node@0.24.2
  - @bamboocss/token-dictionary@0.24.2
  - @bamboocss/preset-bamboo@0.24.2
  - @bamboocss/postcss@0.24.2
  - @bamboocss/error@0.24.2
  - @bamboocss/logger@0.24.2

## 0.24.1

### Patch Changes

- Updated dependencies [10e74428]
  - @bamboocss/node@0.24.1
  - @bamboocss/postcss@0.24.1
  - @bamboocss/config@0.24.1
  - @bamboocss/error@0.24.1
  - @bamboocss/logger@0.24.1
  - @bamboocss/preset-bamboo@0.24.1
  - @bamboocss/shared@0.24.1
  - @bamboocss/token-dictionary@0.24.1
  - @bamboocss/types@0.24.1

## 0.24.0

### Minor Changes

- 63b3f1f2: - Boost style extraction performance by moving more work away from postcss
  - Using a hashing strategy, the compiler only computes styles/classname once per style object and prop-value-condition
    pair
  - Fix regression in previous implementation that increased memory usage per extraction, leading to slower performance
    over time

### Patch Changes

- Updated dependencies [63b3f1f2]
- Updated dependencies [f6881022]
  - @bamboocss/node@0.24.0
  - @bamboocss/types@0.24.0
  - @bamboocss/postcss@0.24.0
  - @bamboocss/config@0.24.0
  - @bamboocss/preset-bamboo@0.24.0
  - @bamboocss/token-dictionary@0.24.0
  - @bamboocss/error@0.24.0
  - @bamboocss/logger@0.24.0
  - @bamboocss/shared@0.24.0

## 0.23.0

### Minor Changes

- 1efc4277: Add support for emit-pkg command to emit just the `package.json` file with the required entrypoints. If an
  existing `package.json` file is present, the `exports` field will be updated.

  When setting up Bamboo in a monorepo, this command is useful in monorepo setups where you want the codegen to run only
  in a dedicated workspace package.

### Patch Changes

- Updated dependencies [1ea7459c]
- Updated dependencies [383b6d1b]
- Updated dependencies [bd552b1f]
- Updated dependencies [840ed66b]
  - @bamboocss/node@0.23.0
  - @bamboocss/logger@0.23.0
  - @bamboocss/postcss@0.23.0
  - @bamboocss/config@0.23.0
  - @bamboocss/error@0.23.0
  - @bamboocss/preset-bamboo@0.23.0
  - @bamboocss/shared@0.23.0
  - @bamboocss/token-dictionary@0.23.0
  - @bamboocss/types@0.23.0

## 0.22.1

### Patch Changes

- Updated dependencies [8f4ce97c]
- Updated dependencies [0f7793c7]
- Updated dependencies [647f05c9]
  - @bamboocss/types@0.22.1
  - @bamboocss/postcss@0.22.1
  - @bamboocss/shared@0.22.1
  - @bamboocss/node@0.22.1
  - @bamboocss/config@0.22.1
  - @bamboocss/preset-bamboo@0.22.1
  - @bamboocss/token-dictionary@0.22.1
  - @bamboocss/error@0.22.1
  - @bamboocss/logger@0.22.1

## 0.22.0

### Patch Changes

- Updated dependencies [526c6e34]
- Updated dependencies [8db47ec6]
- Updated dependencies [a2f6c2c8]
- Updated dependencies [11753fea]
  - @bamboocss/types@0.22.0
  - @bamboocss/shared@0.22.0
  - @bamboocss/node@0.22.0
  - @bamboocss/config@0.22.0
  - @bamboocss/preset-bamboo@0.22.0
  - @bamboocss/token-dictionary@0.22.0
  - @bamboocss/postcss@0.22.0
  - @bamboocss/error@0.22.0
  - @bamboocss/logger@0.22.0

## 0.21.0

### Patch Changes

- Updated dependencies [7f846be2]
- Updated dependencies [26e6051a]
- Updated dependencies [5b061615]
- Updated dependencies [105f74ce]
  - @bamboocss/node@0.21.0
  - @bamboocss/shared@0.21.0
  - @bamboocss/types@0.21.0
  - @bamboocss/postcss@0.21.0
  - @bamboocss/config@0.21.0
  - @bamboocss/token-dictionary@0.21.0
  - @bamboocss/preset-bamboo@0.21.0
  - @bamboocss/error@0.21.0
  - @bamboocss/logger@0.21.0

## 0.20.1

### Patch Changes

- @bamboocss/config@0.20.1
- @bamboocss/node@0.20.1
- @bamboocss/token-dictionary@0.20.1
- @bamboocss/postcss@0.20.1
- @bamboocss/error@0.20.1
- @bamboocss/logger@0.20.1
- @bamboocss/preset-bamboo@0.20.1
- @bamboocss/shared@0.20.1
- @bamboocss/types@0.20.1

## 0.20.0

### Patch Changes

- 24ee49a5: - Add support for granular config change detection
  - Improve the `codegen` experience by only rewriting files affecteds by a config change
- da7a5d59: Add a --watch flag to the `bamboo ship` command
- Updated dependencies [24ee49a5]
- Updated dependencies [904aec7b]
  - @bamboocss/postcss@0.20.0
  - @bamboocss/config@0.20.0
  - @bamboocss/types@0.20.0
  - @bamboocss/node@0.20.0
  - @bamboocss/preset-bamboo@0.20.0
  - @bamboocss/token-dictionary@0.20.0
  - @bamboocss/error@0.20.0
  - @bamboocss/logger@0.20.0
  - @bamboocss/shared@0.20.0

## 0.19.0

### Minor Changes

- b3ca8412: Require explicit installation of `@bamboocss/studio` to use the `bamboo studio` command.

### Patch Changes

- Updated dependencies [61831040]
- Updated dependencies [89f86923]
  - @bamboocss/types@0.19.0
  - @bamboocss/node@0.19.0
  - @bamboocss/config@0.19.0
  - @bamboocss/preset-bamboo@0.19.0
  - @bamboocss/token-dictionary@0.19.0
  - @bamboocss/postcss@0.19.0
  - @bamboocss/error@0.19.0
  - @bamboocss/logger@0.19.0
  - @bamboocss/shared@0.19.0

## 0.18.3

### Patch Changes

- Updated dependencies [a30f660d]
  - @bamboocss/studio@0.18.3
  - @bamboocss/node@0.18.3
  - @bamboocss/postcss@0.18.3
  - @bamboocss/config@0.18.3
  - @bamboocss/error@0.18.3
  - @bamboocss/logger@0.18.3
  - @bamboocss/preset-bamboo@0.18.3
  - @bamboocss/shared@0.18.3
  - @bamboocss/token-dictionary@0.18.3
  - @bamboocss/types@0.18.3

## 0.18.2

### Patch Changes

- @bamboocss/config@0.18.2
- @bamboocss/node@0.18.2
- @bamboocss/studio@0.18.2
- @bamboocss/token-dictionary@0.18.2
- @bamboocss/postcss@0.18.2
- @bamboocss/error@0.18.2
- @bamboocss/logger@0.18.2
- @bamboocss/preset-bamboo@0.18.2
- @bamboocss/shared@0.18.2
- @bamboocss/types@0.18.2

## 0.18.1

### Patch Changes

- Updated dependencies [aac7b379]
- Updated dependencies [566fd28a]
- Updated dependencies [43bfa510]
  - @bamboocss/studio@0.18.1
  - @bamboocss/token-dictionary@0.18.1
  - @bamboocss/config@0.18.1
  - @bamboocss/node@0.18.1
  - @bamboocss/postcss@0.18.1
  - @bamboocss/error@0.18.1
  - @bamboocss/logger@0.18.1
  - @bamboocss/preset-bamboo@0.18.1
  - @bamboocss/shared@0.18.1
  - @bamboocss/types@0.18.1

## 0.18.0

### Patch Changes

- 41563f56: Add `--strict-tokens` flag and question in the interactive CLI
- 866c12aa: Fix CLI interactive mode `syntax` question values and prettify the generated `bamboo.config.ts` file
- Updated dependencies [ba9e32fa]
- Updated dependencies [b840e469]
- Updated dependencies [3010af28]
- Updated dependencies [866c12aa]
  - @bamboocss/shared@0.18.0
  - @bamboocss/studio@0.18.0
  - @bamboocss/node@0.18.0
  - @bamboocss/token-dictionary@0.18.0
  - @bamboocss/postcss@0.18.0
  - @bamboocss/types@0.18.0
  - @bamboocss/config@0.18.0
  - @bamboocss/error@0.18.0
  - @bamboocss/logger@0.18.0
  - @bamboocss/preset-bamboo@0.18.0

## 0.17.5

### Patch Changes

- Updated dependencies [17f68b3f]
- Updated dependencies [abe35313]
  - @bamboocss/node@0.17.5
  - @bamboocss/studio@0.17.5
  - @bamboocss/postcss@0.17.5
  - @bamboocss/config@0.17.5
  - @bamboocss/error@0.17.5
  - @bamboocss/logger@0.17.5
  - @bamboocss/preset-bamboo@0.17.5
  - @bamboocss/shared@0.17.5
  - @bamboocss/token-dictionary@0.17.5
  - @bamboocss/types@0.17.5

## 0.17.4

### Patch Changes

- Updated dependencies [a031d077]
- Updated dependencies [fa77080a]
  - @bamboocss/studio@0.17.4
  - @bamboocss/types@0.17.4
  - @bamboocss/config@0.17.4
  - @bamboocss/node@0.17.4
  - @bamboocss/preset-bamboo@0.17.4
  - @bamboocss/token-dictionary@0.17.4
  - @bamboocss/postcss@0.17.4
  - @bamboocss/error@0.17.4
  - @bamboocss/logger@0.17.4
  - @bamboocss/shared@0.17.4
  - @bamboocss/symlink@0.17.4

## 0.17.3

### Patch Changes

- ba10b419: Mark `defineTokens` and `defineSemanticTokens` with pure annotation to treeshake from bundle when using
  within component library.
- Updated dependencies [529a262e]
- Updated dependencies [60f2c8a3]
- Updated dependencies [128e0b19]
  - @bamboocss/types@0.17.3
  - @bamboocss/node@0.17.3
  - @bamboocss/postcss@0.17.3
  - @bamboocss/config@0.17.3
  - @bamboocss/preset-bamboo@0.17.3
  - @bamboocss/studio@0.17.3
  - @bamboocss/token-dictionary@0.17.3
  - @bamboocss/error@0.17.3
  - @bamboocss/logger@0.17.3
  - @bamboocss/shared@0.17.3
  - @bamboocss/symlink@0.17.3

## 0.17.2

### Patch Changes

- 443ac85a: Fix an issue with the CLI, using the dev mode instead of the prod mode even when installed from npm.

  This resolves the following errors:

  ```
   Error: Cannot find module 'resolve.exports'
  ```

  ```
  Error: Cannot find module './src/cli-main'
  ```

- Updated dependencies [443ac85a]
  - @bamboocss/postcss@0.17.2
  - @bamboocss/symlink@0.17.2
  - @bamboocss/config@0.17.2
  - @bamboocss/error@0.17.2
  - @bamboocss/logger@0.17.2
  - @bamboocss/node@0.17.2
  - @bamboocss/preset-bamboo@0.17.2
  - @bamboocss/shared@0.17.2
  - @bamboocss/studio@0.17.2
  - @bamboocss/token-dictionary@0.17.2
  - @bamboocss/types@0.17.2

## 0.17.1

### Patch Changes

- 87772c7c: Add `--host` and `--port` flags to studio.
- Updated dependencies [56299cb2]
- Updated dependencies [87772c7c]
- Updated dependencies [7b981422]
- Updated dependencies [ddcaf7b2]
- Updated dependencies [5ce359f6]
  - @bamboocss/postcss@0.17.1
  - @bamboocss/node@0.17.1
  - @bamboocss/studio@0.17.1
  - @bamboocss/shared@0.17.1
  - @bamboocss/types@0.17.1
  - @bamboocss/token-dictionary@0.17.1
  - @bamboocss/config@0.17.1
  - @bamboocss/error@0.17.1
  - @bamboocss/logger@0.17.1
  - @bamboocss/preset-bamboo@0.17.1

## 0.17.0

### Patch Changes

- Updated dependencies [12281ff8]
- Updated dependencies [fc4688e6]
- Updated dependencies [dd6811b3]
  - @bamboocss/shared@0.17.0
  - @bamboocss/node@0.17.0
  - @bamboocss/studio@0.17.0
  - @bamboocss/types@0.17.0
  - @bamboocss/token-dictionary@0.17.0
  - @bamboocss/postcss@0.17.0
  - @bamboocss/config@0.17.0
  - @bamboocss/preset-bamboo@0.17.0
  - @bamboocss/error@0.17.0
  - @bamboocss/logger@0.17.0

## 0.16.0

### Minor Changes

- 36252b1d: ## --minimal flag

  Adds a new `--minimal` flag for the CLI on the `bamboo cssgen` command to skip generating CSS for theme tokens,
  preflightkeyframes, static and global css

  Thich means that the generated CSS will only contain the CSS related to the styles found in the included files.

  > Note that you can use a `glob` to override the `config.include` option like this:
  > `bamboo cssgen "src/**/*.css" --minimal`

  This is useful when you want to split your CSS into multiple files, for example if you want to split by pages.

  Use it like this:

  ```bash
  bamboo cssgen "src/**/pages/*.css" --minimal --outfile dist/pages.css
  ```

  ***

  ## cssgen {type}

  In addition to the optional `glob` that you can already pass to override the config.include option, the
  `bamboo cssgen` command now accepts a new `{type}` argument to generate only a specific type of CSS:
  - preflight
  - tokens
  - static
  - global
  - keyframes

  > Note that this only works when passing an `--outfile`.

  You can use it like this:

  ```bash
  bamboo cssgen "static" --outfile dist/static.css
  ```

### Patch Changes

- Updated dependencies [20f4e204]
- Updated dependencies [36252b1d]
  - @bamboocss/node@0.16.0
  - @bamboocss/postcss@0.16.0
  - @bamboocss/studio@0.16.0
  - @bamboocss/config@0.16.0
  - @bamboocss/token-dictionary@0.16.0
  - @bamboocss/error@0.16.0
  - @bamboocss/logger@0.16.0
  - @bamboocss/preset-bamboo@0.16.0
  - @bamboocss/shared@0.16.0
  - @bamboocss/types@0.16.0

## 0.15.5

### Patch Changes

- Updated dependencies [909fcbe8]
  - @bamboocss/node@0.15.5
  - @bamboocss/postcss@0.15.5
  - @bamboocss/studio@0.15.5
  - @bamboocss/config@0.15.5
  - @bamboocss/error@0.15.5
  - @bamboocss/logger@0.15.5
  - @bamboocss/preset-bamboo@0.15.5
  - @bamboocss/shared@0.15.5
  - @bamboocss/token-dictionary@0.15.5
  - @bamboocss/types@0.15.5

## 0.15.4

### Patch Changes

- Updated dependencies [abd7c47a]
- Updated dependencies [69699ba4]
  - @bamboocss/config@0.15.4
  - @bamboocss/studio@0.15.4
  - @bamboocss/node@0.15.4
  - @bamboocss/types@0.15.4
  - @bamboocss/postcss@0.15.4
  - @bamboocss/error@0.15.4
  - @bamboocss/logger@0.15.4
  - @bamboocss/preset-bamboo@0.15.4
  - @bamboocss/shared@0.15.4
  - @bamboocss/token-dictionary@0.15.4

## 0.15.3

### Patch Changes

- Updated dependencies [95b06bb1]
- Updated dependencies [1ac2011b]
- Updated dependencies [58743bc4]
- Updated dependencies [1eb31118]
  - @bamboocss/shared@0.15.3
  - @bamboocss/types@0.15.3
  - @bamboocss/studio@0.15.3
  - @bamboocss/node@0.15.3
  - @bamboocss/token-dictionary@0.15.3
  - @bamboocss/config@0.15.3
  - @bamboocss/preset-bamboo@0.15.3
  - @bamboocss/postcss@0.15.3
  - @bamboocss/error@0.15.3
  - @bamboocss/logger@0.15.3

## 0.15.2

### Patch Changes

- f3c30d60: Fix issue where studio uses studio config, instead of custom bamboo config.
- Updated dependencies [f3c30d60]
- Updated dependencies [26a788c0]
- Updated dependencies [f3c30d60]
- Updated dependencies [2645c2da]
  - @bamboocss/node@0.15.2
  - @bamboocss/studio@0.15.2
  - @bamboocss/types@0.15.2
  - @bamboocss/config@0.15.2
  - @bamboocss/postcss@0.15.2
  - @bamboocss/preset-bamboo@0.15.2
  - @bamboocss/token-dictionary@0.15.2
  - @bamboocss/error@0.15.2
  - @bamboocss/logger@0.15.2
  - @bamboocss/shared@0.15.2

## 0.15.1

### Patch Changes

- Updated dependencies [7e8bcb03]
- Updated dependencies [26f6982c]
- Updated dependencies [4e003bfb]
  - @bamboocss/studio@0.15.1
  - @bamboocss/shared@0.15.1
  - @bamboocss/token-dictionary@0.15.1
  - @bamboocss/node@0.15.1
  - @bamboocss/types@0.15.1
  - @bamboocss/postcss@0.15.1
  - @bamboocss/config@0.15.1
  - @bamboocss/error@0.15.1
  - @bamboocss/logger@0.15.1
  - @bamboocss/preset-bamboo@0.15.1

## 0.15.0

### Patch Changes

- Updated dependencies [4bc515ea]
- Updated dependencies [9f429d35]
- Updated dependencies [39298609]
- Updated dependencies [f27146d6]
  - @bamboocss/types@0.15.0
  - @bamboocss/shared@0.15.0
  - @bamboocss/studio@0.15.0
  - @bamboocss/node@0.15.0
  - @bamboocss/config@0.15.0
  - @bamboocss/preset-bamboo@0.15.0
  - @bamboocss/token-dictionary@0.15.0
  - @bamboocss/postcss@0.15.0
  - @bamboocss/error@0.15.0
  - @bamboocss/logger@0.15.0

## 0.14.0

### Patch Changes

- 6552d715: Add missing types (PatternConfig, RecipeConfig, RecipeVariantRecord) to solve a TypeScript issue (The
  inferred type of xxx cannot be named without a reference...)
- Updated dependencies [b1c31fdd]
- Updated dependencies [bff17df2]
- Updated dependencies [8106b411]
- Updated dependencies [9e799554]
- Updated dependencies [e6459a59]
- Updated dependencies [6f7ee198]
- Updated dependencies [623e321f]
  - @bamboocss/token-dictionary@0.14.0
  - @bamboocss/studio@0.14.0
  - @bamboocss/types@0.14.0
  - @bamboocss/node@0.14.0
  - @bamboocss/config@0.14.0
  - @bamboocss/preset-bamboo@0.14.0
  - @bamboocss/postcss@0.14.0
  - @bamboocss/error@0.14.0
  - @bamboocss/logger@0.14.0
  - @bamboocss/shared@0.14.0

## 0.13.1

### Patch Changes

- a5d7d514: Add `forceConsistentTypeExtension` config option for enforcing consistent file extension for emitted type
  definition files. This is useful for projects that use `moduleResolution: node16` which requires explicit file
  extensions in imports/exports.

  > If set to `true` and `outExtension` is set to `mjs`, the generated typescript `.d.ts` files will have the extension
  > `.d.mts`.

- Updated dependencies [577dcb9d]
- Updated dependencies [d0fbc7cc]
  - @bamboocss/studio@0.13.1
  - @bamboocss/error@0.13.1
  - @bamboocss/config@0.13.1
  - @bamboocss/node@0.13.1
  - @bamboocss/postcss@0.13.1
  - @bamboocss/logger@0.13.1
  - @bamboocss/preset-bamboo@0.13.1
  - @bamboocss/shared@0.13.1
  - @bamboocss/token-dictionary@0.13.1
  - @bamboocss/types@0.13.1

## 0.13.0

### Minor Changes

- 04b5fd6c: - Add support for minification in `cssgen` command.
  - Fix issue where `bamboo --minify` does not work.

### Patch Changes

- @bamboocss/node@0.13.0
- @bamboocss/studio@0.13.0
- @bamboocss/postcss@0.13.0
- @bamboocss/config@0.13.0
- @bamboocss/error@0.13.0
- @bamboocss/logger@0.13.0
- @bamboocss/preset-bamboo@0.13.0
- @bamboocss/shared@0.13.0
- @bamboocss/token-dictionary@0.13.0
- @bamboocss/types@0.13.0

## 0.12.2

### Patch Changes

- @bamboocss/node@0.12.2
- @bamboocss/postcss@0.12.2
- @bamboocss/studio@0.12.2
- @bamboocss/config@0.12.2
- @bamboocss/error@0.12.2
- @bamboocss/logger@0.12.2
- @bamboocss/preset-bamboo@0.12.2
- @bamboocss/shared@0.12.2
- @bamboocss/token-dictionary@0.12.2
- @bamboocss/types@0.12.2

## 0.12.1

### Patch Changes

- @bamboocss/node@0.12.1
- @bamboocss/postcss@0.12.1
- @bamboocss/studio@0.12.1
- @bamboocss/config@0.12.1
- @bamboocss/error@0.12.1
- @bamboocss/logger@0.12.1
- @bamboocss/preset-bamboo@0.12.1
- @bamboocss/shared@0.12.1
- @bamboocss/token-dictionary@0.12.1
- @bamboocss/types@0.12.1

## 0.12.0

### Minor Changes

- 75ba44de: Add the CLI interactive mode

### Patch Changes

- 7a041b16: Add `defineUtility` method
- 4c8c1715: Export types for all `define` helper functions
- Updated dependencies [4c8c1715]
- Updated dependencies [bf2ff391]
  - @bamboocss/studio@0.12.0
  - @bamboocss/node@0.12.0
  - @bamboocss/config@0.12.0
  - @bamboocss/postcss@0.12.0
  - @bamboocss/token-dictionary@0.12.0
  - @bamboocss/error@0.12.0
  - @bamboocss/logger@0.12.0
  - @bamboocss/preset-bamboo@0.12.0
  - @bamboocss/shared@0.12.0
  - @bamboocss/types@0.12.0

## 0.11.1

### Patch Changes

- Updated dependencies [c07e1beb]
- Updated dependencies [23b516f4]
  - @bamboocss/shared@0.11.1
  - @bamboocss/studio@0.11.1
  - @bamboocss/types@0.11.1
  - @bamboocss/node@0.11.1
  - @bamboocss/token-dictionary@0.11.1
  - @bamboocss/config@0.11.1
  - @bamboocss/preset-bamboo@0.11.1
  - @bamboocss/postcss@0.11.1
  - @bamboocss/error@0.11.1
  - @bamboocss/logger@0.11.1

## 0.11.0

### Patch Changes

- cde9702e: Add an optional `glob` argument that overrides the config.include on the `bamboo cssgen` CLI command.
- 164fbf27: Remove astro plugin entrypoint in favor of installing `@bamboocss/astro` package
- Updated dependencies [dead08a2]
- Updated dependencies [cde9702e]
- Updated dependencies [5b95caf5]
  - @bamboocss/config@0.11.0
  - @bamboocss/node@0.11.0
  - @bamboocss/types@0.11.0
  - @bamboocss/studio@0.11.0
  - @bamboocss/postcss@0.11.0
  - @bamboocss/preset-bamboo@0.11.0
  - @bamboocss/token-dictionary@0.11.0
  - @bamboocss/error@0.11.0
  - @bamboocss/logger@0.11.0
  - @bamboocss/shared@0.11.0

## 0.10.0

### Minor Changes

- a669f4d5: Introduce new slot recipe features.

  Slot recipes are useful for styling composite or multi-part components easily.
  - `sva`: the slot recipe version of `cva`
  - `defineSlotRecipe`: the slot recipe version of `defineRecipe`

  **Definition**

  ```jsx
  import { sva } from 'styled-system/css'

  const button = sva({
    slots: ['label', 'icon'],
    base: {
      label: { color: 'red', textDecoration: 'underline' },
    },
    variants: {
      rounded: {
        true: {},
      },
      size: {
        sm: {
          label: { fontSize: 'sm' },
          icon: { fontSize: 'sm' },
        },
        lg: {
          label: { fontSize: 'lg' },
          icon: { fontSize: 'lg', color: 'pink' },
        },
      },
    },
    defaultVariants: {
      size: 'sm',
    },
  })
  ```

  **Usage**

  ```jsx
  export function App() {
    const btnClass = button({ size: 'lg', rounded: true })

    return (
      <button>
        <p class={btnClass.label}> Label</p>
        <p class={btnClass.icon}> Icon</p>
      </button>
    )
  }
  ```

### Patch Changes

- Updated dependencies [24e783b3]
- Updated dependencies [9d4aa918]
- Updated dependencies [386e5098]
- Updated dependencies [a669f4d5]
  - @bamboocss/shared@0.10.0
  - @bamboocss/studio@0.10.0
  - @bamboocss/types@0.10.0
  - @bamboocss/token-dictionary@0.10.0
  - @bamboocss/node@0.10.0
  - @bamboocss/config@0.10.0
  - @bamboocss/preset-bamboo@0.10.0
  - @bamboocss/postcss@0.10.0
  - @bamboocss/astro@0.10.0
  - @bamboocss/error@0.10.0
  - @bamboocss/logger@0.10.0

## 0.9.0

### Patch Changes

- Updated dependencies [c08de87f]
- Updated dependencies [f10e706a]
  - @bamboocss/types@0.9.0
  - @bamboocss/postcss@0.9.0
  - @bamboocss/node@0.9.0
  - @bamboocss/config@0.9.0
  - @bamboocss/token-dictionary@0.9.0
  - @bamboocss/preset-bamboo@0.9.0
  - @bamboocss/studio@0.9.0
  - @bamboocss/astro@0.9.0
  - @bamboocss/error@0.9.0
  - @bamboocss/logger@0.9.0
  - @bamboocss/shared@0.9.0

## 0.8.0

### Patch Changes

- f7da0aea: Add `-w, --watch` flag on `bamboo cssgen`, `-o` shortcut for `--outfile` for both `bamboo cssgen` and
  `bamboo ship`
- Updated dependencies [5d1d376b]
- Updated dependencies [ac078416]
- Updated dependencies [e1f6318a]
- Updated dependencies [be0ad578]
- Updated dependencies [78612d7f]
  - @bamboocss/node@0.8.0
  - @bamboocss/token-dictionary@0.8.0
  - @bamboocss/config@0.8.0
  - @bamboocss/studio@0.8.0
  - @bamboocss/types@0.8.0
  - @bamboocss/postcss@0.8.0
  - @bamboocss/preset-bamboo@0.8.0
  - @bamboocss/astro@0.8.0
  - @bamboocss/error@0.8.0
  - @bamboocss/logger@0.8.0
  - @bamboocss/shared@0.8.0

## 0.7.0

### Patch Changes

- Updated dependencies [f4bb0576]
- Updated dependencies [f59154fb]
- Updated dependencies [d8ebaf2f]
- Updated dependencies [a9c189b7]
- Updated dependencies [4ff7ddea]
- Updated dependencies [1a05c4bb]
  - @bamboocss/node@0.7.0
  - @bamboocss/shared@0.7.0
  - @bamboocss/types@0.7.0
  - @bamboocss/config@0.7.0
  - @bamboocss/postcss@0.7.0
  - @bamboocss/studio@0.7.0
  - @bamboocss/token-dictionary@0.7.0
  - @bamboocss/preset-bamboo@0.7.0
  - @bamboocss/astro@0.7.0
  - @bamboocss/error@0.7.0
  - @bamboocss/logger@0.7.0

## 0.6.0

### Patch Changes

- 21f1326b: Fix issue where `--config` flag doesn't work for most commands.
- Updated dependencies [032c152a]
- Updated dependencies [239fe41a]
- Updated dependencies [76419e3e]
  - @bamboocss/node@0.6.0
  - @bamboocss/studio@0.6.0
  - @bamboocss/postcss@0.6.0
  - @bamboocss/config@0.6.0
  - @bamboocss/types@0.6.0
  - @bamboocss/astro@0.6.0
  - @bamboocss/token-dictionary@0.6.0
  - @bamboocss/error@0.6.0
  - @bamboocss/logger@0.6.0
  - @bamboocss/preset-bamboo@0.6.0
  - @bamboocss/shared@0.6.0

## 0.5.1

### Patch Changes

- 5b09ab3b: Add support for `--outfile` flag in the `cssgen` command.

  ```bash
  bamboo cssgen --outfile dist/styles.css
  ```

- f9247e52: Provide better error logs:
  - full stacktrace when using BAMBOO_DEBUG
  - specific CssSyntaxError to better spot the error

- Updated dependencies [773565c4]
- Updated dependencies [5b09ab3b]
- Updated dependencies [8c670d60]
- Updated dependencies [33198907]
- Updated dependencies [c0335cf4]
- Updated dependencies [762fd0c9]
- Updated dependencies [f9247e52]
- Updated dependencies [1ed239cd]
- Updated dependencies [78ed6ed4]
- Updated dependencies [e48b130a]
- Updated dependencies [1a2c0e2b]
  - @bamboocss/studio@0.5.1
  - @bamboocss/node@0.5.1
  - @bamboocss/types@0.5.1
  - @bamboocss/config@0.5.1
  - @bamboocss/shared@0.5.1
  - @bamboocss/logger@0.5.1
  - @bamboocss/postcss@0.5.1
  - @bamboocss/preset-bamboo@0.5.1
  - @bamboocss/token-dictionary@0.5.1
  - @bamboocss/astro@0.5.1
  - @bamboocss/error@0.5.1

## 0.5.0

### Patch Changes

- Updated dependencies [60df9bd1]
- Updated dependencies [ead9eaa3]
- Updated dependencies [3a87cff8]
  - @bamboocss/shared@0.5.0
  - @bamboocss/types@0.5.0
  - @bamboocss/preset-bamboo@0.5.0
  - @bamboocss/studio@0.5.0
  - @bamboocss/node@0.5.0
  - @bamboocss/token-dictionary@0.5.0
  - @bamboocss/config@0.5.0
  - @bamboocss/postcss@0.5.0
  - @bamboocss/astro@0.5.0
  - @bamboocss/error@0.5.0
  - @bamboocss/logger@0.5.0

## 0.4.0

### Patch Changes

- 8991b1e4: - Experimental support for `.vue` files and better `.svelte` support
  - Fix issue where the `bamboo ship` command does not write to the correct path
- a48e5b00: Add support for watch mode in codegen command via the `--watch` or `-w` flag.

  ```bash
  bamboo codegen --watch
  ```

- Updated dependencies [d00eb17c]
- Updated dependencies [c7b42325]
- Updated dependencies [5b344b9c]
  - @bamboocss/studio@0.4.0
  - @bamboocss/types@0.4.0
  - @bamboocss/config@0.4.0
  - @bamboocss/node@0.4.0
  - @bamboocss/preset-bamboo@0.4.0
  - @bamboocss/token-dictionary@0.4.0
  - @bamboocss/postcss@0.4.0
  - @bamboocss/astro@0.4.0
  - @bamboocss/error@0.4.0
  - @bamboocss/logger@0.4.0
  - @bamboocss/shared@0.4.0

## 0.3.2

### Patch Changes

- c8bee958: Add support for config path in cli commands via the `--config` or `-c` flag.

  ```bash
  bamboo init --config ./bamboocss.config.js
  ```

- Updated dependencies [24b78f7c]
- Updated dependencies [9822d79a]
- Updated dependencies [65d3423f]
  - @bamboocss/postcss@0.3.2
  - @bamboocss/config@0.3.2
  - @bamboocss/studio@0.3.2
  - @bamboocss/astro@0.3.2
  - @bamboocss/node@0.3.2
  - @bamboocss/error@0.3.2
  - @bamboocss/logger@0.3.2
  - @bamboocss/preset-bamboo@0.3.2
  - @bamboocss/shared@0.3.2
  - @bamboocss/token-dictionary@0.3.2
  - @bamboocss/types@0.3.2

## 0.3.1

### Patch Changes

- efd79d83: Baseline release for the launch
- Updated dependencies [efd79d83]
- Updated dependencies [22ec328e]
  - @bamboocss/astro@0.3.1
  - @bamboocss/config@0.3.1
  - @bamboocss/error@0.3.1
  - @bamboocss/logger@0.3.1
  - @bamboocss/node@0.3.1
  - @bamboocss/postcss@0.3.1
  - @bamboocss/preset-bamboo@0.3.1
  - @bamboocss/shared@0.3.1
  - @bamboocss/studio@0.3.1
  - @bamboocss/token-dictionary@0.3.1
  - @bamboocss/types@0.3.1

## 0.3.0

### Patch Changes

- Updated dependencies [b8ab0868]
- Updated dependencies [bd5c049b]
- Updated dependencies [6d81ee9e]
  - @bamboocss/node@0.3.0
  - @bamboocss/preset-bamboo@0.3.0
  - @bamboocss/types@0.3.0
  - @bamboocss/postcss@0.3.0
  - @bamboocss/studio@0.3.0
  - @bamboocss/config@0.3.0
  - @bamboocss/token-dictionary@0.3.0
  - @bamboocss/astro@0.3.0
  - @bamboocss/error@0.3.0
  - @bamboocss/logger@0.3.0
  - @bamboocss/shared@0.3.0

## 0.0.2

### Patch Changes

- fb40fff2: Initial release of all packages
  - Internal AST parser for TS and TSX
  - Support for defining presets in config
  - Support for design tokens (core and semantic)
  - Add `outExtension` key to config to allow file extension options for generated javascript. `.js` or `.mjs`
  - Add `jsxElement` option to patterns, to allow specifying the jsx element rendered by the patterns.

- Updated dependencies [c308e8be]
- Updated dependencies [fb40fff2]
  - @bamboocss/config@0.0.2
  - @bamboocss/types@0.0.2
  - @bamboocss/error@0.0.2
  - @bamboocss/logger@0.0.2
  - @bamboocss/node@0.0.2
  - @bamboocss/shared@0.0.2
  - @bamboocss/token-dictionary@0.0.2
