# Technical Documentation: argyleink/open-props

> ℹ️ **Provenance:** Standard README.md · [CodeWiki Reference](https://codewiki.google/github.com/argyleink/open-props) · Recency: Active (< 180 days)

#### CDN ([browse](https://unpkg.com/browse/open-props@latest/))
- [https://unpkg.com/open-props](https://unpkg.com/open-props)
- [https://unpkg.com/open-props/normalize.min.css](https://unpkg.com/open-props/normalize.min.css) - Normalize (light + dark) [demo](https://codepen.io/argyleink/pen/KKvRORE)
- [https://unpkg.com/open-props/open-props.tokens.json](https://unpkg.com/open-props/open-props.tokens.json) - Design Tokens
- [https://unpkg.com/open-props/open-props.figma-tokens.sync.json](https://unpkg.com/open-props/open-props.figma-tokens.sync.json) - Figma Design Tokens
- [https://unpkg.com/open-props/open-props.style-dictionary-tokens.json](https://unpkg.com/open-props/open-props.style-dictionary-tokens.json) - Style Dictionary Tokens

#### Bookmarklet

```js
javascript: (() => {
  const href = "https://unpkg.com/open-props";
  document.head.append(Object.assign(document.createElement("link"),{rel:"stylesheet",href}));
})();
```

#### CLI
- `npm run gen:op` - runs through `src/` js files and creates the PostCSS files in `src/`
- `npm run gen:nowhere`  - creates a version of Open Props without the use of `:where()`
- `npm run gen:shadowdom` - creates a version of Open Props with `:host` as the selector scope
- `npm run gen:prefixed` - creates a version of Open Props with each prop prefixed with `op`, like `--op-font-size-1`
- `npm run bundle` - creates all the various minified bundles of props
- `npm run lib:js` - builds the JS modules for NPM

#### Testing
```bash
npm run build && npm run bundle
npm test
```

--- METRICS ---
- Files Extracted: 1
- Estimated Token Budget: ~429 tokens
- Recency Window: Active (< 180 days)
- Canonical Reference: https://codewiki.google/github.com/argyleink/open-props
