diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..db1b0e0 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,52 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + check: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - run: npm ci + - name: Compile and lint + run: npm run pretest + - name: Unit tests + run: npm test + - name: Registry parity + run: npm run generate:check + - uses: actions/cache@v4 + with: + path: .vscode-test + key: vscode-test-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Extension-host tests + run: xvfb-run -a npm run test:extension + - name: Package contents are runtime-only + run: npx vsce ls | node out/generate/checkPackage.js + - name: Package + run: | + VERSION=$(node -p "require('./package.json').version") + npx vsce package -o "sf-vscode-${VERSION}.vsix" + sha256sum "sf-vscode-${VERSION}.vsix" | tee "sf-vscode-${VERSION}.vsix.sha256" + - uses: actions/upload-artifact@v4 + with: + name: vsix + path: | + *.vsix + *.vsix.sha256 + if-no-files-found: error diff --git a/.gitignore b/.gitignore index d491295..c44c599 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,9 @@ out/ # Compiled suggestions *.vsix +# VS Code test downloads +.vscode-test/ + styles.css # Compiled Java class files diff --git a/.vscodeignore b/.vscodeignore new file mode 100644 index 0000000..07baf4d --- /dev/null +++ b/.vscodeignore @@ -0,0 +1,13 @@ +# Ship only the runtime. Everything is excluded first, then the runtime +# files are listed explicitly, so new tooling or local state (for example +# .simai/, mirai/, work/) can never leak into the package. +** +!package.json +!README.md +!CHANGELOG.md +!LICENSE +!images/icon.png +!data/*.json +!out/*.js +!out/providers/*.js +!out/registry/*.js diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..187a794 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to SIMAI Framework IntelliSense are listed here. + +## [0.1.0] - Unreleased + +### Added + +- Completion for SIMAI Framework `sf-` custom element tags, their attributes + and attribute values, from the Framework component manifests. +- Completion for utility classes in `class`/`className` and as escaped + selectors in stylesheets. +- Completion for every `--sf-` core token and the public component variables, + with resolved light/dark and mobile/desktop values. +- Colour swatches in the completion list and in documents; the colour picker + offers the nearest Framework colour tokens. +- Hovers for tokens, utility classes, tags and attributes with the source + release and lifecycle. Deprecated attributes are struck through and name + their replacement. +- Settings `sf.hover.enabled` and `sf.colorSwatches.enabled`. + +### Changed + +- Renamed the extension to SIMAI Framework IntelliSense and rewrote the + README for end users; developer notes moved to CONTRIBUTING.md. +- Repinned the adaptive sizing contract to `simai.vertical-sizing@1.3.0` from + the SIMAI Framework release `ui-a9636b60d3e3` (`simai/ui-source@1d26dd48`). +- The package now ships only the runtime files. +- A dot in markup or scripts no longer opens class suggestions; class + selectors complete only in stylesheets. + +### Fixed + +- The first completion request after opening a file no longer comes back + empty: the extension activates when VS Code finishes starting and loads its + registry on first use. + +## [0.0.1] + +- Initial preview: adaptive sizing CSS variables. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d5c527b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,93 @@ +# Contributing to SIMAI Framework IntelliSense + +This guide is for people who build, test or package the extension. The +end-user documentation is in [README.md](README.md). + +## Setup + +```sh +npm install +``` + +## Registries + +The extension never reads other repositories at runtime. Everything it +suggests comes from pinned, hash-checked snapshots under `contracts/`, turned +into the runtime files in `data/` by generators: + +| Snapshot | Pointer | Runtime file | +| --- | --- | --- | +| `contracts/adaptive-sizing.v1.json` | `contracts/adaptive-sizing.pointer.json` | `data/sf-autocomplete.json` | +| `contracts/framework/` | `contracts/framework.pointer.json` | `data/sf-framework.json` | + +The Framework snapshot holds the contract registry, `core.css`, the public +component variables, the CSS of the utility families and the manifests of the +smart components that the registry marks as safe to suggest. Only those +entries reach `data/sf-framework.json`; blocked entries never do. + +Regenerate and verify parity: + +```sh +npm run generate +npm run generate:check +``` + +`generate:check` fails when a snapshot no longer matches its pointer hash or +when a runtime file is stale. + +### Repinning to a new SIMAI Framework release + +Take the identity (commit and tree) from the release lock in `simai/ui` +(`contracts/releases/.lock.json`), never from a moving branch head. + +For the adaptive sizing contract, copy the file from the `simai/ui-source` +commit named under `build_inputs.source`, update the pointer, regenerate and +run the checks above. + +For the Framework snapshot, run the vendor tool against a local `simai/ui` +clone. It reads every file with `git show` at the commits named by the release +lock and checks their trees: + +```sh +npm run vendor:framework -- --ui ../ui --release --registry-commit +npm run generate +npm run generate:check +``` + +`--registry-commit` is the `simai/ui` commit that binds the contract registry +to that release. + +## Tests + +```sh +npm test # compile, lint and unit tests +npm run test:extension # extension-host tests in a downloaded VS Code +``` + +The extension-host runner downloads VS Code into `.vscode-test/`. Set +`VSCODE_EXECUTABLE_PATH` to use an installed build instead, or +`VSCODE_TEST_VERSION` to pin a version. Set `SF_EXTENSION_PATH` to run the +suite against another copy of the extension, for example the folder that +`code --install-extension` created from the packaged `.vsix`. The runner creates a short +`--user-data-dir` under `/tmp`, because VS Code rejects socket paths longer +than 103 characters. + +## Debugging + +Open the folder in VS Code and run **Run extension** (F5). + +## Packaging + +```sh +npm run package:ls # list the files that will ship +npm run package # build the .vsix +``` + +`.vscodeignore` excludes everything and lists the runtime files explicitly: +compiled `out/` JavaScript (without tests, generators and source maps), the +`data/` registries, the README, CHANGELOG, LICENSE and the icon. Publishing to +the Marketplace happens only after the owner accepts a release. + +## Naming + +Write the product name as "SIMAI Framework". The technical prefix is `sf`. diff --git a/README.md b/README.md index 53d62cd..911b0c4 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,68 @@ -# VS Code extension for Simai Framework +# SIMAI Framework IntelliSense -## Running the Extension for Debugging +Autocomplete, hovers and colour swatches for +[SIMAI Framework](https://github.com/simai/ui) in VS Code. -#### 1. Install Dependencies Using the Command -```sh -$ npm install -``` +## Features + +### Components + +Type `Save ``` -Generation uses the vendored, hash-checked -`simai.vertical-sizing@1.1.0` contract. A local `styles.css` or -`modifiers.json` is not required. The resulting -`src/registry/sf-autocomplete.json` preserves mobile and desktop values instead -of flattening the registry to one resolved mode. +Deprecated attributes are struck through and name their replacement. -Run the owner checks before debugging: +### Utility classes -```sh -npm test -npm run generate:check -``` +Utility classes complete in `class` and `className` attributes, including +breakpoint variants such as `md:flex`. In stylesheets they complete as +escaped selectors (`.md\:flex`). -#### 3. Launch the Extension in Debugging Mode -Open the top panel of VS Code, navigate to **Run -> Start Debugging**, or press the **F5** key. +### Design tokens -## Packaging the VS Code Extension +Type `var(--sf-` to get every `--sf-*` token of the Framework core: colour +roles, radius, spacing, typography, control sizes, icons, opacity, z-index, +elevation and motion, plus the public variables of the components. Each +suggestion shows its resolved value: -#### 1. Install `vsce` -```sh -npm install -g vsce -``` +- colour tokens show a swatch and their light and dark values; +- adaptive sizes show their mobile and desktop values. -#### 2. Navigate to the Root Directory of Your Extension Project and Execute the Command -```sh -vsce package -``` -This command will create a `.vsix` file in the current directory. This file contains everything necessary to install your extension. +Colour tokens in your files get inline swatches. Opening the colour picker +on one offers the nearest SIMAI Framework colour tokens. + +### Hovers + +Hover a token, utility class, `sf-` tag or attribute to see what it is, its +values (light/dark, mobile/desktop), the Framework release it comes from and +its lifecycle (released, experimental or deprecated). + +## Supported languages + +CSS, SCSS, Sass, Less, HTML, JavaScript, TypeScript, JSX/TSX and Vue (with a +Vue language extension installed). -## Installing the Extension via the VS Code Interface +## Settings -#### 1. Open Visual Studio Code +| Setting | Default | Description | +| --- | --- | --- | +| `sf.hover.enabled` | `true` | Show hovers for tokens, classes, tags and attributes. | +| `sf.colorSwatches.enabled` | `true` | Show colour swatches next to `--sf-` colour tokens. | -#### 2. Go to the Extensions Section +## What is suggested -#### 3. Install the Extension from the `.vsix` File -##### 3.1 Click on the three dots in the top right corner of the Extensions section and select **"Install from VSIX..."** -##### 3.2 In the opened window, locate and select the downloaded `.vsix` file -##### 3.3 After installing the extension, you may need to restart VS Code to apply the changes. +Suggestions come from a pinned, hash-checked snapshot of the SIMAI Framework +contract registry (release `ui-a9636b60d3e3`). Only entries the Framework marks +as safe to suggest are offered; blocked and unreleased entries are not. +Experimental components are labelled as such. The extension does not +download anything and does not read your other projects. ## License -The extension is available under the [MIT License](LICENSE). +[MIT](LICENSE) diff --git a/contracts/adaptive-sizing.pointer.json b/contracts/adaptive-sizing.pointer.json index 4d879c8..99ff802 100644 --- a/contracts/adaptive-sizing.pointer.json +++ b/contracts/adaptive-sizing.pointer.json @@ -1,9 +1,10 @@ { - "sourceRepository": "SIMAI/ui-loader", - "sourceCommit": "97b3df993a3250661a2d9e9db6500fad16b5b5cb", - "sourceTree": "6cc9bda9aae2b5d86918d58c49c736af1708cf7e", + "releaseId": "ui-a9636b60d3e3", + "sourceRepository": "simai/ui-source", + "sourceCommit": "1d26dd483201d24ad1af8419efc21b0d4a76a565", + "sourceTree": "5b4d11c91ac0716e083554a9a358b0a9deaadab2", "sourcePath": "src/core/contracts/adaptive-sizing.v1.json", "contractId": "simai.vertical-sizing", - "contractVersion": "1.1.0", - "sha256": "333d78f0f3abe6f47c9caa1fc3c53c4d2894e122a922a400804383266cbd72f5" + "contractVersion": "1.3.0", + "sha256": "b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45" } diff --git a/contracts/adaptive-sizing.v1.json b/contracts/adaptive-sizing.v1.json index c164e2f..fb503b2 100644 --- a/contracts/adaptive-sizing.v1.json +++ b/contracts/adaptive-sizing.v1.json @@ -2,7 +2,7 @@ "$schema": "./adaptive-sizing.schema.json", "meta": { "contractId": "simai.vertical-sizing", - "version": "1.1.0", + "version": "1.3.0", "unit": "rem", "nominalRootPx": 16, "rootPolicy": "preserve-user-agent-default", @@ -65,6 +65,59 @@ "11": { "mobile": "d6", "desktop": "e3" }, "12": { "mobile": "d8", "desktop": "e5" } }, + "titleLineHeights": { + "1": { "mobile": "b6", "desktop": "b6" }, + "2": { "mobile": "b6", "desktop": "c2" }, + "3": { "mobile": "c0", "desktop": "c4" }, + "4": { "mobile": "c2", "desktop": "c6" }, + "5": { "mobile": "c2", "desktop": "c8" }, + "6": { "mobile": "c4", "desktop": "d0" }, + "7": { "mobile": "c6", "desktop": "d2" }, + "8": { "mobile": "c8", "desktop": "d4" }, + "9": { "mobile": "d0", "desktop": "d6" }, + "10": { "mobile": "d2", "desktop": "d9" }, + "11": { "mobile": "d3", "desktop": "e0" }, + "12": { "mobile": "d4", "desktop": "e2" } + }, + "roles": { + "label": { + "small": { "size": "1/4", "height": "1/4" }, + "medium": { "size": "1/3", "height": "1/3" }, + "large": { "size": "1/2", "height": "1/2" } + }, + "body": { + "small": { "size": "1/2", "height": "1/2" }, + "medium": { "size": "1", "height": "1" }, + "large": { "size": "2", "height": "2" } + }, + "heading": { + "1": { "size": "6", "height": "6" }, + "2": { "size": "5", "height": "5" }, + "3": { "size": "4", "height": "4" }, + "4": { "size": "3", "height": "3" }, + "5": { "size": "2", "height": "2" }, + "6": { "size": "1", "height": "1" } + }, + "display": { + "1": { "size": "12", "height": "12" }, + "2": { "size": "11", "height": "11" }, + "3": { "size": "10", "height": "10" }, + "4": { "size": "9", "height": "9" }, + "5": { "size": "8", "height": "8" }, + "6": { "size": "7", "height": "7" } + } + }, + "flowSpacing": { + "content": { + "text": "1", + "related": "2", + "block": "3", + "section": "4" + }, + "textBottom": "1", + "headingTop": "4", + "headingBottom": "1" + }, "pairedRoles": [ "1/4", "1/3", @@ -148,6 +201,8 @@ "scss": { "typographySizes": "src/core/figma_variables/figma_text_text_size.scss", "typographyLineHeights": "src/core/figma_variables/figma_text_body_text_height.scss", + "typographyTitleLineHeights": "src/core/figma_variables/figma_text_title_height.scss", + "typographyRoles": "src/core/figma_variables/figma_typography_roles.scss", "spacing": "src/core/figma_variables/figma_space.scss", "tightnessLow": "src/core/figma_variables/figma_ui_tightness_low.scss", "tightnessDefault": "src/core/figma_variables/figma_ui_tightness_default.scss", @@ -155,6 +210,7 @@ "tightnessHighest": "src/core/figma_variables/figma_ui_tightness_highest.scss", "controlHeights": "src/core/figma_variables/figma_ui_control_height.scss" }, + "documentationContentSpacing": "src/core/contracts/content-spacing.docs.v1.json", "externalCandidates": [ "figma-ready-diff", "documentation", diff --git a/contracts/framework.pointer.json b/contracts/framework.pointer.json new file mode 100644 index 0000000..1fb48b8 --- /dev/null +++ b/contracts/framework.pointer.json @@ -0,0 +1,231 @@ +{ + "releaseId": "ui-a9636b60d3e3", + "repository": "simai/ui", + "registryCommit": "442402e4b6185147d56d75b580721b8aca5050dc", + "runtime": { + "core": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "tree": "5fc2e581f23d8d187bf432fc524404c884e6f43a", + "runtimeTree": "d337f03da440b304f81cc87fb93934a5b5dbb7f6" + }, + "smart": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "tree": "9d693c353642546e8214fc951c466a8b5023cbdd", + "runtimeTree": "09caaaa2f2f868fc3cc4f9399fceddc263b34e17" + } + }, + "files": { + "core/core.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/core/css/core.css", + "sha256": "b8042a59f9d003d3bdcf2467ca181312712174712fe75810ad8e6d783d31598c" + }, + "core/public-variables.v1.json": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/core/contracts/public-variables.v1.json", + "sha256": "f0f646cdc9b1af2680a35b7fb0e5d4a692b8f9fdb94217ded12e8cc3ab4b209c" + }, + "framework-contract-registry.json": { + "source": "442402e4b6185147d56d75b580721b8aca5050dc:contracts/generated/framework-contract-registry.json", + "sha256": "63a23fd4d67a8d0314de8d8fc65f423bdebaae4260da61b82a77ecf8cfd90b13" + }, + "smart/buttons/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/buttons/smart.manifest.json", + "sha256": "6f59e4c360166c4a97752393873ee97a574bf9ae938f19aa7c9f4b7648c0a31b" + }, + "smart/checkbox/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/smart.manifest.json", + "sha256": "5eeec6e339135024f80618bdfc2317b61f4fa7ef7cdf3e84d33fa607fb13b254" + }, + "smart/close/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/close/smart.manifest.json", + "sha256": "fe86dd60f05ae50cf20a021a406ddd89c90d2928524cba3495d737bcd2b9b645" + }, + "smart/context-menu/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/context-menu/smart.manifest.json", + "sha256": "49e3b3ce44a3ee6e89c4ecfffb66a18e8eb055153f46098d37ce2385c026aef5" + }, + "smart/datepicker/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/datepicker/smart.manifest.json", + "sha256": "09fb7828b9403de99cd5f2275a87dc0c21adef685ab48fff0318f7e957f441a7" + }, + "smart/dropdown/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/dropdown/smart.manifest.json", + "sha256": "9a791ceb574efeae12feefe449952fa4f2f09afb7f6c5b98cf0d102c576b27e0" + }, + "smart/icon-buttons/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/smart.manifest.json", + "sha256": "231f5a224cbd1fbe205941f56430e3b19642184225720fe991ff7d9720e08582" + }, + "smart/icons/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icons/smart.manifest.json", + "sha256": "e085e15f211b4b4b25ef72f901418fd2097bf6fa618e502ec24d66ff08e7d8ae" + }, + "smart/inputs/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/smart.manifest.json", + "sha256": "0a8c0a6b82dd6fa08c4a8ba1dbdede1e21cfd8cf729f0d72a261ac0fae867054" + }, + "smart/pagination/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/pagination/smart.manifest.json", + "sha256": "8d9c696d3376044e793ca70835d1be28acccf69048b32fb5dca9a4e5639a07b9" + }, + "smart/spinner/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/spinner/smart.manifest.json", + "sha256": "10660f7e3ae14cc536c76a99147e92f76d4abdc4b53d7271dac3c0b0e03474f5" + }, + "smart/tabs/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/smart.manifest.json", + "sha256": "1e19516cca28d5bf72ddd1377712a03f681cb8236a5af399020405b0c9bfabda" + }, + "smart/tags/smart.manifest.json": { + "source": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/smart.manifest.json", + "sha256": "43959e43b0ca8608208dfd2cf52444125b373a91b02e9e114cfd6155241178cd" + }, + "utility/display/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display/default/css/default.css", + "sha256": "152a9e0ab6c9117de389cfff16d9a5692bbe0afcc7b84455103728caf1c1ad0c" + }, + "utility/display/lg/css/lg.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display/lg/css/lg.css", + "sha256": "4dc5227e56e045f85f8df4553cb8136d17bc4d1a58b3ccf1bf8cdb1572a9bdf4" + }, + "utility/display/md/css/md.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display/md/css/md.css", + "sha256": "9ec19bca9ef7b1f402d37ef7f0fe92f75efced3db80a99da007f9680943f0252" + }, + "utility/display/sm/css/sm.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display/sm/css/sm.css", + "sha256": "37a33ee2540794dd56bd4cef2da55d3630c71ff80459fbef030aafea70da05c2" + }, + "utility/display/xl/css/xl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display/xl/css/xl.css", + "sha256": "40c7bc40c20dd6dec89853b09425f54106724997dd15de9c314f2f6e6cbef198" + }, + "utility/display/xxl/css/xxl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display/xxl/css/xxl.css", + "sha256": "003a41aa5e0b3779209d5081109af9fe26751510ecb0cfa2c0013e0c06974187" + }, + "utility/flex-direction/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction/default/css/default.css", + "sha256": "5beee1857f1217c3b2be6b836b0ae9cfc81dfea685bdb2f7dcaa30724923a81b" + }, + "utility/flex-direction/lg/css/lg.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction/lg/css/lg.css", + "sha256": "02e44690c5915ef8e0945f4b726d113dfa2276dc1051324bdb898ea92eb9f971" + }, + "utility/flex-direction/md/css/md.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction/md/css/md.css", + "sha256": "dff3ac0c510c024580b3863ffbbd64c406ed620df6f10693631ef0529606492d" + }, + "utility/flex-direction/sm/css/sm.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction/sm/css/sm.css", + "sha256": "456956de337125d3de490eb7154b3993100ea60f02e54003c85ff4de9c2ea118" + }, + "utility/flex-direction/xl/css/xl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction/xl/css/xl.css", + "sha256": "4581eb98d4846ce4db73c30aa53b7f28f6d5c3206bebae3a8cdda04676ede00c" + }, + "utility/flex-direction/xxl/css/xxl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction/xxl/css/xxl.css", + "sha256": "54f0e6797dbc54c907d61b232bc52caac06c66034633b2394e8263bf274d130b" + }, + "utility/gap/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap/default/css/default.css", + "sha256": "cb5fdffe0601ae5aabf5d2b133ff362f10804355bd3f0b0a5e5467851f3ca531" + }, + "utility/gap/lg/css/lg.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap/lg/css/lg.css", + "sha256": "62730b9b3630af8d8514e9c356ce9bad0ed734f74f44dfddc4a774d2ce3947ac" + }, + "utility/gap/md/css/md.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap/md/css/md.css", + "sha256": "b9c135326a60f9bb73f9566371b66ab0ff9ebde2a7a7ff761a307720ad71e611" + }, + "utility/gap/sm/css/sm.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap/sm/css/sm.css", + "sha256": "edc83b1f395077bff22464dbe062104aa21f7d3db889419beb2db9130b7fe3a6" + }, + "utility/gap/xl/css/xl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap/xl/css/xl.css", + "sha256": "348f5fd5ee3dff38f851536760b75b91e65c51dcbb7128032f1b64191a6d09f8" + }, + "utility/gap/xxl/css/xxl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap/xxl/css/xxl.css", + "sha256": "982a4fb27240754232d181ebdeb310d6cfa0e6e9a254e78bfa11b987b207aeb8" + }, + "utility/overflow/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow/default/css/default.css", + "sha256": "5e0624991b2bdd39b0a4448e259d922270087cea8320af2f0fbf55cae206d603" + }, + "utility/overflow/lg/css/lg.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow/lg/css/lg.css", + "sha256": "3c3232180c9b1edfed95b846551bce35b75e5ad4a8df4fe30dc9d22515fd8c5d" + }, + "utility/overflow/md/css/md.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow/md/css/md.css", + "sha256": "82e43da4fb9b838ef5a8b7e9d5af364c5d3e5bfcfd990586409a0369188bc926" + }, + "utility/overflow/sm/css/sm.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow/sm/css/sm.css", + "sha256": "2eb2e5cd3f3db9d28ce824ded3bb8024a785b40378ae08eeebace579f0ad7cd8" + }, + "utility/overflow/xl/css/xl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow/xl/css/xl.css", + "sha256": "0e12d88b3d9112f73ae5c37977b99822eeed62593e5f71a474a757f6a249a03c" + }, + "utility/overflow/xxl/css/xxl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow/xxl/css/xxl.css", + "sha256": "174031fa536ea08f36f384ff8c6bcc341a6ee720e4fb3e416181a392e185f85f" + }, + "utility/pointer-events/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/pointer-events/default/css/default.css", + "sha256": "3b3d14d44e95a83d3e06b8863c9c220ce5401aa63fb361647903c7f485014873" + }, + "utility/text-align/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align/default/css/default.css", + "sha256": "ebd728b5856277d7b1b30320361c30f9c13ffdf8f63c58071bb43f31f846946c" + }, + "utility/text-align/lg/css/lg.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align/lg/css/lg.css", + "sha256": "f0f33cd75cae3eb78f5ac7e2270d77a86e3e1a1faad9a2f09a1e0c7009b3c9df" + }, + "utility/text-align/md/css/md.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align/md/css/md.css", + "sha256": "efa98fd1d7e0766ef4841f76d65fe1615e6e0628afdc1e171dc60ec1b3dc73a9" + }, + "utility/text-align/sm/css/sm.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align/sm/css/sm.css", + "sha256": "09c6932748f6b68ba4a4d766b5455c9ea1f2310b139c16a1569d3f90c65efdac" + }, + "utility/text-align/xl/css/xl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align/xl/css/xl.css", + "sha256": "619680c6131c66051ef286cfb055e09f53229b1a8adcdb527492e5f8fab7386e" + }, + "utility/text-align/xxl/css/xxl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align/xxl/css/xxl.css", + "sha256": "a772ebe2ee3d905a738e75a38e297b71bf144e5c046d0e020f0145aef891c766" + }, + "utility/width/default/css/default.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width/default/css/default.css", + "sha256": "a5eabd24c275cee2eba580279f354939df130e3ff3144011de80d0e805be1a97" + }, + "utility/width/lg/css/lg.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width/lg/css/lg.css", + "sha256": "495082960f1889e7461121295dbe468b351aa0adcf8fd7c8d7308ec54d33e1b9" + }, + "utility/width/md/css/md.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width/md/css/md.css", + "sha256": "d8086c4cbce37a6da2579162445e47bed4a4a8c277356b4c5bb1a487ee615065" + }, + "utility/width/sm/css/sm.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width/sm/css/sm.css", + "sha256": "57f35ecb552e409c28307bab52dd6a4eebb6765a614ff76377c2a065e3d2a8f8" + }, + "utility/width/xl/css/xl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width/xl/css/xl.css", + "sha256": "29fe1060fe1b6ef28eef176e10cc58095db9d116102dcb76eeec209a48061d31" + }, + "utility/width/xxl/css/xxl.css": { + "source": "a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width/xxl/css/xxl.css", + "sha256": "76f520b70a59e9708cdaf32b2687d4a7421821b475986c20e6d555f3b8521be7" + } + } +} diff --git a/contracts/framework/core/core.css b/contracts/framework/core/core.css new file mode 100644 index 0000000..318bf4f --- /dev/null +++ b/contracts/framework/core/core.css @@ -0,0 +1,2936 @@ +@charset "UTF-8"; +/* + * SIMAI Framework + * https://simai.io + * + * Copyright (c) 2008-2026 Rim Zabarov and contributors + * Released under the MIT License. + */ +@layer sf.reset, sf.tokens, sf.base, sf.utilities, sf.components, sf.overrides, sf.states; +@layer sf.base { + /* Верхние ступени подобраны под лестницу отступов: угол ступени не превышает + отступ той же ступени, поэтому «p-N radius-N» читается как одно решение, а + не как две подогнанные величины. Прежние 20/24 и 36/48 разгонялись вдвое за + шаг, тогда как отступы росли ровно. */ + :root { + /* Нулевая ступень: класс radius-0 просил её с самого начала. */ + --sf-radius-0: var(--sf-a0); + --sf-radius-1\/3: 0.125rem; + --sf-radius-1\/3: var(--sf-a2); + --sf-radius-1\/2: 0.25rem; + --sf-radius-1\/2: var(--sf-a4); + --sf-radius-1: var(--sf-a8); + --sf-radius-2: var(--sf-b2); + --sf-radius-3: var(--sf-b6); + --sf-radius-4: var(--sf-c2); + --sf-radius-circle: 1000px; + } + @media (min-width: 60rem) { + :root { + --sf-radius-0: var(--sf-a0); + --sf-radius-1\/3: 0.125rem; + --sf-radius-1\/3: var(--sf-a2); + --sf-radius-1\/2: 0.25rem; + --sf-radius-1\/2: var(--sf-a4); + --sf-radius-1: var(--sf-a8); + --sf-radius-2: var(--sf-b6); + --sf-radius-3: var(--sf-c2); + --sf-radius-4: var(--sf-c6); + --sf-radius-circle: 1000px; + } + } +} +@layer sf.base { + :root, ::after, ::before { + --sf-radius-default: var(--sf-a4); + --sf-radius-square: 0; + --sf-radius-rounded: 1000px; + --sf-radius-round: var(--sf-radius-rounded); + } +} +@layer sf.base { + :root { + --sf-focus-outline-width: calc(var(--sf-px) * 2); + } + @media (min-width: 60rem) { + :root { + --sf-focus-outline-width: calc(var(--sf-px) * 2); + } + } +} +@layer sf.base { + :root { + --sf-border--width: 0; + --sf-border--style: solid; + --sf-border--color: var(--sf-transparent); + border: var(--sf-border--width) var(--sf-border--style) var(--sf-border--color); + border-color: var(--sf-outline-variant); + --sf-radius--ui: var(--sf-radius-1\/2); + --sf-radius--surface: var(--sf-radius-1); + --sf-focus--color: var(--sf-focus); + --sf-focus--offset: var(--sf-px); + --sf-focus--style: solid; + --sf-focus--width: var(--sf-focus-outline-width); + --sf-ui-focus-inset: inset 0 0 0 var(--sf-focus-outline-width) var(--sf-focus); + } + .focus-visible { + outline-color: var(--sf-focus--color); + outline-offset: var(--sf-focus--offset); + outline-style: var(--sf-focus--style); + outline-width: var(--sf-focus--width); + } + :focus-visible { + outline-color: var(--sf-focus--color); + outline-offset: var(--sf-focus--offset); + outline-style: var(--sf-focus--style); + outline-width: var(--sf-focus--width); + } + .border { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + /* One meaning for the name: the border-style utility's, border-style: none. + Core drew a transparent 1px border under the same class, so which one a page + got depended on whether the utility sheet had loaded yet. */ + .border-none { + border-style: none; + } + .divider > :not([hidden]) ~ :not([hidden]) { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + .divider-none > :not([hidden]) ~ :not([hidden]) { + border-width: 0; + border-width: var(--sf-0); + } + .outline { + outline: 1px var(--sf-outline-variant) solid; + outline: var(--sf-px) var(--sf-outline-variant) solid; + } + .outline-none { + outline-width: 0; + outline-width: var(--sf-0); + } + @media (min-width: 32rem) { + .sm\:border { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + .sm\:border-none { + border-style: none; + } + } + @media (min-width: 44rem) { + .md\:border { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + .md\:border-none { + border-style: none; + } + } + @media (min-width: 60rem) { + .lg\:border { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + .lg\:border-none { + border-style: none; + } + } + @media (min-width: 72rem) { + .xl\:border { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + .xl\:border-none { + border-style: none; + } + } + .hover\:border:hover { + border: 1px var(--sf-outline-variant) solid; + border: var(--sf-px) var(--sf-outline-variant) solid; + } + .hover\:border-none:hover { + border-style: none; + } +} +@layer sf.base { + /* The theme classes carry nothing but the scheme, because that is what + light-dark() reads to choose a branch. Everything else is declared once + below, with its light value and its dark value side by side, so the two + cannot drift apart. A project overrides a primitive or a semantic token + exactly as before: the values here are var() references, resolved after the + branch is chosen, and a per-theme override still wins by being more + specific. */ + .theme-light { + color-scheme: light; + } + .theme-dark { + color-scheme: dark; + } + .theme-light, + .theme-dark { + --sf-neutral: light-dark(var(--sf-neutral-40), var(--sf-neutral-80)); + --sf-primary: light-dark(var(--sf-primary-40), var(--sf-primary-80)); + --sf-secondary: light-dark(var(--sf-secondary-40), var(--sf-secondary-80)); + --sf-tertiary: light-dark(var(--sf-tertiary-40), var(--sf-tertiary-80)); + --sf-success: light-dark(var(--sf-success-40), var(--sf-success-80)); + --sf-success-hover: light-dark(var(--sf-success-35), var(--sf-success-85)); + --sf-success-active: light-dark(var(--sf-success-30), var(--sf-success-90)); + --sf-success-container: light-dark(var(--sf-success-50--alfa-12), var(--sf-success-50--alfa-24)); + --sf-success-container-hover: light-dark(var(--sf-success-50--alfa-16), var(--sf-success-50--alfa-28)); + --sf-success-container-active: light-dark(var(--sf-success-50--alfa-20), var(--sf-success-50--alfa-32)); + --sf-success-transparent-hover: light-dark(var(--sf-success-50--alfa-4), var(--sf-success-90--alfa-4)); + --sf-success-transparent-select: light-dark(var(--sf-success-50--alfa-8), var(--sf-success-90--alfa-8)); + --sf-success-transparent-active: light-dark(var(--sf-success-50--alfa-12), var(--sf-success-90--alfa-12)); + --sf-success-transparent-overlay: light-dark(var(--sf-success-50--alfa-24), var(--sf-success-90--alfa-24)); + --sf-on-success: light-dark(var(--sf-white), var(--sf-success-20)); + --sf-on-success-container: light-dark(var(--sf-success-10), var(--sf-success-90)); + --sf-on-success-container-graphic: light-dark(var(--sf-success-50), var(--sf-success-60)); + --sf-outline-success: light-dark(var(--sf-success-50), var(--sf-success-60)); + --sf-warning: light-dark(var(--sf-warning-40), var(--sf-warning-80)); + --sf-error: light-dark(var(--sf-error-40), var(--sf-error-80)); + --sf-error-hover: light-dark(var(--sf-error-35), var(--sf-error-85)); + --sf-error-active: light-dark(var(--sf-error-30), var(--sf-error-90)); + --sf-error-container: light-dark(var(--sf-error-50--alfa-12), var(--sf-error-50--alfa-24)); + --sf-error-container-hover: light-dark(var(--sf-error-50--alfa-16), var(--sf-error-50--alfa-28)); + --sf-error-container-active: light-dark(var(--sf-error-50--alfa-20), var(--sf-error-50--alfa-32)); + --sf-error-transparent-hover: light-dark(var(--sf-error-50--alfa-4), var(--sf-error-90--alfa-4)); + --sf-error-transparent-select: light-dark(var(--sf-error-50--alfa-8), var(--sf-error-90--alfa-8)); + --sf-error-transparent-active: light-dark(var(--sf-error-50--alfa-12), var(--sf-error-90--alfa-12)); + --sf-error-transparent-overlay: light-dark(var(--sf-error-50--alfa-24), var(--sf-error-90--alfa-24)); + --sf-on-error: light-dark(var(--sf-white), var(--sf-error-20)); + --sf-on-error-container: light-dark(var(--sf-error-10), var(--sf-error-90)); + --sf-on-error-container-graphic: light-dark(var(--sf-error-50), var(--sf-error-60)); + --sf-outline-error: light-dark(var(--sf-error-50), var(--sf-error-60)); + --sf-warning-hover: light-dark(var(--sf-warning-35), var(--sf-warning-85)); + --sf-warning-active: light-dark(var(--sf-warning-30), var(--sf-warning-90)); + --sf-warning-container: light-dark(var(--sf-warning-50--alfa-12), var(--sf-warning-50--alfa-24)); + --sf-warning-container-hover: light-dark(var(--sf-warning-50--alfa-16), var(--sf-warning-50--alfa-28)); + --sf-warning-container-active: light-dark(var(--sf-warning-50--alfa-20), var(--sf-warning-50--alfa-32)); + --sf-warning-transparent-hover: light-dark(var(--sf-warning-50--alfa-4), var(--sf-warning-90--alfa-4)); + --sf-warning-transparent-select: light-dark(var(--sf-warning-50--alfa-8), var(--sf-warning-90--alfa-8)); + --sf-warning-transparent-active: light-dark(var(--sf-warning-50--alfa-12), var(--sf-warning-90--alfa-12)); + --sf-warning-transparent-overlay: light-dark(var(--sf-warning-50--alfa-24), var(--sf-warning-90--alfa-24)); + --sf-on-warning: light-dark(var(--sf-white), var(--sf-warning-20)); + --sf-on-warning-container: light-dark(var(--sf-warning-10), var(--sf-warning-90)); + --sf-on-warning-container-graphic: light-dark(var(--sf-warning-50), var(--sf-warning-60)); + --sf-outline-warning: light-dark(var(--sf-warning-50), var(--sf-warning-60)); + --sf-tertiary-hover: light-dark(var(--sf-tertiary-35), var(--sf-tertiary-85)); + --sf-tertiary-active: light-dark(var(--sf-tertiary-30), var(--sf-tertiary-90)); + --sf-tertiary-container: light-dark(var(--sf-tertiary-50--alfa-12), var(--sf-tertiary-50--alfa-24)); + --sf-tertiary-container-hover: light-dark(var(--sf-tertiary-50--alfa-16), var(--sf-tertiary-50--alfa-28)); + --sf-tertiary-container-active: light-dark(var(--sf-tertiary-50--alfa-20), var(--sf-tertiary-50--alfa-32)); + --sf-tertiary-transparent-hover: light-dark(var(--sf-tertiary-50--alfa-4), var(--sf-tertiary-90--alfa-4)); + --sf-tertiary-transparent-select: light-dark(var(--sf-tertiary-50--alfa-8), var(--sf-tertiary-90--alfa-8)); + --sf-tertiary-transparent-active: light-dark(var(--sf-tertiary-50--alfa-12), var(--sf-tertiary-90--alfa-12)); + --sf-tertiary-transparent-overlay: light-dark(var(--sf-tertiary-50--alfa-24), var(--sf-tertiary-90--alfa-24)); + --sf-on-tertiary: light-dark(var(--sf-white), var(--sf-tertiary-20)); + --sf-on-tertiary-container: light-dark(var(--sf-tertiary-10), var(--sf-tertiary-90)); + --sf-on-tertiary-container-graphic: light-dark(var(--sf-tertiary-50), var(--sf-tertiary-60)); + --sf-outline-tertiary: light-dark(var(--sf-tertiary-50), var(--sf-tertiary-60)); + --sf-secondary-hover: light-dark(var(--sf-secondary-35), var(--sf-secondary-85)); + --sf-secondary-active: light-dark(var(--sf-secondary-30), var(--sf-secondary-90)); + --sf-secondary-container: light-dark(var(--sf-secondary-50--alfa-12), var(--sf-secondary-50--alfa-24)); + --sf-secondary-container-hover: light-dark(var(--sf-secondary-50--alfa-16), var(--sf-secondary-50--alfa-28)); + --sf-secondary-container-active: light-dark(var(--sf-secondary-50--alfa-20), var(--sf-secondary-50--alfa-32)); + --sf-secondary-transparent-hover: light-dark(var(--sf-secondary-50--alfa-4), var(--sf-secondary-90--alfa-4)); + --sf-secondary-transparent-select: light-dark(var(--sf-secondary-50--alfa-8), var(--sf-secondary-90--alfa-8)); + --sf-secondary-transparent-active: light-dark(var(--sf-secondary-50--alfa-12), var(--sf-secondary-90--alfa-12)); + --sf-secondary-transparent-overlay: light-dark(var(--sf-secondary-50--alfa-24), var(--sf-secondary-90--alfa-24)); + --sf-on-secondary: light-dark(var(--sf-white), var(--sf-secondary-20)); + --sf-on-secondary-container: light-dark(var(--sf-secondary-10), var(--sf-secondary-90)); + --sf-on-secondary-container-graphic: light-dark(var(--sf-secondary-50), var(--sf-secondary-60)); + --sf-primary-hover: light-dark(var(--sf-primary-35), var(--sf-primary-85)); + --sf-primary-active: light-dark(var(--sf-primary-30), var(--sf-primary-90)); + --sf-primary-container: light-dark(var(--sf-primary-50--alfa-12), var(--sf-primary-50--alfa-24)); + --sf-primary-container-hover: light-dark(var(--sf-primary-50--alfa-16), var(--sf-primary-50--alfa-28)); + --sf-primary-container-active: light-dark(var(--sf-primary-50--alfa-20), var(--sf-primary-50--alfa-32)); + /* Полупрозрачные слои палитры: наведение, выбор, нажатие и затемнение + поверх неизвестного фона. Утилиты предлагали их с самого начала, + а слой ролей — нет, поэтому bg-primary-transparent-select ничего + не красил. */ + --sf-primary-transparent-hover: light-dark(var(--sf-primary-50--alfa-4), var(--sf-primary-90--alfa-4)); + --sf-primary-transparent-select: light-dark(var(--sf-primary-50--alfa-8), var(--sf-primary-90--alfa-8)); + --sf-primary-transparent-active: light-dark(var(--sf-primary-50--alfa-12), var(--sf-primary-90--alfa-12)); + --sf-primary-transparent-overlay: light-dark(var(--sf-primary-50--alfa-24), var(--sf-primary-90--alfa-24)); + --sf-on-primary: light-dark(var(--sf-white), var(--sf-primary-20)); + --sf-on-primary-container: light-dark(var(--sf-primary-10), var(--sf-primary-90)); + --sf-on-primary-container-graphic: light-dark(var(--sf-primary-50), var(--sf-primary-60)); + --sf-outline-primary: light-dark(var(--sf-primary-50), var(--sf-primary-60)); + --sf-neutral-hover: light-dark(var(--sf-neutral-35), var(--sf-neutral-85)); + --sf-neutral-active: light-dark(var(--sf-neutral-30), var(--sf-neutral-90)); + --sf-neutral-container: light-dark(var(--sf-neutral-90), var(--sf-neutral-30)); + --sf-neutral-container-hover: light-dark(var(--sf-neutral-85), var(--sf-neutral-35)); + --sf-neutral-container-active: light-dark(var(--sf-neutral-80), var(--sf-neutral-40)); + --sf-on-neutral: light-dark(var(--sf-white), var(--sf-neutral-20)); + --sf-on-neutral-container: light-dark(var(--sf-neutral-10), var(--sf-neutral-90)); + --sf-on-neutral-container-graphic: light-dark(var(--sf-neutral-50), var(--sf-neutral-60)); + --sf-info: light-dark(var(--sf-info-40), var(--sf-info-80)); + --sf-info-hover: light-dark(var(--sf-info-35), var(--sf-info-85)); + --sf-info-active: light-dark(var(--sf-info-30), var(--sf-info-90)); + --sf-info-container: light-dark(var(--sf-info-50--alfa-12), var(--sf-info-50--alfa-24)); + --sf-info-container-hover: light-dark(var(--sf-info-50--alfa-16), var(--sf-info-50--alfa-28)); + --sf-info-container-active: light-dark(var(--sf-info-50--alfa-20), var(--sf-info-50--alfa-32)); + --sf-on-info: light-dark(var(--sf-white), var(--sf-info-20)); + --sf-on-info-container: light-dark(var(--sf-info-10), var(--sf-info-90)); + --sf-on-info-container-graphic: light-dark(var(--sf-info-50), var(--sf-info-60)); + --sf-outline-info: light-dark(var(--sf-info-50), var(--sf-info-60)); + --sf-surface-0: light-dark(var(--sf-white), var(--sf-neutral-5)); + --sf-surface-1: light-dark(var(--sf-neutral-98), var(--sf-neutral-10)); + /* The veil over a scene, and the one translucent surface that keeps the pure + base: it darkens what is behind a modal rather than tinting a surface, and + on the neutral tone it came out 7.4 points lighter in the light theme -- + a veil that does not veil. */ + --sf-surface-overlay: light-dark(var(--sf-black--alfa-8), var(--sf-white--alfa-8)); + --sf-surface-2: light-dark(var(--sf-neutral-95), var(--sf-neutral-15)); + --sf-surface-3: light-dark(var(--sf-neutral-90), var(--sf-neutral-20)); + --sf-surface-4: light-dark(var(--sf-neutral-85), var(--sf-neutral-25)); + --sf-surface-5: light-dark(var(--sf-neutral-80), var(--sf-neutral-30)); + /* What a pointer does to a surface, on the neutral tone of the theme: the + state family's three steps, 4, 8 and 12. + `active` was removed on 2026-10-08 as asked for by nothing. It was not: + the utility generator derives `active:bg-surface-transparent` from the + background list and reads this name bare, so the class painted nothing + on press for exactly one published pair. The sweep that called it dead + searched for `var(--sf-surface-transparent-active)` in the sources, and + a generated utility is in none of them (owner, 2026-10-09). + `overlay` stays for the same reason, and read as unused at first for the + same reason: it is the backdrop of a modal, asked for through the + utilities rather than through var(). */ + --sf-surface-transparent-hover: light-dark(var(--sf-neutral-50--alfa-4), var(--sf-neutral-90--alfa-4)); + --sf-surface-transparent-select: light-dark(var(--sf-neutral-50--alfa-8), var(--sf-neutral-90--alfa-8)); + --sf-surface-transparent-active: light-dark(var(--sf-neutral-50--alfa-12), var(--sf-neutral-90--alfa-12)); + /* A step above the strongest plate, and not because the ladder asks: a + plate sits on the page, a veil covers it. At 24 the two were the same + colour, and the backdrop of a modal was as strong as a pressed card + (owner, 2026-10-08). */ + --sf-surface-transparent-overlay: light-dark(var(--sf-neutral-50--alfa-32), var(--sf-neutral-90--alfa-32)); + --sf-surface-inverse: light-dark(var(--sf-neutral-20), var(--sf-neutral-90)); + /* The inverse surface under a pointer: the same five-tone step the other + hover roles take. A carousel control read the primitives for it, there + being no role (documentation trial 6, 2026-10-18). */ + --sf-surface-inverse-hover: light-dark(var(--sf-neutral-25), var(--sf-neutral-85)); + --sf-surface-inverse-fixed: var(--sf-neutral-20); + /* A tinted plate on the surface, on the same neutral tone as the state + layer above: neutral-50 in the light theme, neutral-90 in the dark. It + used to be neutral-50 in both, which meant the dark theme lightened its + plates with a middle grey while every other translucent surface + lightened with a near-white -- two tones doing one job. + + The steps are the same in both themes now, which they could not be while + the tone differed: 24, 28 and 32 in the dark were that darker tone + catching up. And they start at 16 rather than 12, because at 12 a plate + was the same colour as a pressed surface and the two could not be told + apart (owner, 2026-10-08). */ + --sf-surface-container: light-dark(var(--sf-neutral-50--alfa-16), var(--sf-neutral-90--alfa-16)); + --sf-surface-container-hover: light-dark(var(--sf-neutral-50--alfa-20), var(--sf-neutral-90--alfa-20)); + --sf-surface-container-active: light-dark(var(--sf-neutral-50--alfa-24), var(--sf-neutral-90--alfa-24)); + --sf-on-surface: light-dark(var(--sf-neutral-10), var(--sf-neutral-90)); + --sf-on-surface-fixed: var(--sf-neutral-10); + --sf-on-surface-hover: light-dark(var(--sf-neutral-15), var(--sf-neutral-85)); + --sf-on-surface-active: light-dark(var(--sf-neutral-20), var(--sf-neutral-80)); + --sf-on-surface-variant: light-dark(var(--sf-neutral-40), var(--sf-neutral-60)); + /* Dimmed text on a container fill (--sf-surface-container over any of the + surfaces 0 to 3). The fill is translucent, so the text lies on the fill + and the surface together: neutral-60 measured 4.0:1 in the dark theme, + neutral-70 still 4.25:1 over surface-2, and neutral-40 4.26:1 over + surface-3 in the light one. Neutral-80 and neutral-35 hold 5.0 and 5.1 + over the brightest of them and stay well short of the primary role + (effects-gallery theme audit and the ui-doc repin, 2026-10-19; issue + simai/ui-source#3). A fill inside a fill -- an avatar in a tag -- is + darker still and takes the primary role. */ + --sf-on-surface-container--variant: light-dark(var(--sf-neutral-35), var(--sf-neutral-80)); + --sf-on-surface-muted: light-dark(var(--sf-neutral-60), var(--sf-neutral-40)); + --sf-on-surface-inverse: light-dark(var(--sf-neutral-90), var(--sf-neutral-10)); + --sf-on-surface-inverse-fixed: var(--sf-neutral-90); + /* The boundary of anything a person has to find: a control at rest, a + solid rule, the edge of a thing that is not a region. At the opacity + that gives exactly WCAG 1.4.11's 3:1 on surface-0 -- 80% light, 64% + dark; 3.10:1 and 3.12:1. + + There were three neutral boundary roles for a while, and the third one + -- --sf-outline-control, the resting edge of a control -- was this value + under its own name. Two things were wrong with that. The system has two + neutral boundary roles and had always had two: this one and the variant + for the edge of a region. And in the light theme the third role came out + at exactly --sf-outline-disable, so a field at rest and a field nobody + can type in were drawn in the same line (owner, 2026-10-08). + + So the value moved here and the third role is gone. What a boundary does + when it is touched is said in colour, not in a stronger grey: hover and + active take the primary roles, focus takes --sf-focus. + + Both halves are steps of the alpha scale now. The dark one, 64, is on + the scale's own footing -- it climbs in fours -- and had simply never + been generated, which is why this role used to be written as a + color-mix of its own (owner, 2026-10-08). */ + --sf-outline: light-dark(var(--sf-neutral-50--alfa-80), var(--sf-neutral-60--alfa-64)); + /* The edge of a region -- a panel, a card, a table, a row inside one. + Nothing is found by it, so it is not held to 1.4.11: 1.34:1 and 1.92:1. */ + --sf-outline-variant: light-dark(var(--sf-neutral-50--alfa-24), var(--sf-neutral-90--alfa-24)); + --sf-outline-secondary: light-dark(var(--sf-secondary-50), var(--sf-secondary-60)); + --sf-disable: light-dark(var(--sf-neutral-50--alfa-12), var(--sf-neutral-90--alfa-12)); + --sf-on-disable: light-dark(var(--sf-neutral-50--alfa-80), var(--sf-neutral-90--alfa-48)); + /* The boundary of a control nobody can use, and the one role whose whole + job is to be weaker than another. It carried the same value as + --sf-outline in the light theme -- a field at rest and a field nobody + can type in drawn in the same line -- and in the dark theme it was + stronger than --sf-outline, 4.13:1 against 3.12:1, so the one that was + switched off was the one that stood out. It takes the ink scale's lower + step now, from the tone of the boundary rather than of the ink: 1.86:1 + light and 2.26:1 dark, under the live boundary in both (owner, + 2026-10-08). */ + --sf-outline-disable: light-dark(var(--sf-neutral-50--alfa-48), var(--sf-neutral-60--alfa-48)); + --sf-link: light-dark(var(--sf-primary-40), var(--sf-primary-80)); + --sf-mark: light-dark(var(--sf-warning-50--alfa-24), var(--sf-warning-90--alfa-24)); + --sf-focus: light-dark(var(--sf-primary-50), var(--sf-primary-90)); + --sf-link-hover: light-dark(var(--sf-primary-35), var(--sf-primary-85)); + --sf-link-active: light-dark(var(--sf-primary-30), var(--sf-primary-90)); + --sf-link-visited: light-dark(var(--sf-tertiary-40), var(--sf-tertiary-80)); + --sf-code: light-dark(var(--sf-tertiary-50--alfa-24), var(--sf-tertiary-90--alfa-24)); + --sf-shadow--color-fill: var(--sf-black--alfa-12); + --sf-shadow--color-outline: var(--sf-black--alfa-8); + --sf-shadow--color-shading: var(--sf-black--alfa-4); + /* Высота — это две вещи сразу: тень под элементом и поверхность под ним. + В светлой теме работает тень, и поднятая поверхность остаётся обычной. + В тёмной тень не работает вовсе: она чёрная, фон почти чёрный, и весь + пятиступенчатый набор укладывался в три-семь единиц яркости из 255 — + ниже порога, на котором человек замечает разницу. Там высоту несёт + ступень поверхности, которая в тёмной теме светлеет. */ + --sf-elevation-1--surface: light-dark(var(--sf-surface-0), var(--sf-surface-2)); + --sf-elevation-2--surface: light-dark(var(--sf-surface-0), var(--sf-surface-3)); + --sf-elevation-3--surface: light-dark(var(--sf-surface-0), var(--sf-surface-4)); + --sf-elevation-4--surface: light-dark(var(--sf-surface-0), var(--sf-surface-5)); + --sf-elevation-5--surface: light-dark(var(--sf-surface-0), var(--sf-surface-5)); + /* The shadow of each step, beside its surface: a panel that floats takes + both, so a theme or a product retunes height in one place (a dark theme + may drop the shadow and keep the surface, or the reverse). The rim is a + last layer a theme may switch on to outline raised panels in the dark; + it is off: 0 0 0 0 transparent. */ + --sf-shadow--rim: 0 0 0 0 transparent; + --sf-elevation-1--shadow: var(--sf-ui-shadow-1), var(--sf-shadow--rim); + --sf-elevation-2--shadow: var(--sf-ui-shadow-2), var(--sf-shadow--rim); + --sf-elevation-3--shadow: var(--sf-ui-shadow-3), var(--sf-shadow--rim); + --sf-elevation-4--shadow: var(--sf-ui-shadow-4), var(--sf-shadow--rim); + --sf-elevation-5--shadow: var(--sf-ui-shadow-5), var(--sf-shadow--rim); + /* Приглушённый текст на поднятой поверхности. В светлой теме поднятая + поверхность остаётся обычной, поэтому значение то же, что у + --sf-on-surface-variant. В тёмной поверхность светлеет со ступенью, и + вместе с ней светлеет текст: иначе одна и та же роль даёт 4.14 на второй + ступени и 2.93 на четвёртой при требуемых WCAG 1.4.3 четырёх с половиной. + Значений три, а не пять: роль меняется там, где перестаёт проходить. */ + --sf-on-elevation-1--variant: light-dark(var(--sf-neutral-40), var(--sf-neutral-60)); + --sf-on-elevation-2--variant: light-dark(var(--sf-neutral-40), var(--sf-neutral-70)); + --sf-on-elevation-3--variant: light-dark(var(--sf-neutral-40), var(--sf-neutral-70)); + --sf-on-elevation-4--variant: light-dark(var(--sf-neutral-40), var(--sf-neutral-80)); + --sf-on-elevation-5--variant: light-dark(var(--sf-neutral-40), var(--sf-neutral-80)); + /* The neutral half of the alpha scale. The base branches per scheme — ink on + a light surface, light on a dark one — so a component asks for a degree of + contrast rather than for black or white, and every step above is one + declaration that is right in both themes. + + The steps are the scale's own, in fours, and only the ones something asks + for: 2 and 6 were off the scale, 20 and 24 were on it and unused + (owner, 2026-10-08). The tinted half lives in the palette as + --sf---alfa-N; the two halves are one scale and share its steps. */ + --sf-alpha-base: light-dark(var(--sf-black), var(--sf-white)); + --sf-alpha-4: color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 4%); + --sf-alpha-8: color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 8%); + --sf-alpha-12: color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 12%); + --sf-alpha-16: color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 16%); + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-space-0: 0; + --sf-space-1\/4: 0.25rem; + --sf-space-1\/4: var(--sf-a4); + --sf-space-1\/3: 0.5rem; + --sf-space-1\/3: var(--sf-a8); + --sf-space-1\/2: 0.5rem; + --sf-space-1\/2: var(--sf-a8); + --sf-space-1: var(--sf-b2); + --sf-space-2: var(--sf-b6); + --sf-space-3: var(--sf-b6); + --sf-space-4: var(--sf-c2); + --sf-space-5: var(--sf-c6); + --sf-space-6: var(--sf-c6); + --sf-space-7: var(--sf-d0); + --sf-space-8: var(--sf-d2); + } + @media (min-width: 60rem) { + :root { + --sf-space-0: 0; + --sf-space-1\/4: 0.25rem; + --sf-space-1\/4: var(--sf-a4); + --sf-space-1\/3: 0.5rem; + --sf-space-1\/3: var(--sf-a8); + --sf-space-1\/2: 0.75rem; + --sf-space-1\/2: var(--sf-b2); + --sf-space-1: var(--sf-b6); + --sf-space-2: var(--sf-c0); + --sf-space-3: var(--sf-c2); + --sf-space-4: var(--sf-c6); + --sf-space-5: var(--sf-d0); + --sf-space-6: var(--sf-d2); + --sf-space-7: var(--sf-d6); + --sf-space-8: var(--sf-e0); + } + } +} +@layer sf.base { + :root { + --sf-opacity-10: 10%; + --sf-opacity-20: 20%; + --sf-opacity-30: 30%; + --sf-opacity-40: 40%; + --sf-opacity-50: 50%; + --sf-opacity-60: 60%; + --sf-opacity-70: 70%; + --sf-opacity-80: 80%; + --sf-opacity-90: 90%; + } +} +@layer sf.base { + :root { + --sf-ui-blur-small: blur(var(--sf-blur-small)); + --sf-ui-blur-medium: blur(var(--sf-blur-medium)); + --sf-ui-blur-large: blur(var(--sf-blur-large)); + --sf-ui-blur-surface-overlay: blur(var(--sf-surface-overlay--blur)); + --sf-ui-focus: 0 0 0 var(--sf-focus-outline-width) var(--sf-focus); + --sf-ui-shadow-1: 0 var(--sf-a2) var(--sf-a4) var(--sf-px) var(--sf-shadow--color-shading), 0 var(--sf-px) var(--sf-a3) 0 var(--sf-shadow--color-outline), 0 var(--sf-a2) var(--sf-a2) calc(-1 * var(--sf-px)) var(--sf-shadow--color-fill); + --sf-ui-shadow-2: 0 var(--sf-a4) var(--sf-a8) var(--sf-a2) var(--sf-shadow--color-shading), 0 var(--sf-a2) var(--sf-a6) 0 var(--sf-shadow--color-outline), 0 var(--sf-a4) var(--sf-a4) calc(-1 * var(--sf-a2)) var(--sf-shadow--color-fill); + --sf-ui-shadow-3: 0 var(--sf-a8) var(--sf-b6) var(--sf-a4) var(--sf-shadow--color-shading), 0 var(--sf-a4) var(--sf-b2) 0 var(--sf-shadow--color-outline), 0 var(--sf-a8) var(--sf-a8) calc(-1 * var(--sf-a4)) var(--sf-shadow--color-fill); + --sf-ui-shadow-4: 0 var(--sf-b6) var(--sf-c6) var(--sf-a4) var(--sf-shadow--color-shading), 0 var(--sf-a8) var(--sf-c2) 0 var(--sf-shadow--color-outline), 0 var(--sf-b6) var(--sf-b6) calc(-1 * var(--sf-a8)) var(--sf-shadow--color-fill); + --sf-ui-shadow-5: 0 var(--sf-c6) var(--sf-d6) var(--sf-a8) var(--sf-shadow--color-shading), 0 var(--sf-b6) var(--sf-d2) 0 var(--sf-shadow--color-outline), 0 var(--sf-c6) var(--sf-c6) calc(-1 * var(--sf-b6)) var(--sf-shadow--color-fill); + --sf-ui-shadow-top: 0 0 var(--sf-px) 0 var(--sf-shadow--color-fill), 0 calc(-1 * var(--sf-a4)) var(--sf-b0) var(--sf-a4) var(--sf-shadow--color-outline), 0 calc(-1 * var(--sf-a2)) var(--sf-a3) var(--sf-px) var(--sf-shadow--color-shading); + --sf-ui-skeleton: linear-gradient(180deg, var(--sf-neutral-80--alfa-48) 0%, var(--sf-neutral-60--alfa-48) 100%); + } +} +@layer sf.base { + .bg-surface-overlay { + background-color: var(--sf-surface-overlay); + -webkit-backdrop-filter: blur(var(--sf-surface-overlay--blur)); + backdrop-filter: blur(var(--sf-surface-overlay--blur)); + } +} +@layer sf.base { + :root { + --sf-empty: ; + --sf-alfa: 1; + } + .source { + overflow: hidden; + position: relative; + opacity: 0; + } + .source.init { + opacity: 1; + } + body, + blockquote, + dl, + dd, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + figure, + p, + pre { + margin: 0; + } + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: inherit; + font-weight: inherit; + } + ol, + img, + svg, + video, + canvas, + audio, + iframe, + embed, + object { + display: block; + vertical-align: middle; + } + input { + background-color: var(--sf-surface-0); + color: var(--sf-on-surface); + } + mark { + position: relative; + white-space: pre-wrap; + background-color: var(--sf-mark--color); + font-weight: inherit; + font-style: inherit; + } + *, + ::before, + ::after { + border-width: 0; + border-style: solid; + box-sizing: border-box; + } + [hidden]:not([hidden=until-found]) { + display: none !important; + } + body { + color: var(--sf-on-surface); + background-color: var(--sf-surface-0); + } +} +:root { + --sf-0: 0; + --sf-px: 1px; + --sf-auto: auto; + --sf-a0: 0rem; + --sf-a1: 0.0625rem; + --sf-a2: 0.125rem; + --sf-a3: 0.1875rem; + --sf-a4: 0.25rem; + --sf-a5: 0.3125rem; + --sf-a6: 0.375rem; + --sf-a7: 0.4375rem; + --sf-a8: 0.5rem; + --sf-a9: 0.5625rem; + --sf-b0: 0.625rem; + --sf-b1: 0.6875rem; + --sf-b2: 0.75rem; + --sf-b3: 0.8125rem; + --sf-b4: 0.875rem; + --sf-b5: 0.9375rem; + --sf-b6: 1rem; + --sf-b7: 1.0625rem; + --sf-b8: 1.125rem; + --sf-b9: 1.1875rem; + --sf-c0: 1.25rem; + --sf-c1: 1.375rem; + --sf-c2: 1.5rem; + --sf-c3: 1.625rem; + --sf-c4: 1.75rem; + --sf-c5: 1.875rem; + --sf-c6: 2rem; + --sf-c7: 2.125rem; + --sf-c8: 2.25rem; + --sf-c9: 2.375rem; + --sf-d0: 2.5rem; + --sf-d1: 2.75rem; + --sf-d2: 3rem; + --sf-d3: 3.25rem; + --sf-d4: 3.5rem; + --sf-d5: 3.75rem; + --sf-d6: 4rem; + --sf-d7: 4.25rem; + --sf-d8: 4.5rem; + --sf-d9: 4.75rem; + --sf-e0: 5rem; + --sf-e1: 5.5rem; + --sf-e2: 6rem; + --sf-e3: 6.5rem; + --sf-e4: 7rem; + --sf-e5: 7.5rem; + --sf-e6: 8rem; + --sf-e7: 8.5rem; + --sf-e8: 9rem; + --sf-e9: 9.5rem; + --sf-f0: 10rem; + --sf-f1: 11rem; + --sf-f2: 12rem; + --sf-f3: 13rem; + --sf-f4: 14rem; + --sf-f5: 15rem; + --sf-f6: 16rem; + --sf-f7: 17rem; + --sf-f8: 18rem; + --sf-f9: 19rem; + --sf-g0: 20rem; + --sf-g1: 22rem; + --sf-g2: 24rem; + --sf-g3: 26rem; + --sf-g4: 28rem; + --sf-g5: 30rem; + --sf-g6: 32rem; + --sf-g7: 34rem; + --sf-g8: 36rem; + --sf-g9: 38rem; + --sf-h0: 40rem; + --sf-h1: 44rem; + --sf-h2: 48rem; + --sf-h3: 52rem; + --sf-h4: 56rem; + --sf-h5: 60rem; + --sf-h6: 64rem; + --sf-h7: 68rem; + --sf-h8: 72rem; + --sf-h9: 76rem; + --sf-i0: 80rem; + --sf-i1: 88rem; + --sf-i2: 96rem; + --sf-i3: 104rem; + --sf-i4: 112rem; + --sf-i5: 120rem; + --sf-i6: 128rem; + --sf-i7: 136rem; + --sf-i8: 144rem; + --sf-i9: 152rem; + --sf-z-index--1: -1; + --sf-z-index-1: 10; + --sf-z-index-2: 20; + --sf-z-index-3: 30; + --sf-z-index-4: 40; + --sf-z-index-5: 50; + --sf-z-index-6: 60; + --sf-z-index-7: 70; + --sf-z-index-8: 80; + --sf-z-index-9: 90; + --sf-z-index-0: 0; +} + +@layer sf.base { + :root, + ::after, + ::before { + --sf-alfa: 1; + --sf-color--alfa: 1; + --sf-decoration--alfa: 1; + --sf-border--alfa: 1; + --sf-divider--alfa: 1; + --sf-outline--alfa: 1; + --sf-ring--alfa: 1; + --sf-bg--alfa: 1; + --sf-stripe--alfa: 1; + --sf-ring-color: ; + --sf-gradient--angle: 90deg; + --sf-gradient--alfa-1: 1; + --sf-gradient--alfa-2: 1; + --sf-gradient--alfa-3: 1; + --sf-stripe--size: var(--sf-a1, 1px); + --sf-accent--alfa: 1; + --sf-caret--alfa: 1; + --sf-scroll--alfa: 1; + --sf-scroll-thumb--alfa: 1; + --sf-scroll-track--alfa: 1; + --sf-stripe--color: var(--sf-surface-inverse); + --sf-drop-shadow--alfa: 1; + --sf-shadow--alfa: 1; + } +} +@layer sf.base { + :root { + --sf-transparent: rgba(255,255,255,0); + /* Два значения-ключевых слова, которые утилиты просили с самого начала: + целое семейство классов *-current и *-inherit ссылалось на них, а + объявления не было. Без него bg-current давал прозрачный фон, а + fill-current — чёрный; там, где начальное значение свойства случайно + совпадало с намерением, класс работал по удаче. */ + --sf-current: currentColor; + --sf-inherit: inherit; + --sf-transparent-for-focus: var(--sf-transparent); + --sf-white: #ffffff; + --sf-white--alfa-8: rgba(255,255,255,0.07843); + --sf-white--alfa-24: rgba(255,255,255,0.23922); + --sf-black: #000000; + --sf-black--alfa-4: rgba(0,0,0,0.03922); + --sf-black--alfa-8: rgba(0,0,0,0.07843); + --sf-black--alfa-12: rgba(0,0,0,0.12157); + --sf-neutral-98: #faf9fe; + --sf-neutral-95: #f1f0f6; + --sf-neutral-90: #e3e2e7; + --sf-neutral-90--alfa-4: rgba(227,226,231,0.03922); + --sf-neutral-90--alfa-8: rgba(227,226,231,0.07843); + --sf-neutral-90--alfa-12: rgba(227,226,231,0.12157); + /* The plate steps in the dark theme. The plate used to be mixed from + neutral-50 there, a middle grey, while everything else translucent was + mixed from this near-white (owner, 2026-10-08). */ + --sf-neutral-90--alfa-16: rgba(227,226,231,0.16078); + --sf-neutral-90--alfa-20: rgba(227,226,231,0.2); + --sf-neutral-90--alfa-24: rgba(227,226,231,0.23922); + --sf-neutral-90--alfa-32: rgba(227,226,231,0.32157); + --sf-neutral-90--alfa-48: rgba(227,226,231,0.47843); + --sf-neutral-85: #d4d4d9; + --sf-neutral-80: #c6c6cb; + --sf-neutral-70: #ababb0; + --sf-neutral-60: #909095; + /* The one alpha step neutral-60 has, and it is on the scale's own footing: + the run climbs in fours, and 64 is one of them -- it had simply never + been generated, so the boundary role carried a color-mix written in the + role itself. neutral-60 over the dark surface measures 5.95:1 at full + opacity, and 64% lands at 3.12:1, the WCAG 1.4.11 threshold the light + theme reaches at 80% (owner, 2026-10-08). */ + --sf-neutral-60--alfa-48: rgba(144,144,149,0.47843); + --sf-neutral-80--alfa-48: rgba(198,198,203,0.47843); + --sf-neutral-60--alfa-64: rgba(144,144,149,0.63922); + --sf-neutral-50: #76777c; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-neutral-50--alfa-4: rgba(118,119,124,0.03922); + --sf-neutral-50--alfa-8: rgba(118,119,124,0.07843); + --sf-neutral-50--alfa-12: rgba(118,119,124,0.12157); + --sf-neutral-50--alfa-16: rgba(118,119,124,0.16078); + --sf-neutral-50--alfa-20: rgba(118,119,124,0.2); + --sf-neutral-50--alfa-24: rgba(118,119,124,0.23922); + /* The veil over a scene: the backdrop of a modal and the bed of a + scrollbar. A step above the strongest plate, because a plate sits on the + page and a veil covers it (owner, 2026-10-08). */ + --sf-neutral-50--alfa-32: rgba(118,119,124,0.32157); + /* The ink family of the scale (48, 64, 80): marks drawn with the neutral + rather than washes laid under something. neutral-50 over white measures + 4.47:1 at full opacity, so 80% lands at 3.10:1, level with the dark + theme. The state (4/8/12) and fill (12-32) families sit above. */ + /* The ink step of the scale on the light neutral: the boundary of a control + nobody can use. Weaker than the 80 the boundary of a live one takes, and + that is the whole of its work (owner, 2026-10-08). */ + --sf-neutral-50--alfa-48: rgba(118,119,124,0.47843); + --sf-neutral-50--alfa-80: rgba(118,119,124,0.8); + --sf-neutral-40: #5d5e63; + --sf-neutral-35: #515257; + --sf-neutral-30: #45474b; + --sf-neutral-25: #3a3b40; + --sf-neutral-20: #2f3035; + --sf-neutral-15: #24262a; + --sf-neutral-10: #1a1b1f; + --sf-neutral-5: #0f1115; + --sf-primary-98: #f9f9ff; + --sf-secondary-98: #f9f9ff; + --sf-tertiary-98: #fff7fa; + --sf-tertiary-95: #ffebfd; + --sf-tertiary-90: #fdd6ff; + --sf-tertiary-90--alfa-4: rgba(253,214,255,0.03922); + --sf-tertiary-90--alfa-8: rgba(253,214,255,0.07843); + --sf-tertiary-90--alfa-12: rgba(253,214,255,0.12157); + --sf-tertiary-90--alfa-24: rgba(253,214,255,0.23922); + --sf-tertiary-85: #f9c2ff; + --sf-tertiary-80: #ecb3f4; + --sf-tertiary-70: #cf98d8; + --sf-tertiary-60: #b37ebb; + --sf-tertiary-50: #9765a0; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-tertiary-50--alfa-4: rgba(151,101,160,0.03922); + --sf-tertiary-50--alfa-8: rgba(151,101,160,0.07843); + --sf-tertiary-50--alfa-12: rgba(151,101,160,0.12157); + --sf-tertiary-50--alfa-16: rgba(151,101,160,0.16078); + --sf-tertiary-50--alfa-20: rgba(151,101,160,0.2); + --sf-tertiary-50--alfa-24: rgba(151,101,160,0.23922); + --sf-tertiary-50--alfa-28: rgba(151,101,160,0.27843); + --sf-tertiary-50--alfa-32: rgba(151,101,160,0.32157); + --sf-tertiary-40: #7c4c86; + --sf-tertiary-35: #6f4079; + --sf-tertiary-30: #63356c; + --sf-tertiary-25: #562960; + --sf-tertiary-20: #4a1e54; + --sf-tertiary-15: #3e1249; + --sf-tertiary-10: #32053e; + --sf-tertiary-5: #23002d; + --sf-secondary-95: #edf0ff; + --sf-secondary-90: #d7e2ff; + --sf-secondary-90--alfa-4: rgba(215,226,255,0.03922); + --sf-secondary-90--alfa-8: rgba(215,226,255,0.07843); + --sf-secondary-90--alfa-12: rgba(215,226,255,0.12157); + --sf-secondary-90--alfa-24: rgba(215,226,255,0.23922); + --sf-secondary-85: #c9d4f1; + --sf-secondary-80: #bbc6e3; + --sf-secondary-70: #a0abc7; + --sf-secondary-60: #8591ab; + --sf-secondary-50: #6c7791; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-secondary-50--alfa-4: rgba(108,119,145,0.03922); + --sf-secondary-50--alfa-8: rgba(108,119,145,0.07843); + --sf-secondary-50--alfa-12: rgba(108,119,145,0.12157); + --sf-secondary-50--alfa-16: rgba(108,119,145,0.16078); + --sf-secondary-50--alfa-20: rgba(108,119,145,0.2); + --sf-secondary-50--alfa-24: rgba(108,119,145,0.23922); + --sf-secondary-50--alfa-28: rgba(108,119,145,0.27843); + --sf-secondary-50--alfa-32: rgba(108,119,145,0.32157); + --sf-secondary-40: #535e77; + --sf-secondary-35: #47526a; + --sf-secondary-30: #3c475e; + --sf-secondary-25: #303b52; + --sf-secondary-20: #253047; + --sf-secondary-15: #1a263b; + --sf-secondary-10: #101b31; + --sf-secondary-5: #051126; + --sf-primary-95: #edf0ff; + --sf-primary-90: #d7e2ff; + --sf-primary-90--alfa-4: rgba(215,226,255,0.03922); + --sf-primary-90--alfa-8: rgba(215,226,255,0.07843); + --sf-primary-90--alfa-12: rgba(215,226,255,0.12157); + --sf-primary-90--alfa-24: rgba(215,226,255,0.23922); + --sf-primary-85: #c2d5ff; + --sf-primary-80: #acc7ff; + --sf-info-98: #f9f9ff; + --sf-info-95: #edf0ff; + --sf-info-90: #d7e2ff; + --sf-info-85: #c2d5ff; + --sf-info-80: #acc7ff; + --sf-info-70: #7eabff; + --sf-info-60: #488fff; + --sf-info-50: #0073ed; + --sf-info-50--alfa-12: rgba(0,115,237,0.12157); + --sf-info-50--alfa-16: rgba(0,115,237,0.16078); + --sf-info-50--alfa-20: rgba(0,115,237,0.2); + --sf-info-50--alfa-24: rgba(0,115,237,0.23922); + --sf-info-50--alfa-28: rgba(0,115,237,0.27843); + --sf-info-50--alfa-32: rgba(0,115,237,0.32157); + --sf-info-40: #005bbe; + --sf-info-35: #0050a7; + --sf-info-30: #004491; + --sf-info-25: #00397c; + --sf-info-20: #002f67; + --sf-info-15: #002453; + --sf-info-10: #001a40; + --sf-info-5: #00102c; + --sf-primary-70: #7eabff; + --sf-primary-60: #488fff; + --sf-primary-50: #0073ed; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-primary-50--alfa-4: rgba(0,115,237,0.03922); + --sf-primary-50--alfa-8: rgba(0,115,237,0.07843); + --sf-primary-50--alfa-12: rgba(0,115,237,0.12157); + --sf-primary-50--alfa-16: rgba(0,115,237,0.16078); + --sf-primary-50--alfa-20: rgba(0,115,237,0.2); + --sf-primary-50--alfa-24: rgba(0,115,237,0.23922); + --sf-primary-50--alfa-28: rgba(0,115,237,0.27843); + --sf-primary-50--alfa-32: rgba(0,115,237,0.32157); + --sf-primary-40: #005bbe; + --sf-primary-35: #0050a7; + --sf-primary-30: #004491; + --sf-primary-25: #00397c; + --sf-primary-20: #002f67; + --sf-primary-15: #002453; + --sf-primary-10: #001a40; + --sf-primary-5: #00102c; + --sf-error-98: #fff8f7; + --sf-error-95: #ffedea; + --sf-error-90: #ffdad6; + --sf-error-90--alfa-4: rgba(255,218,214,0.03922); + --sf-error-90--alfa-8: rgba(255,218,214,0.07843); + --sf-error-90--alfa-12: rgba(255,218,214,0.12157); + --sf-error-90--alfa-24: rgba(255,218,214,0.23922); + --sf-error-85: #ffc7c0; + --sf-error-80: #ffb4ab; + --sf-error-70: #ff897d; + --sf-error-60: #ff5449; + --sf-error-50: #df362f; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-error-50--alfa-4: rgba(223,54,47,0.03922); + --sf-error-50--alfa-8: rgba(223,54,47,0.07843); + --sf-error-50--alfa-12: rgba(223,54,47,0.12157); + --sf-error-50--alfa-16: rgba(223,54,47,0.16078); + --sf-error-50--alfa-20: rgba(223,54,47,0.2); + --sf-error-50--alfa-24: rgba(223,54,47,0.23922); + --sf-error-50--alfa-28: rgba(223,54,47,0.27843); + --sf-error-50--alfa-32: rgba(223,54,47,0.32157); + --sf-error-40: #bb1919; + --sf-error-35: #a9040e; + --sf-error-30: #93000a; + --sf-error-25: #7e0007; + --sf-error-20: #690005; + --sf-error-15: #540003; + --sf-error-10: #410002; + --sf-error-5: #2d0001; + --sf-warning-98: #fff8f5; + --sf-warning-95: #ffeee2; + --sf-warning-90: #ffdcc1; + --sf-warning-90--alfa-4: rgba(255,220,193,0.03922); + --sf-warning-90--alfa-8: rgba(255,220,193,0.07843); + --sf-warning-90--alfa-12: rgba(255,220,193,0.12157); + --sf-warning-90--alfa-24: rgba(255,220,193,0.23922); + --sf-warning-85: #ffca9f; + --sf-warning-80: #ffb779; + --sf-warning-70: #fa911c; + --sf-warning-60: #d87900; + --sf-warning-50: #b26300; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-warning-50--alfa-4: rgba(178,99,0,0.03922); + --sf-warning-50--alfa-8: rgba(178,99,0,0.07843); + --sf-warning-50--alfa-12: rgba(178,99,0,0.12157); + --sf-warning-50--alfa-16: rgba(178,99,0,0.16078); + --sf-warning-50--alfa-20: rgba(178,99,0,0.2); + --sf-warning-50--alfa-24: rgba(178,99,0,0.23922); + --sf-warning-50--alfa-28: rgba(178,99,0,0.27843); + --sf-warning-50--alfa-32: rgba(178,99,0,0.32157); + --sf-warning-40: #8f4e00; + --sf-warning-35: #7d4400; + --sf-warning-30: #6c3a00; + --sf-warning-25: #5c3000; + --sf-warning-20: #4c2700; + --sf-warning-15: #3d1e00; + --sf-warning-10: #2e1500; + --sf-warning-5: #1f0c00; + --sf-success-98: #ecffe4; + --sf-success-95: #c9ffbe; + --sf-success-90: #8ffa88; + --sf-success-90--alfa-4: rgba(143,250,136,0.03922); + --sf-success-90--alfa-8: rgba(143,250,136,0.07843); + --sf-success-90--alfa-12: rgba(143,250,136,0.12157); + --sf-success-90--alfa-24: rgba(143,250,136,0.23922); + --sf-success-85: #81ec7c; + --sf-success-80: #74dd6f; + --sf-success-70: #58c157; + --sf-success-60: #3ba53f; + --sf-success-50: #198a27; + /* Ступени 4 % и 8 %: на них стоят слои наведения и выбора этой палитры. */ + --sf-success-50--alfa-4: rgba(25,138,39,0.03922); + --sf-success-50--alfa-8: rgba(25,138,39,0.07843); + --sf-success-50--alfa-12: rgba(25,138,39,0.12157); + --sf-success-50--alfa-16: rgba(25,138,39,0.16078); + --sf-success-50--alfa-20: rgba(25,138,39,0.2); + --sf-success-50--alfa-24: rgba(25,138,39,0.23922); + --sf-success-50--alfa-28: rgba(25,138,39,0.27843); + --sf-success-50--alfa-32: rgba(25,138,39,0.32157); + --sf-success-40: #006e17; + --sf-success-35: #006013; + --sf-success-30: #00530f; + --sf-success-25: #00460b; + --sf-success-20: #003908; + --sf-success-15: #002d05; + --sf-success-10: #002203; + --sf-success-5: #001501; + } +} +body { + --sf-stripe--color: var(--sf-surface-inverse); +} + +/* width */ +@layer sf.base { + html { + scrollbar-gutter: auto; + } + * { + --sf-scroll-bg-track: var(--sf-transparent); + --sf-scroll-bg-thumb: var(--sf-surface-1); + --sf-scroll-bg-width: var(--sf-b4); + --sf-scroll-thumb-size: var(--sf-a6); + --sf-scroll-thumb-width: var(--sf-scroll-thumb-size); + --sf-scroll-thumb-inset: var(--sf-a4); + --sf-scroll-radius: var(--sf-d6); + scroll-behavior: smooth; + } + ::-webkit-scrollbar { + width: var(--sf-scroll-bg-width); + height: var(--sf-scroll-bg-width); + } + ::-webkit-scrollbar-thumb { + min-height: var(--sf-scroll-thumb-width); + min-height: var(--sf-scroll-thumb-size, var(--sf-scroll-thumb-width)); + min-width: var(--sf-scroll-thumb-width); + min-width: var(--sf-scroll-thumb-size, var(--sf-scroll-thumb-width)); + border: var(--sf-scroll-thumb-inset) solid var(--sf-transparent); + background-clip: padding-box; + border-radius: var(--sf-scroll-radius); + background-color: var(--sf-scroll-bg-thumb); + } + ::-webkit-scrollbar-corner { + background-color: var(--sf-transparent); + } + ::-webkit-scrollbar-track { + background-color: var(--sf-scroll-bg-track); + border: var(--sf-scroll-thumb-inset) solid var(--sf-transparent); + background-clip: padding-box; + border-radius: var(--sf-scroll-radius); + } +} +@layer sf.base { + @media (min-width: 60rem) { + :root { + --sf-container-1--size-max: var(--sf-h5); + --sf-container-2--size-max: var(--sf-h6); + --sf-container-3--size-max: var(--sf-h8); + --sf-container-4--size-max: var(--sf-i0); + --sf-container-5--size-max: var(--sf-i1); + --sf-container-6--size-max: var(--sf-i2); + --sf-container-7--size-max: var(--sf-i3); + --sf-container-8--size-max: var(--sf-i4); + } + } +} +@layer sf.base { + :root { + --sf-floating-the-others-1\/3-space-y: 0.625rem; + --sf-floating-the-others-1\/3-space-y: var(--sf-b0); + --sf-floating-the-others-1\/2-space-y: 1rem; + --sf-floating-the-others-1\/2-space-y: var(--sf-b6); + --sf-floating-the-others-1-space-y: var(--sf-b6); + --sf-floating-the-others-2-space-y: var(--sf-c1); + --sf-floating-the-others-3-space-y: var(--sf-c6); + } + @media (min-width: 60rem) { + :root { + --sf-floating-the-others-1\/3-space-y: 0.75rem; + --sf-floating-the-others-1\/3-space-y: var(--sf-b2); + --sf-floating-the-others-1\/2-space-y: 0.875rem; + --sf-floating-the-others-1\/2-space-y: var(--sf-b4); + --sf-floating-the-others-1-space-y: var(--sf-b6); + --sf-floating-the-others-2-space-y: var(--sf-c0); + --sf-floating-the-others-3-space-y: var(--sf-c1); + } + } +} +@layer sf.base { + :root { + --sf-floating-active-1\/3-space-y: 0.25rem; + --sf-floating-active-1\/3-space-y: var(--sf-a4); + --sf-floating-active-1\/2-space-y: 0.5rem; + --sf-floating-active-1\/2-space-y: var(--sf-a8); + --sf-floating-active-1-space-y: var(--sf-a8); + --sf-floating-active-2-space-y: var(--sf-b2); + --sf-floating-active-3-space-y: var(--sf-c1); + } + @media (min-width: 60rem) { + :root { + --sf-floating-active-1\/3-space-y: 0.375rem; + --sf-floating-active-1\/3-space-y: var(--sf-a6); + --sf-floating-active-1\/2-space-y: 0.375rem; + --sf-floating-active-1\/2-space-y: var(--sf-a6); + --sf-floating-active-1-space-y: var(--sf-a6); + --sf-floating-active-2-space-y: var(--sf-a8); + --sf-floating-active-3-space-y: var(--sf-b0); + } + } +} +@layer sf.base { + :root { + --sf-icon-size-1\/4: 0.625rem; + --sf-icon-size-1\/4: var(--sf-b0); + --sf-icon-size-1\/3: 0.75rem; + --sf-icon-size-1\/3: var(--sf-b2); + --sf-icon-size-1\/2: 0.875rem; + --sf-icon-size-1\/2: var(--sf-b4); + --sf-icon-size-1: var(--sf-b6); + --sf-icon-size-2: var(--sf-c0); + --sf-icon-size-3: var(--sf-c2); + --sf-icon-size-4: var(--sf-c4); + --sf-icon-size-5: var(--sf-c6); + --sf-icon-size-6: var(--sf-c8); + --sf-icon-size-7: var(--sf-d0); + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-text--size-1\/7: 0.25rem; + --sf-text--size-1\/7: var(--sf-a4); + --sf-text--size-1\/6: 0.375rem; + --sf-text--size-1\/6: var(--sf-a6); + --sf-text--size-1\/5: 0.5rem; + --sf-text--size-1\/5: var(--sf-a8); + --sf-text--size-1\/4: 0.625rem; + --sf-text--size-1\/4: var(--sf-b0); + --sf-text--size-1\/3: 0.75rem; + --sf-text--size-1\/3: var(--sf-b2); + --sf-text--size-1\/2: 0.75rem; + --sf-text--size-1\/2: var(--sf-b2); + --sf-text--size-1: var(--sf-b4); + --sf-text--size-2: var(--sf-b6); + --sf-text--size-3: var(--sf-b8); + --sf-text--size-4: var(--sf-c0); + --sf-text--size-5: var(--sf-c1); + --sf-text--size-6: var(--sf-c2); + --sf-text--size-7: var(--sf-c4); + --sf-text--size-8: var(--sf-c6); + --sf-text--size-9: var(--sf-c8); + --sf-text--size-10: var(--sf-d0); + --sf-text--size-11: var(--sf-d1); + --sf-text--size-12: var(--sf-d2); + --sf-text-size-1\/7: var(--sf-text--size-1\/7); + --sf-text-size-1\/6: var(--sf-text--size-1\/6); + --sf-text-size-1\/5: var(--sf-text--size-1\/5); + --sf-text-size-1\/4: var(--sf-text--size-1\/4); + --sf-text-size-1\/3: var(--sf-text--size-1\/3); + --sf-text-size-1\/2: var(--sf-text--size-1\/2); + --sf-text-size-1: var(--sf-text--size-1); + --sf-text-size-2: var(--sf-text--size-2); + --sf-text-size-3: var(--sf-text--size-3); + --sf-text-size-4: var(--sf-text--size-4); + --sf-text-size-5: var(--sf-text--size-5); + --sf-text-size-6: var(--sf-text--size-6); + --sf-text-size-7: var(--sf-text--size-7); + --sf-text-size-8: var(--sf-text--size-8); + --sf-text-size-9: var(--sf-text--size-9); + --sf-text-size-10: var(--sf-text--size-10); + --sf-text-size-11: var(--sf-text--size-11); + --sf-text-size-12: var(--sf-text--size-12); + } + @media (min-width: 60rem) { + :root { + --sf-text--size-1\/7: 0.25rem; + --sf-text--size-1\/7: var(--sf-a4); + --sf-text--size-1\/6: 0.375rem; + --sf-text--size-1\/6: var(--sf-a6); + --sf-text--size-1\/5: 0.5rem; + --sf-text--size-1\/5: var(--sf-a8); + --sf-text--size-1\/4: 0.625rem; + --sf-text--size-1\/4: var(--sf-b0); + --sf-text--size-1\/3: 0.75rem; + --sf-text--size-1\/3: var(--sf-b2); + --sf-text--size-1\/2: 0.875rem; + --sf-text--size-1\/2: var(--sf-b4); + --sf-text--size-1: var(--sf-b6); + --sf-text--size-2: var(--sf-c0); + --sf-text--size-3: var(--sf-c2); + --sf-text--size-4: var(--sf-c4); + --sf-text--size-5: var(--sf-c6); + --sf-text--size-6: var(--sf-c8); + --sf-text--size-7: var(--sf-d0); + --sf-text--size-8: var(--sf-d2); + --sf-text--size-9: var(--sf-d4); + --sf-text--size-10: var(--sf-d6); + --sf-text--size-11: var(--sf-d8); + --sf-text--size-12: var(--sf-e0); + --sf-text-size-1\/7: var(--sf-text--size-1\/7); + --sf-text-size-1\/6: var(--sf-text--size-1\/6); + --sf-text-size-1\/5: var(--sf-text--size-1\/5); + --sf-text-size-1\/4: var(--sf-text--size-1\/4); + --sf-text-size-1\/3: var(--sf-text--size-1\/3); + --sf-text-size-1\/2: var(--sf-text--size-1\/2); + --sf-text-size-1: var(--sf-text--size-1); + --sf-text-size-2: var(--sf-text--size-2); + --sf-text-size-3: var(--sf-text--size-3); + --sf-text-size-4: var(--sf-text--size-4); + --sf-text-size-5: var(--sf-text--size-5); + --sf-text-size-6: var(--sf-text--size-6); + --sf-text-size-7: var(--sf-text--size-7); + --sf-text-size-8: var(--sf-text--size-8); + --sf-text-size-9: var(--sf-text--size-9); + --sf-text-size-10: var(--sf-text--size-10); + --sf-text-size-11: var(--sf-text--size-11); + --sf-text-size-12: var(--sf-text--size-12); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-text--height-1\/4: 0.75rem; + --sf-text--height-1\/4: var(--sf-b2); + --sf-text--height-1\/3: 1rem; + --sf-text--height-1\/3: var(--sf-b6); + --sf-text--height-1\/2: 1rem; + --sf-text--height-1\/2: var(--sf-b6); + --sf-text--height-1: var(--sf-c0); + --sf-text--height-2: var(--sf-c2); + --sf-text--height-3: var(--sf-c2); + --sf-text--height-4: var(--sf-c4); + --sf-text--height-5: var(--sf-c6); + --sf-text--height-6: var(--sf-c8); + --sf-text--height-7: var(--sf-d0); + --sf-text--height-8: var(--sf-d2); + --sf-text--height-9: var(--sf-d3); + --sf-text--height-10: var(--sf-d5); + --sf-text--height-11: var(--sf-d6); + --sf-text--height-12: var(--sf-d8); + --sf-text-height-1\/4: var(--sf-text--height-1\/4); + --sf-text-height-1\/3: var(--sf-text--height-1\/3); + --sf-text-height-1\/2: var(--sf-text--height-1\/2); + --sf-text-height-1: var(--sf-text--height-1); + --sf-text-height-2: var(--sf-text--height-2); + --sf-text-height-3: var(--sf-text--height-3); + --sf-text-height-4: var(--sf-text--height-4); + --sf-text-height-5: var(--sf-text--height-5); + --sf-text-height-6: var(--sf-text--height-6); + --sf-text-height-7: var(--sf-text--height-7); + --sf-text-height-8: var(--sf-text--height-8); + --sf-text-height-9: var(--sf-text--height-9); + --sf-text-height-10: var(--sf-text--height-10); + --sf-text-height-11: var(--sf-text--height-11); + --sf-text-height-12: var(--sf-text--height-12); + } + @media (min-width: 60rem) { + :root { + --sf-text--height-1\/4: 0.75rem; + --sf-text--height-1\/4: var(--sf-b2); + --sf-text--height-1\/3: 1rem; + --sf-text--height-1\/3: var(--sf-b6); + --sf-text--height-1\/2: 1.25rem; + --sf-text--height-1\/2: var(--sf-c0); + --sf-text--height-1: var(--sf-c2); + --sf-text--height-2: var(--sf-c4); + --sf-text--height-3: var(--sf-c8); + --sf-text--height-4: var(--sf-d0); + --sf-text--height-5: var(--sf-d2); + --sf-text--height-6: var(--sf-d3); + --sf-text--height-7: var(--sf-d5); + --sf-text--height-8: var(--sf-d8); + --sf-text--height-9: var(--sf-e0); + --sf-text--height-10: var(--sf-e2); + --sf-text--height-11: var(--sf-e3); + --sf-text--height-12: var(--sf-e5); + --sf-text-height-1\/4: var(--sf-text--height-1\/4); + --sf-text-height-1\/3: var(--sf-text--height-1\/3); + --sf-text-height-1\/2: var(--sf-text--height-1\/2); + --sf-text-height-1: var(--sf-text--height-1); + --sf-text-height-2: var(--sf-text--height-2); + --sf-text-height-3: var(--sf-text--height-3); + --sf-text-height-4: var(--sf-text--height-4); + --sf-text-height-5: var(--sf-text--height-5); + --sf-text-height-6: var(--sf-text--height-6); + --sf-text-height-7: var(--sf-text--height-7); + --sf-text-height-8: var(--sf-text--height-8); + --sf-text-height-9: var(--sf-text--height-9); + --sf-text-height-10: var(--sf-text--height-10); + --sf-text-height-11: var(--sf-text--height-11); + --sf-text-height-12: var(--sf-text--height-12); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-title--height-1: var(--sf-b6); + --sf-title--height-2: var(--sf-b8); + --sf-title--height-3: var(--sf-c0); + --sf-title--height-4: var(--sf-c2); + --sf-title--height-5: var(--sf-c3); + --sf-title--height-6: var(--sf-c4); + --sf-title--height-7: var(--sf-c6); + --sf-title--height-8: var(--sf-c8); + --sf-title--height-9: var(--sf-d0); + --sf-title--height-10: var(--sf-d2); + --sf-title--height-11: var(--sf-d3); + --sf-title--height-12: var(--sf-d4); + --sf-title-height-1: var(--sf-title--height-1); + --sf-title-height-2: var(--sf-title--height-2); + --sf-title-height-3: var(--sf-title--height-3); + --sf-title-height-4: var(--sf-title--height-4); + --sf-title-height-5: var(--sf-title--height-5); + --sf-title-height-6: var(--sf-title--height-6); + --sf-title-height-7: var(--sf-title--height-7); + --sf-title-height-8: var(--sf-title--height-8); + --sf-title-height-9: var(--sf-title--height-9); + --sf-title-height-10: var(--sf-title--height-10); + --sf-title-height-11: var(--sf-title--height-11); + --sf-title-height-12: var(--sf-title--height-12); + } + @media (min-width: 60rem) { + :root { + --sf-title--height-1: var(--sf-b8); + --sf-title--height-2: var(--sf-c2); + --sf-title--height-3: var(--sf-c4); + --sf-title--height-4: var(--sf-c6); + --sf-title--height-5: var(--sf-c8); + --sf-title--height-6: var(--sf-d0); + --sf-title--height-7: var(--sf-d2); + --sf-title--height-8: var(--sf-d4); + --sf-title--height-9: var(--sf-d6); + --sf-title--height-10: var(--sf-d9); + --sf-title--height-11: var(--sf-e0); + --sf-title--height-12: var(--sf-e2); + --sf-title-height-1: var(--sf-title--height-1); + --sf-title-height-2: var(--sf-title--height-2); + --sf-title-height-3: var(--sf-title--height-3); + --sf-title-height-4: var(--sf-title--height-4); + --sf-title-height-5: var(--sf-title--height-5); + --sf-title-height-6: var(--sf-title--height-6); + --sf-title-height-7: var(--sf-title--height-7); + --sf-title-height-8: var(--sf-title--height-8); + --sf-title-height-9: var(--sf-title--height-9); + --sf-title-height-10: var(--sf-title--height-10); + --sf-title-height-11: var(--sf-title--height-11); + --sf-title-height-12: var(--sf-title--height-12); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-label-small--size: var(--sf-text--size-1\/4); + --sf-label-small--height: var(--sf-text--height-1\/4); + --sf-label-medium--size: var(--sf-text--size-1\/3); + --sf-label-medium--height: var(--sf-text--height-1\/3); + /* Подпись не растёт вместе с экраном: она привязана к контролу, а контрол + своего размера от ширины не меняет. Две младшие ступени это и делали, + а большая стояла на адаптивной --sf-text--size-1\/2 и росла как абзац, + из-за чего совпадала с text-small и выпадала из собственного семейства. + Фиксирована на прежнем широком значении, 14/20. */ + --sf-label-large--size: var(--sf-b4); + --sf-label-large--height: var(--sf-c0); + --sf-text-small--size: var(--sf-text--size-1\/2); + --sf-text-small--height: var(--sf-text--height-1\/2); + --sf-text-medium--size: var(--sf-text--size-1); + --sf-text-medium--height: var(--sf-text--height-1); + --sf-text-large--size: var(--sf-text--size-2); + --sf-text-large--height: var(--sf-text--height-2); + --sf-heading-1--size: var(--sf-text--size-6); + --sf-heading-1--height: var(--sf-title--height-6); + --sf-heading-2--size: var(--sf-text--size-5); + --sf-heading-2--height: var(--sf-title--height-5); + --sf-heading-3--size: var(--sf-text--size-4); + --sf-heading-3--height: var(--sf-title--height-4); + --sf-heading-4--size: var(--sf-text--size-3); + --sf-heading-4--height: var(--sf-title--height-3); + --sf-heading-5--size: var(--sf-text--size-2); + --sf-heading-5--height: var(--sf-title--height-2); + --sf-heading-6--size: var(--sf-text--size-1); + --sf-heading-6--height: var(--sf-title--height-1); + --sf-display-1--size: var(--sf-text--size-12); + --sf-display-1--height: var(--sf-title--height-12); + --sf-display-2--size: var(--sf-text--size-11); + --sf-display-2--height: var(--sf-title--height-11); + --sf-display-3--size: var(--sf-text--size-10); + --sf-display-3--height: var(--sf-title--height-10); + --sf-display-4--size: var(--sf-text--size-9); + --sf-display-4--height: var(--sf-title--height-9); + --sf-display-5--size: var(--sf-text--size-8); + --sf-display-5--height: var(--sf-title--height-8); + --sf-display-6--size: var(--sf-text--size-7); + --sf-display-6--height: var(--sf-title--height-7); + --sf-content--space-text: var(--sf-space-1); + --sf-content--space-related: var(--sf-space-2); + --sf-content--space-block: var(--sf-space-3); + --sf-content--space-section: var(--sf-space-4); + --sf-text--space-bottom: var(--sf-content--space-text); + --sf-heading--space-top: var(--sf-content--space-section); + --sf-heading--space-bottom: var(--sf-content--space-text); + --sf-heading--margin: var(--sf-heading--space-top); + } +} +@layer sf.base { + :root { + --sf-ui-1\/3--text-space-x: 0.3125rem; + --sf-ui-1\/3--text-space-x: var(--sf-a5); + --sf-ui-1\/2--text-space-x: 0.375rem; + --sf-ui-1\/2--text-space-x: var(--sf-a6); + --sf-ui-1--text-space-x: var(--sf-a6); + --sf-ui-2--text-space-x: var(--sf-a8); + --sf-ui-3--text-space-x: var(--sf-b0); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--text-space-x: 0.375rem; + --sf-ui-1\/3--text-space-x: var(--sf-a6); + --sf-ui-1\/2--text-space-x: 0.4375rem; + --sf-ui-1\/2--text-space-x: var(--sf-a7); + --sf-ui-1--text-space-x: var(--sf-a8); + --sf-ui-2--text-space-x: var(--sf-b0); + --sf-ui-3--text-space-x: var(--sf-b2); + } + } +} +@layer sf.base { + :root { + --sf-ui-1\/3--space-x: 0.625rem; + --sf-ui-1\/3--space-x: var(--sf-b0); + --sf-ui-1\/2--space-x: 0.75rem; + --sf-ui-1\/2--space-x: var(--sf-b2); + --sf-ui-1--space-x: var(--sf-b4); + --sf-ui-2--space-x: var(--sf-b8); + --sf-ui-3--space-x: var(--sf-c1); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--space-x: 0.75rem; + --sf-ui-1\/3--space-x: var(--sf-b2); + --sf-ui-1\/2--space-x: 0.875rem; + --sf-ui-1\/2--space-x: var(--sf-b4); + --sf-ui-1--space-x: var(--sf-b6); + --sf-ui-2--space-x: var(--sf-c0); + --sf-ui-3--space-x: var(--sf-c2); + } + } +} +@layer sf.base { + :root { + --sf-ui-radius-default: var(--sf-radius--ui); + } + @media (min-width: 60rem) { + :root { + --sf-ui-radius-default: var(--sf-radius--ui); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-ui-1\/3--space-y-tightness-default: 0.25rem; + --sf-ui-1\/3--space-y-tightness-default: var(--sf-a4); + --sf-ui-1\/2--space-y-tightness-default: 0.375rem; + --sf-ui-1\/2--space-y-tightness-default: var(--sf-a6); + --sf-ui-1--space-y-tightness-default: var(--sf-a8); + --sf-ui-2--space-y-tightness-default: var(--sf-b0); + --sf-ui-3--space-y-tightness-default: var(--sf-b4); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--space-y-tightness-default: 0.25rem; + --sf-ui-1\/3--space-y-tightness-default: var(--sf-a4); + --sf-ui-1\/2--space-y-tightness-default: 0.375rem; + --sf-ui-1\/2--space-y-tightness-default: var(--sf-a6); + --sf-ui-1--space-y-tightness-default: var(--sf-a8); + --sf-ui-2--space-y-tightness-default: var(--sf-b0); + --sf-ui-3--space-y-tightness-default: var(--sf-b0); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-ui-1\/3--space-y-tightness-low: 0.125rem; + --sf-ui-1\/3--space-y-tightness-low: var(--sf-a2); + --sf-ui-1\/2--space-y-tightness-low: 0.25rem; + --sf-ui-1\/2--space-y-tightness-low: var(--sf-a4); + --sf-ui-1--space-y-tightness-low: var(--sf-a4); + --sf-ui-2--space-y-tightness-low: var(--sf-a6); + --sf-ui-3--space-y-tightness-low: var(--sf-b0); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--space-y-tightness-low: 0.25rem; + --sf-ui-1\/3--space-y-tightness-low: var(--sf-a4); + --sf-ui-1\/2--space-y-tightness-low: 0.25rem; + --sf-ui-1\/2--space-y-tightness-low: var(--sf-a4); + --sf-ui-1--space-y-tightness-low: var(--sf-a4); + --sf-ui-2--space-y-tightness-low: var(--sf-a6); + --sf-ui-3--space-y-tightness-low: var(--sf-a6); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-ui-1\/3--space-y-tightness-high: 0.375rem; + --sf-ui-1\/3--space-y-tightness-high: var(--sf-a6); + --sf-ui-1\/2--space-y-tightness-high: 0.625rem; + --sf-ui-1\/2--space-y-tightness-high: var(--sf-b0); + --sf-ui-1--space-y-tightness-high: var(--sf-b2); + --sf-ui-2--space-y-tightness-high: var(--sf-b4); + --sf-ui-3--space-y-tightness-high: var(--sf-c0); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--space-y-tightness-high: 0.5rem; + --sf-ui-1\/3--space-y-tightness-high: var(--sf-a8); + --sf-ui-1\/2--space-y-tightness-high: 0.625rem; + --sf-ui-1\/2--space-y-tightness-high: var(--sf-b0); + --sf-ui-1--space-y-tightness-high: var(--sf-b2); + --sf-ui-2--space-y-tightness-high: var(--sf-b4); + --sf-ui-3--space-y-tightness-high: var(--sf-b6); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-ui-1\/3--space-y-tightness-highest: 0.625rem; + --sf-ui-1\/3--space-y-tightness-highest: var(--sf-b0); + --sf-ui-1\/2--space-y-tightness-highest: 0.875rem; + --sf-ui-1\/2--space-y-tightness-highest: var(--sf-b4); + --sf-ui-1--space-y-tightness-highest: var(--sf-b6); + --sf-ui-2--space-y-tightness-highest: var(--sf-c0); + --sf-ui-3--space-y-tightness-highest: var(--sf-c3); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--space-y-tightness-highest: 0.75rem; + --sf-ui-1\/3--space-y-tightness-highest: var(--sf-b2); + --sf-ui-1\/2--space-y-tightness-highest: 0.875rem; + --sf-ui-1\/2--space-y-tightness-highest: var(--sf-b4); + --sf-ui-1--space-y-tightness-highest: var(--sf-b6); + --sf-ui-2--space-y-tightness-highest: var(--sf-c0); + --sf-ui-3--space-y-tightness-highest: var(--sf-c1); + } + } +} +/* + * Generated from src/core/contracts/adaptive-sizing.v1.json. + * contract-sha256: b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45 + * Do not edit semantic values in this file directly. + */ +@layer sf.base { + :root { + --sf-ui-1\/3--control-height: calc(var(--sf-text--height-1\/3) + 2 * var(--sf-ui-1\/3--space-y-tightness-default)); + --sf-ui-1\/2--control-height: calc(var(--sf-text--height-1\/2) + 2 * var(--sf-ui-1\/2--space-y-tightness-default)); + --sf-ui-1--control-height: calc(var(--sf-text--height-1) + 2 * var(--sf-ui-1--space-y-tightness-default)); + --sf-ui-2--control-height: calc(var(--sf-text--height-2) + 2 * var(--sf-ui-2--space-y-tightness-default)); + --sf-ui-3--control-height: calc(var(--sf-text--height-3) + 2 * var(--sf-ui-3--space-y-tightness-default)); + } +} +@layer sf.base { + :root { + --sf-ui-1\/3--space-y: 0.25rem; + --sf-ui-1\/3--space-y: var(--sf-a4); + --sf-ui-1\/2--space-y: 0.25rem; + --sf-ui-1\/2--space-y: var(--sf-a4); + --sf-ui-1--space-y: var(--sf-a4); + --sf-ui-2--space-y: var(--sf-a6); + --sf-ui-3--space-y: var(--sf-a6); + --sf-ui-1\/3--space-y: 0.25rem; + --sf-ui-1\/3--space-y: var(--sf-a4); + --sf-ui-1\/2--space-y: 0.25rem; + --sf-ui-1\/2--space-y: var(--sf-a4); + --sf-ui-1--space-y: var(--sf-a4); + --sf-ui-2--space-y: var(--sf-a6); + --sf-ui-3--space-y: var(--sf-a6); + } + @media (min-width: 60rem) { + :root { + --sf-ui-1\/3--space-y: 0.375rem; + --sf-ui-1\/3--space-y: var(--sf-a6); + --sf-ui-1\/2--space-y: 0.375rem; + --sf-ui-1\/2--space-y: var(--sf-a6); + --sf-ui-1--space-y: var(--sf-a8); + --sf-ui-2--space-y: var(--sf-b0); + --sf-ui-3--space-y: var(--sf-b0); + --sf-ui-1\/3--space-y: 0.375rem; + --sf-ui-1\/3--space-y: var(--sf-a6); + --sf-ui-1\/2--space-y: 0.375rem; + --sf-ui-1\/2--space-y: var(--sf-a6); + --sf-ui-1--space-y: var(--sf-a8); + --sf-ui-2--space-y: var(--sf-b0); + --sf-ui-3--space-y: var(--sf-b0); + } + } +} +@layer sf.base { + :root { + --sf-weight--thin: 100; + --sf-weight--extra-light: 200; + --sf-weight--light: 300; + --sf-weight--regular: 400; + --sf-weight--medium: 500; + --sf-weight--semi-bold: 600; + --sf-weight--bold: 700; + --sf-weight--extra-bold: 800; + --sf-weight--black: 900; + --sf-heading--family: "Inter Variable", "Inter Fallback", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, "Segoe UI", sans-serif; + --sf-display--family: "Inter Variable", "Inter Fallback", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, "Segoe UI", sans-serif; + --sf-text--family: "Inter Variable", "Inter Fallback", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, "Segoe UI", sans-serif; + --sf-text--margin: var(--sf-space-1); + --sf-text--weight: var(--sf-font-weight-regular); + --sf-heading--weight: var(--sf-weight--bold); + --sf-display--weight: var(--sf-weight--light); + } + .sf-h-1, h1 { + font-size: var(--sf-heading-1--size); + font-family: var(--sf-heading--family); + line-height: var(--sf-heading-1--height); + font-weight: var(--sf-heading--weight); + margin-top: 0; + -webkit-margin-before: 0; + margin-block-start: 0; + margin-bottom: var(--sf-heading--space-bottom); + -webkit-margin-after: var(--sf-heading--space-bottom); + margin-block-end: var(--sf-heading--space-bottom); + } + .sf-h-2, h2 { + font-size: var(--sf-heading-2--size); + font-family: var(--sf-heading--family); + line-height: var(--sf-heading-2--height); + font-weight: var(--sf-heading--weight); + margin-top: var(--sf-heading--space-top); + -webkit-margin-before: var(--sf-heading--space-top); + margin-block-start: var(--sf-heading--space-top); + margin-bottom: var(--sf-heading--space-bottom); + -webkit-margin-after: var(--sf-heading--space-bottom); + margin-block-end: var(--sf-heading--space-bottom); + } + .sf-h-3, h3 { + font-size: var(--sf-heading-3--size); + font-family: var(--sf-heading--family); + line-height: var(--sf-heading-3--height); + font-weight: var(--sf-heading--weight); + margin-top: var(--sf-heading--space-top); + -webkit-margin-before: var(--sf-heading--space-top); + margin-block-start: var(--sf-heading--space-top); + margin-bottom: var(--sf-heading--space-bottom); + -webkit-margin-after: var(--sf-heading--space-bottom); + margin-block-end: var(--sf-heading--space-bottom); + } + .sf-h-4, h4 { + font-size: var(--sf-heading-4--size); + font-family: var(--sf-heading--family); + line-height: var(--sf-heading-4--height); + font-weight: var(--sf-heading--weight); + margin-top: var(--sf-heading--space-top); + -webkit-margin-before: var(--sf-heading--space-top); + margin-block-start: var(--sf-heading--space-top); + margin-bottom: var(--sf-heading--space-bottom); + -webkit-margin-after: var(--sf-heading--space-bottom); + margin-block-end: var(--sf-heading--space-bottom); + } + .sf-h-5, h5 { + font-size: var(--sf-heading-5--size); + font-family: var(--sf-heading--family); + line-height: var(--sf-heading-5--height); + font-weight: var(--sf-heading--weight); + margin-top: var(--sf-heading--space-top); + -webkit-margin-before: var(--sf-heading--space-top); + margin-block-start: var(--sf-heading--space-top); + margin-bottom: var(--sf-heading--space-bottom); + -webkit-margin-after: var(--sf-heading--space-bottom); + margin-block-end: var(--sf-heading--space-bottom); + } + .sf-h-6, h6 { + font-size: var(--sf-heading-6--size); + font-family: var(--sf-heading--family); + line-height: var(--sf-heading-6--height); + font-weight: var(--sf-heading--weight); + margin-top: var(--sf-heading--space-top); + -webkit-margin-before: var(--sf-heading--space-top); + margin-block-start: var(--sf-heading--space-top); + margin-bottom: var(--sf-heading--space-bottom); + -webkit-margin-after: var(--sf-heading--space-bottom); + margin-block-end: var(--sf-heading--space-bottom); + } + .sf-display-1, .display1, .d1 { + font-size: var(--sf-display-1--size); + font-family: var(--sf-display--family); + line-height: var(--sf-display-1--height); + font-weight: var(--sf-display--weight); + margin-top: 0; + margin-bottom: var(--sf-heading--space-bottom); + margin-block: 0 var(--sf-heading--space-bottom); + } + .sf-display-2, .display2, .d2 { + font-size: var(--sf-display-2--size); + font-family: var(--sf-display--family); + line-height: var(--sf-display-2--height); + font-weight: var(--sf-display--weight); + margin-top: 0; + margin-bottom: var(--sf-heading--space-bottom); + margin-block: 0 var(--sf-heading--space-bottom); + } + .sf-display-3, .display3, .d3 { + font-size: var(--sf-display-3--size); + font-family: var(--sf-display--family); + line-height: var(--sf-display-3--height); + font-weight: var(--sf-display--weight); + margin-top: 0; + margin-bottom: var(--sf-heading--space-bottom); + margin-block: 0 var(--sf-heading--space-bottom); + } + .sf-display-4, .display4, .d4 { + font-size: var(--sf-display-4--size); + font-family: var(--sf-display--family); + line-height: var(--sf-display-4--height); + font-weight: var(--sf-display--weight); + margin-top: 0; + margin-bottom: var(--sf-heading--space-bottom); + margin-block: 0 var(--sf-heading--space-bottom); + } + .sf-display-5, .display5, .d5 { + font-size: var(--sf-display-5--size); + font-family: var(--sf-display--family); + line-height: var(--sf-display-5--height); + font-weight: var(--sf-display--weight); + margin-top: 0; + margin-bottom: var(--sf-heading--space-bottom); + margin-block: 0 var(--sf-heading--space-bottom); + } + .sf-display-6, .display6, .d6 { + font-size: var(--sf-display-6--size); + font-family: var(--sf-display--family); + line-height: var(--sf-display-6--height); + font-weight: var(--sf-display--weight); + margin-top: 0; + margin-bottom: var(--sf-heading--space-bottom); + margin-block: 0 var(--sf-heading--space-bottom); + } + .sf-body-large { + font-size: var(--sf-text-large--size); + font-family: var(--sf-text--family); + line-height: var(--sf-text-large--height); + font-weight: var(--sf-font-weight-regular); + margin-top: 0; + margin-bottom: var(--sf-text--space-bottom); + margin-block: 0 var(--sf-text--space-bottom); + } + .sf-body-medium { + font-size: var(--sf-text-medium--size); + font-family: var(--sf-text--family); + line-height: var(--sf-text-medium--height); + font-weight: var(--sf-font-weight-regular); + margin-top: 0; + margin-bottom: var(--sf-text--space-bottom); + margin-block: 0 var(--sf-text--space-bottom); + } + .sf-body-small { + font-size: var(--sf-text-small--size); + font-family: var(--sf-text--family); + line-height: var(--sf-text-small--height); + font-weight: var(--sf-font-weight-regular); + margin-top: 0; + margin-bottom: var(--sf-text--space-bottom); + margin-block: 0 var(--sf-text--space-bottom); + } + .sf-label-large { + font-size: var(--sf-label-large--size); + font-family: var(--sf-text--family); + line-height: var(--sf-label-large--height); + font-weight: var(--sf-font-weight-regular); + } + .sf-label-medium { + font-size: var(--sf-label-medium--size); + font-family: var(--sf-text--family); + line-height: var(--sf-label-medium--height); + font-weight: var(--sf-font-weight-regular); + } + .sf-label-small { + font-size: var(--sf-label-small--size); + font-family: var(--sf-text--family); + line-height: var(--sf-label-small--height); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-1\/4 { + font-size: var(--sf-text-size-1\/4); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-1\/4); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-1\/4 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-1\/3 { + font-size: var(--sf-text-size-1\/3); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-1\/3); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-1\/3 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-1\/2 { + font-size: var(--sf-text-size-1\/2); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-1\/2); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-1\/2 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-1 { + font-size: var(--sf-text-size-1); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-1); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-1 + * { + margin-top: var(--sf-space-1); + } + .sf-text-2 { + font-size: var(--sf-text-size-2); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-2); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-2 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-3 { + font-size: var(--sf-text-size-3); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-3); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-3 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-4 { + font-size: var(--sf-text-size-4); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-4); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-4 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-5 { + font-size: var(--sf-text-size-5); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-5); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-5 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-6 { + font-size: var(--sf-text-size-6); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-6); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-6 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-7 { + font-size: var(--sf-text-size-7); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-7); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-7 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-8 { + font-size: var(--sf-text-size-8); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-8); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-8 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-9 { + font-size: var(--sf-text-size-9); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-9); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-9 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-10 { + font-size: var(--sf-text-size-10); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-10); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-10 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-11 { + font-size: var(--sf-text-size-11); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-11); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-11 + * { + margin-top: var(--sf-text--margin); + } + .sf-text-12 { + font-size: var(--sf-text-size-12); + font-family: var(--sf-text--family); + line-height: var(--sf-text-height-12); + font-weight: var(--sf-font-weight-regular); + } + .sf-text-12 + * { + margin-top: var(--sf-text--margin); + } +} +@layer sf.base { + body .sf-icon:not(.sf-icon-loaded) { + font-size: 0 !important; + } + button { + padding: 0; + background: none; + } + div[role=button]:not(.disabled):not([disabled]):not([aria-disabled=true]) { + cursor: pointer; + } + input, textarea { + padding: 0; + width: 100%; + height: 100%; + min-height: auto; + border-radius: 0; + background: transparent; + } + :root { + --sf-font-weight-regular: 400; + --sf-font-weight-medium: 500; + --sf-font-weight-bold: 700; + --sf-font-weight-light: 300; + --sf-space-auto: auto; + --sf-sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", + Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --sf-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; + --sf-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", + "Courier New", monospace; + --sf-heading--font-family: inherit; + --sf-heading--font-weight: 600; + --sf-heading--font-style: normal; + --sf-text--family: "Inter Variable", "Inter Fallback", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, "Segoe UI", sans-serif; + --sf-heading--family: "Inter Variable", "Inter Fallback", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, "Segoe UI", sans-serif; + --sf-display--family: "Inter Variable", "Inter Fallback", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, "Segoe UI", sans-serif; + --sf-text--size: var(--sf-text--size-1); + --sf-text--height: var(--sf-text--height-1); + --sf-text--weight: 400; + --sf-heading--weight: 700; + --sf-display--weight: 300; + --sf-text--style: inherit; + --sf-text--tracking: inherit; + --sf-mark--color: var(--sf-warning-transparent-overlay); + --sf-code--color: var(--sf-tertiary); + --sf-code--background: var(--sf-tertiary-container); + --sf-code--font-family: var(--sf-mono); + --sf-code--radius: var(--sf-radius-1\/3); + --sf-text--line-height-tight: 1.25; + --sf-text--line-height-snug: 1.375; + --sf-text--line-height-relaxed: 1.625; + --sf-text--line-height-loose: 2; + --sf-text--line-height-none: 1; + --sf-text--line-height-normal: 1.5; + --sf-text--font-weight-1: 100; + --sf-text--font-weight-2: 200; + --sf-text--font-weight-3: 300; + --sf-text--font-weight-4: 400; + --sf-text--font-weight-5: 500; + --sf-text--font-weight-6: 600; + --sf-text--font-weight-7: 700; + --sf-text--font-weight-8: 800; + --sf-text--font-weight-9: 900; + --sf-text--tracking-tighter: -0.05em; + --sf-text--tracking-tight: -0.025em; + --sf-text--tracking-wide: 0.025em; + --sf-text--tracking-wider: 0.05em; + --sf-text--tracking-widest: 0.1em; + --sf-text--tracking-no-tracking: 0em; + --sf-text--measure: 65ch; + --sf-text--measure-wide: 80ch; + --sf-text--measure-narrow: 45ch; + } + body { + font-style: var(--sf-text--style); + font-size: var(--sf-text--size); + line-height: var(--sf-text--height); + font-weight: var(--sf-text--weight); + font-family: var(--sf-text--family); + letter-spacing: var(--sf-text--tracking); + -webkit-text-decoration-color: var(--sf-outline); + text-decoration-color: var(--sf-outline); + } + @media (min-width: 60rem) { + [data-sf-density=compact] { + --sf-text--size: var(--sf-text--size-1\/2); + --sf-text--height: var(--sf-text--height-1\/2); + } + [data-sf-density=compact]:not(:root) { + font-size: var(--sf-text--size); + line-height: var(--sf-text--height); + } + } + p, + table, + ol, + ul, + q, + blockquote { + word-break: break-word; + margin-bottom: var(--sf-text--space-bottom); + } + .label-small { + font-size: var(--sf-label-small--size); + line-height: var(--sf-label-small--height); + } + .label, + .label-medium { + font-size: var(--sf-label-medium--size); + line-height: var(--sf-label-medium--height); + } + .label-large { + font-size: var(--sf-label-large--size); + line-height: var(--sf-label-large--height); + } + .body-text-small, + .text-small { + font-size: var(--sf-text-small--size); + line-height: var(--sf-text-small--height); + } + .body-text, + .body-text-medium, + .text, + .text-medium { + font-size: var(--sf-text-medium--size); + line-height: var(--sf-text-medium--height); + } + .body-text-large, + .text-large { + font-size: var(--sf-text-large--size); + line-height: var(--sf-text-large--height); + } + _:-ms-input-placeholder, html:not([dir="rtl"]) ul{ + margin-left: 0px; + } + @supports not (margin-inline-start: initial){ + html:not([dir="rtl"]) ul{ + margin-left: 0px; + } + } + ul:where(:dir(ltr)){ + margin-left: 0px; + } + _:-ms-input-placeholder, [dir="rtl"] ul{ + margin-right: 0px; + } + @supports not (margin-inline-start: initial){ + [dir="rtl"] ul{ + margin-right: 0px; + } + } + ul:where(:dir(rtl)){ + margin-right: 0px; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) ul{ + margin-right: 0px; + } + @supports not (margin-inline-end: initial){ + html:not([dir="rtl"]) ul{ + margin-right: 0px; + } + } + ul:where(:dir(ltr)){ + margin-right: 0px; + } + _:-ms-input-placeholder, [dir="rtl"] ul{ + margin-left: 0px; + } + @supports not (margin-inline-end: initial){ + [dir="rtl"] ul{ + margin-left: 0px; + } + } + ul:where(:dir(rtl)){ + margin-left: 0px; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) ul{ + padding-left: var(--sf-text--size-2); + } + @supports not (padding-inline-start: initial){ + html:not([dir="rtl"]) ul{ + padding-left: var(--sf-text--size-2); + } + } + ul:where(:dir(ltr)){ + padding-left: var(--sf-text--size-2); + } + _:-ms-input-placeholder, [dir="rtl"] ul{ + padding-right: var(--sf-text--size-2); + } + @supports not (padding-inline-start: initial){ + [dir="rtl"] ul{ + padding-right: var(--sf-text--size-2); + } + } + ul:where(:dir(rtl)){ + padding-right: var(--sf-text--size-2); + } + ul { + display: block; + list-style-type: disc; + list-style-position: outside; + margin-top: var(--sf-text--size-2); + -webkit-margin-before: var(--sf-text--size-2); + margin-block-start: var(--sf-text--size-2); + -webkit-margin-start: 0px; + margin-inline-start: 0px; + -webkit-margin-end: 0px; + margin-inline-end: 0px; + -webkit-padding-start: var(--sf-text--size-2); + padding-inline-start: var(--sf-text--size-2); + } + code { + font-weight: var(--sf-weight--regular); + color: var(--sf-on-surface); + } +} +@layer sf.base { + :root { + --sf-link--underline-weight: var(--sf-px); + --sf-link--underline-dotted: var(--sf-a3); + --sf-link--underline-dashed: var(--sf-a6); + } + button:not(:disabled):not([class*=cursor-]) { + cursor: pointer; + } + a { + text-decoration: none; + } + a[href] { + cursor: pointer; + } + a:hover:not(.sf-button) { + color: var(--sf-link-hover); + -webkit-text-decoration-color: var(--sf-link-hover); + text-decoration-color: var(--sf-link-hover); + } + a:active:not(.sf-button) { + color: var(--sf-link-active); + -webkit-text-decoration-color: var(--sf-link-active); + text-decoration-color: var(--sf-link-active); + } + a:visited:not(.sf-button) { + color: var(--sf-link-visited); + -webkit-text-decoration-color: var(--sf-link-visited); + text-decoration-color: var(--sf-link-visited); + } + a:not([class]), + a[class*=link-], + [class*=link-] ~ a { + color: var(--sf-link); + -webkit-text-decoration-color: var(--sf-link); + text-decoration-color: var(--sf-link); + text-underline-offset: 0.1875rem; + text-underline-offset: var(--sf-a3); + } + a:not([class]):hover, + a[class*=link-]:hover, + [class*=link-] ~ a:hover { + -webkit-text-decoration-color: var(--sf-link-hover); + text-decoration-color: var(--sf-link-hover); + color: var(--sf-link-hover); + } + a:not([class]):active, + a[class*=link-]:active, + [class*=link-] ~ a:active { + -webkit-text-decoration-color: var(--sf-link-active); + text-decoration-color: var(--sf-link-active); + color: var(--sf-link-active); + } + a:not([class]):visited, + a[class*=link-]:visited, + [class*=link-] ~ a:visited { + -webkit-text-decoration-color: var(--sf-link-visited); + text-decoration-color: var(--sf-link-visited); + color: var(--sf-link-visited); + } + .disabled a, + .disabled a[href], + .disabled a:not([class]), + .disabled a[class*=link-], + .disabled [class*=link-] ~ a { + color: inherit; + cursor: default; + -webkit-text-decoration-color: currentColor; + text-decoration-color: currentColor; + } + a.link-inherit, + .link-inherit a, + a.link-inherit-link, + .link-inherit-link a { + -webkit-text-decoration-color: currentColor; + text-decoration-color: currentColor; + color: var(--sf-current); + } + a.link-inherit-link:hover, + .link-inherit-link a:hover { + -webkit-text-decoration-color: currentColor; + text-decoration-color: currentColor; + color: var(--sf-current); + } + a.link-underline-none, + .link-underline-none a, + a.link-underline-none:hover, + .link-underline-none a:hover { + -webkit-text-decoration-line: none; + text-decoration-line: none; + } + a.link-dotted, + .link-dotted a { + -webkit-text-decoration-style: dotted; + text-decoration-style: dotted; + } + a.link-dashed, + .link-dashed a { + -webkit-text-decoration-style: dashed; + text-decoration-style: dashed; + } +} +@layer sf.base { + @media (min-width: 32rem) { + :root { + --sf-breakpoint-sm: var(--sf-g6); + } + } + @media (min-width: 44rem) { + :root { + --sf-breakpoint-md: var(--sf-h1); + } + } + @media (min-width: 60rem) { + :root { + --sf-breakpoint-lg: var(--sf-h5); + } + } + @media (min-width: 72rem) { + :root { + --sf-breakpoint-xl: var(--sf-h8); + } + } + @media (min-width: 80rem) { + :root { + --sf-breakpoint-xxl: var(--sf-i0); + } + } +} +@layer sf.base { + :root { + --sf-transition--property: all; + --sf-transition--duration: 300ms; + --sf-transition--timing-function: ease-in; + --sf-transition--delay: 0ms; + --sf-duration-fast: 0.1S; + --sf-duration-normal: 0.3S; + --sf-duration-slow: 0.5S; + --sf-animation: cubic-bezier(.25, .8, .25, 1); + --sf-ease-enter: cubic-bezier(.19, 1, .22, 1); + --sf-ease-exit: cubic-bezier(.65, 0, .4, 1); + --sf-ease-move: cubic-bezier(.65, 0, .35, 1); + } +} +@layer sf.base { + _:-ms-input-placeholder, html:not([dir="rtl"]) .sf-loader.loader-default{ + left: 0; + } + @supports not (inset-inline-start: initial){ + html:not([dir="rtl"]) .sf-loader.loader-default{ + left: 0; + } + } + .sf-loader.loader-default:where(:dir(ltr)){ + left: 0; + } + _:-ms-input-placeholder, [dir="rtl"] .sf-loader.loader-default{ + right: 0; + } + @supports not (inset-inline-start: initial){ + [dir="rtl"] .sf-loader.loader-default{ + right: 0; + } + } + .sf-loader.loader-default:where(:dir(rtl)){ + right: 0; + } + .sf-loader.loader-default { + top: 0; + inset-inline-start: 0; + position: fixed; + width: 100%; + height: 100vh; + opacity: 1; + z-index: 1000; + background-color: var(--sf-surface-0); + text-align: center; + } + .sf-loader.hidden { + display: none; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .sf-loader-inner{ + left: 50vw; + } + @supports not (inset-inline-start: initial){ + html:not([dir="rtl"]) .sf-loader-inner{ + left: 50vw; + } + } + .sf-loader-inner:where(:dir(ltr)){ + left: 50vw; + } + _:-ms-input-placeholder, [dir="rtl"] .sf-loader-inner{ + right: 50vw; + } + @supports not (inset-inline-start: initial){ + [dir="rtl"] .sf-loader-inner{ + right: 50vw; + } + } + .sf-loader-inner:where(:dir(rtl)){ + right: 50vw; + } + .sf-loader-inner { + position: absolute; + inset-inline-start: 50vw; + top: 50vh; + } + .circle1 { + -webkit-animation: bounce linear 2.2s infinite forwards; + animation: bounce linear 2.2s infinite forwards; + -webkit-animation-delay: 0; + animation-delay: 0; + } + .circle2 { + -webkit-animation: bounce linear 2.2s infinite forwards; + animation: bounce linear 2.2s infinite forwards; + -webkit-animation-delay: 125ms; + animation-delay: 125ms; + } + .circle3 { + -webkit-animation: bounce linear 2.2s infinite forwards; + animation: bounce linear 2.2s infinite forwards; + -webkit-animation-delay: 250ms; + animation-delay: 250ms; + } + .circle4 { + -webkit-animation: bounce linear 2.2s infinite forwards; + animation: bounce linear 2.2s infinite forwards; + -webkit-animation-delay: 0.375s; + animation-delay: 0.375s; + } + @-webkit-keyframes bounce { + 0%, 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + 20%, 50% { + -webkit-transform: translateY(0.5625rem); + transform: translateY(0.5625rem); + -webkit-transform: translateY(var(--sf-a9)); + transform: translateY(var(--sf-a9)); + } + 80% { + -webkit-transform: translateY(0.125rem); + transform: translateY(0.125rem); + -webkit-transform: translateY(var(--sf-a2)); + transform: translateY(var(--sf-a2)); + } + 40% { + -webkit-transform: translateY(calc(-1 * 0.9375rem)); + transform: translateY(calc(-1 * 0.9375rem)); + -webkit-transform: translateY(calc(-1 * var(--sf-b5))); + transform: translateY(calc(-1 * var(--sf-b5))); + } + 60% { + -webkit-transform: translateY(calc(-1 * 0.4375rem)); + transform: translateY(calc(-1 * 0.4375rem)); + -webkit-transform: translateY(calc(-1 * var(--sf-a7))); + transform: translateY(calc(-1 * var(--sf-a7))); + } + } + @keyframes bounce { + 0%, 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + 20%, 50% { + -webkit-transform: translateY(0.5625rem); + transform: translateY(0.5625rem); + -webkit-transform: translateY(var(--sf-a9)); + transform: translateY(var(--sf-a9)); + } + 80% { + -webkit-transform: translateY(0.125rem); + transform: translateY(0.125rem); + -webkit-transform: translateY(var(--sf-a2)); + transform: translateY(var(--sf-a2)); + } + 40% { + -webkit-transform: translateY(calc(-1 * 0.9375rem)); + transform: translateY(calc(-1 * 0.9375rem)); + -webkit-transform: translateY(calc(-1 * var(--sf-b5))); + transform: translateY(calc(-1 * var(--sf-b5))); + } + 60% { + -webkit-transform: translateY(calc(-1 * 0.4375rem)); + transform: translateY(calc(-1 * 0.4375rem)); + -webkit-transform: translateY(calc(-1 * var(--sf-a7))); + transform: translateY(calc(-1 * var(--sf-a7))); + } + } +} +@layer sf.base { + :root { + --sf-shadow--level-ratio: 1; + --sf-shadow--alfa-fill: 24%; + --sf-shadow--alfa-outline: 12%; + --sf-shadow--alfa-shade: 8%; + --sf-shadow--color-fill: color-mix(in srgb, var(--sf-transparent), var(--sf-shadow--color, var(--sf-black, #000)) var(--sf-shadow--alfa-fill)); + --sf-shadow--color-outline: color-mix(in srgb, var(--sf-transparent), var(--sf-shadow--color, var(--sf-black, #000)) var(--sf-shadow--alfa-outline)); + --sf-shadow--color-shading: color-mix(in srgb, var(--sf-transparent), var(--sf-shadow--color, var(--sf-black, #000)) var(--sf-shadow--alfa-shade)); + --sf-shadow--color-shade: var(--sf-shadow--color-shading); + } + [class*=shadow] { + box-shadow: 0 calc(0.125rem * var(--sf-shadow--level-ratio)) calc(0.125rem * var(--sf-shadow--level-ratio)) calc(-1 * 0.0625rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-fill), 0 calc(0.0625rem * var(--sf-shadow--level-ratio)) calc(0.1875rem * var(--sf-shadow--level-ratio)) 0 var(--sf-shadow--color-outline), 0 calc(0.125rem * var(--sf-shadow--level-ratio)) calc(0.25rem * var(--sf-shadow--level-ratio)) calc(0.0625rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-shading); + box-shadow: 0 calc(var(--sf-a2) * var(--sf-shadow--level-ratio)) calc(var(--sf-a2) * var(--sf-shadow--level-ratio)) calc(-1 * var(--sf-a1) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-fill), 0 calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) calc(var(--sf-a3) * var(--sf-shadow--level-ratio)) 0 var(--sf-shadow--color-outline), 0 calc(var(--sf-a2) * var(--sf-shadow--level-ratio)) calc(var(--sf-a4) * var(--sf-shadow--level-ratio)) calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-shading); + } + [class*=drop-shadow] { + box-shadow: none; + -webkit-filter: drop-shadow(0 calc(0.0625rem * var(--sf-shadow--level-ratio)) calc(0.0625rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-fill)) drop-shadow(0 calc(0.0625rem * var(--sf-shadow--level-ratio)) calc(0.1875rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-outline)) drop-shadow(0 calc(0.125rem * var(--sf-shadow--level-ratio)) calc(0.25rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-shading)); + filter: drop-shadow(0 calc(0.0625rem * var(--sf-shadow--level-ratio)) calc(0.0625rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-fill)) drop-shadow(0 calc(0.0625rem * var(--sf-shadow--level-ratio)) calc(0.1875rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-outline)) drop-shadow(0 calc(0.125rem * var(--sf-shadow--level-ratio)) calc(0.25rem * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-shading)); + -webkit-filter: drop-shadow(0 calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-fill)) drop-shadow(0 calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) calc(var(--sf-a3) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-outline)) drop-shadow(0 calc(var(--sf-a2) * var(--sf-shadow--level-ratio)) calc(var(--sf-a4) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-shading)); + filter: drop-shadow(0 calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-fill)) drop-shadow(0 calc(var(--sf-a1) * var(--sf-shadow--level-ratio)) calc(var(--sf-a3) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-outline)) drop-shadow(0 calc(var(--sf-a2) * var(--sf-shadow--level-ratio)) calc(var(--sf-a4) * var(--sf-shadow--level-ratio)) var(--sf-shadow--color-shading)); + } +} +@layer sf.base { + :root { + /* Нулевая ступень: класс blur-none просил её с самого начала. */ + --sf-blur-none: var(--sf-a0); + --sf-blur-small: var(--sf-a2); + --sf-blur-medium: var(--sf-a4); + --sf-blur-large: var(--sf-a8); + --sf-surface-overlay--blur: var(--sf-d6); + } + @media (min-width: 60rem) { + :root { + --sf-blur-none: var(--sf-a0); + --sf-blur-small: var(--sf-a2); + --sf-blur-medium: var(--sf-a4); + --sf-blur-large: var(--sf-a8); + --sf-surface-overlay--blur: var(--sf-d6); + } + } +} +@layer sf.base { + .theme-light .sf-logo .sf-logo-1 { + color: #221F20; + } + .theme-light .sf-logo .sf-logo-2 { + color: #969696; + } + .theme-dark .sf-logo .sf-logo-1 { + color: #F6F6F6; + } + .theme-dark .sf-logo .sf-logo-2 { + color: #969696; + } + .sf-logo svg { + width: 100%; + height: 100%; + max-height: 1.5rem; + max-height: var(--sf-c2, 26px); + } + @media (min-width: 60rem) { + .sf-logo svg { + max-height: 1.75rem; + max-height: var(--sf-c4, 32px); + } + } +} +@layer sf.tokens { + :root { + --sf-viewport-height-small: 100vh; + --sf-viewport-height-large: 100vh; + --sf-viewport-height-dynamic: 100vh; + --sf-viewport-width-small: 100vw; + --sf-viewport-width-large: 100vw; + --sf-viewport-width-dynamic: 100vw; + } + @supports (height: 100svh) and (width: 100svw) { + :root { + --sf-viewport-height-small: 100svh; + --sf-viewport-width-small: 100svw; + } + } + @supports (height: 100lvh) and (width: 100lvw) { + :root { + --sf-viewport-height-large: 100lvh; + --sf-viewport-width-large: 100lvw; + } + } + @supports (height: 100dvh) and (width: 100dvw) { + :root { + --sf-viewport-height-dynamic: 100dvh; + --sf-viewport-width-dynamic: 100dvw; + } + } +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../4f2981d82860061bca3e.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../8bff79fbfaa8b8167a0b.woff2) format("woff2"); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../49594fb515ba00213fc3.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../b5cdd4765614e027c252.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../4f908aee8194b11d9c35.woff2) format("woff2"); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../f4df85d151e5ee39bc2b.woff2) format("woff2"); + unicode-range: U+1F00-1FFF; +} +@font-face { + font-family: "Inter Variable"; + font-style: normal; + font-display: optional; + font-weight: 100 900; + src: url(../ab4bb8dcda024fe6eff2.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { + font-family: "Inter Fallback"; + font-weight: 100 549; + src: local("Arial"), local("ArialMT"); + ascent-override: 90.2%; + descent-override: 22.48%; + line-gap-override: 0%; + size-adjust: 107.4%; +} +@font-face { + font-family: "Inter Fallback"; + font-weight: 550 1000; + src: local("Arial Bold"), local("Arial-BoldMT"); + ascent-override: 90.2%; + descent-override: 22.48%; + line-gap-override: 0%; + size-adjust: 107.4%; +} +/* sf-focus-ring: editor — the editing canvas marks what is being edited in its + own colour, which is part of the editor's language rather than the product's + focus colour. Width and style stay the system's. */ +@layer sf.components { + .sf-composition-regions { + --sf-composition-region-side: minmax(0, var(--sf-f6)); + --sf-composition-region-gap: var(--sf-space-4, 1rem); + container-type: inline-size; + display: block; + min-width: 0; + min-inline-size: 0; + } + .sf-composition-regions-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + grid-auto-flow: row; + grid-gap: var(--sf-composition-region-gap); + gap: var(--sf-composition-region-gap); + min-width: 0; + min-inline-size: 0; + } + .sf-composition-region { + display: block; + min-width: 0; + min-inline-size: 0; + } + .sf-composition-regions-grid > [data-sf-region-placement=block][data-sf-region-sticky] { + position: sticky; + top: 0; + inset-block-start: 0; + z-index: 1; + background: Canvas; + background: var(--sf-surface-1, Canvas); + } + @container (min-width: 48rem) { + .sf-composition-regions-grid[\:has\(\%3E\%20\[data-sf-region-placement\%3Dstart\]\)] { + grid-template-columns: var(--sf-composition-region-side) minmax(0, 1fr); + } + .sf-composition-regions-grid:has(> [data-sf-region-placement=start]) { + grid-template-columns: var(--sf-composition-region-side) minmax(0, 1fr); + } + .sf-composition-regions-grid[\:has\(\%3E\%20\[data-sf-region-placement\%3Dend\]\)] { + grid-template-columns: minmax(0, 1fr) var(--sf-composition-region-side); + } + .sf-composition-regions-grid:has(> [data-sf-region-placement=end]) { + grid-template-columns: minmax(0, 1fr) var(--sf-composition-region-side); + } + .sf-composition-regions-grid[\:has\(\%3E\%20\[data-sf-region-placement\%3Dstart\]\)][\:has\(\%3E\%20\[data-sf-region-placement\%3Dend\]\)] { + grid-template-columns: var(--sf-composition-region-side) minmax(0, 1fr) var(--sf-composition-region-side); + } + .sf-composition-regions-grid:has(> [data-sf-region-placement=start]):has(> [data-sf-region-placement=end]) { + grid-template-columns: var(--sf-composition-region-side) minmax(0, 1fr) var(--sf-composition-region-side); + } + .sf-composition-regions-grid > [data-sf-region-placement=block] { + grid-column: 1/-1; + } + .sf-composition-regions-grid[\:has\(\%3E\%20\[data-sf-region-placement\%3Dstart\]\)] > [data-sf-region-placement=start] { + grid-column: 1; + } + .sf-composition-regions-grid:has(> [data-sf-region-placement=start]) > [data-sf-region-placement=start] { + grid-column: 1; + } + .sf-composition-regions-grid[\:has\(\%3E\%20\[data-sf-region-placement\%3Dstart\]\)] > [data-sf-region-placement=center] { + grid-column: 2; + } + .sf-composition-regions-grid:has(> [data-sf-region-placement=start]) > [data-sf-region-placement=center] { + grid-column: 2; + } + .sf-composition-regions-grid[\:not-has\(\%3E\%20\[data-sf-region-placement\%3Dstart\]\)] > [data-sf-region-placement=center] { + grid-column: 1; + } + .sf-composition-regions-grid:not(:has(> [data-sf-region-placement=start])) > [data-sf-region-placement=center] { + grid-column: 1; + } + .sf-composition-regions-grid > [data-sf-region-placement=end] { + grid-column: -2; + } + .sf-composition-regions-grid > [data-sf-region-placement=start][data-sf-region-sticky], + .sf-composition-regions-grid > [data-sf-region-placement=end][data-sf-region-sticky] { + align-self: start; + position: sticky; + top: 0; + inset-block-start: 0; + } + } +} +@layer sf.components { + sf-composition-scope { + display: contents; + } +} +@layer sf.components { + .sf-editor-field { + display: grid; + grid-gap: 0.25rem; + gap: 0.25rem; + grid-gap: 0.25rem; + grid-gap: var(--sf-space-1, 0.25rem); + gap: var(--sf-space-1, 0.25rem); + min-width: 0; + min-inline-size: 0; + color: CanvasText; + color: var(--sf-on-surface, CanvasText); + } + .sf-editor-field[data-sf-field-kind=toggle] { + grid-template-columns: auto minmax(0, 1fr); + align-items: center; + -webkit-column-gap: 0.5rem; + -moz-column-gap: 0.5rem; + column-gap: 0.5rem; + -webkit-column-gap: var(--sf-space-2, 0.5rem); + -moz-column-gap: var(--sf-space-2, 0.5rem); + column-gap: var(--sf-space-2, 0.5rem); + } + .sf-editor-field[data-sf-field-kind=toggle] > .sf-editor-field-help { + grid-column: 1/-1; + } + .sf-editor-field-control:not([type=checkbox]) { + min-width: 0; + min-inline-size: 0; + max-width: 100%; + max-inline-size: 100%; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-block: 0.25rem; + padding-top: 0.25rem; + padding-top: var(--sf-space-1, 0.25rem); + padding-bottom: 0.25rem; + padding-bottom: var(--sf-space-1, 0.25rem); + padding-block: var(--sf-space-1, 0.25rem); + padding-left: 0.5rem; + padding-right: 0.5rem; + padding-inline: 0.5rem; + padding-left: 0.5rem; + padding-left: var(--sf-space-2, 0.5rem); + padding-right: 0.5rem; + padding-right: var(--sf-space-2, 0.5rem); + padding-inline: var(--sf-space-2, 0.5rem); + border: 1px solid GrayText; + border: 1px solid var(--sf-outline, GrayText); + border-radius: 0.25rem; + border-radius: var(--sf-radius-1, 0.25rem); + background: Canvas; + background: var(--sf-surface-1, Canvas); + color: CanvasText; + color: var(--sf-on-surface, CanvasText); + font: inherit; + } + .sf-editor-field-control[type=checkbox] { + width: 1.25rem; + inline-size: 1.25rem; + height: 1.25rem; + block-size: 1.25rem; + margin: 0; + accent-color: AccentColor; + accent-color: var(--sf-primary, AccentColor); + } + .sf-editor-field-control.focus-visible, + .sf-editor-field-disclosure > summary.focus-visible { + outline: var(--sf-focus--width) var(--sf-focus--style) Highlight; + outline: var(--sf-focus--width) var(--sf-focus--style) var(--sf-primary, Highlight); + outline-offset: 2px; + } + .sf-editor-field-control.focus-visible, + .sf-editor-field-disclosure > summary.focus-visible { + outline: var(--sf-focus--width) var(--sf-focus--style) Highlight; + outline: var(--sf-focus--width) var(--sf-focus--style) Highlight; + outline: var(--sf-focus--width) var(--sf-focus--style) var(--sf-primary, Highlight); + outline-offset: 2px; + } + .sf-editor-field-control:focus-visible, + .sf-editor-field-disclosure > summary:focus-visible { + outline: var(--sf-focus--width) var(--sf-focus--style) Highlight; + outline: var(--sf-focus--width) var(--sf-focus--style) var(--sf-primary, Highlight); + outline-offset: 2px; + } + .sf-editor-field-help { + color: CanvasText; + color: var(--sf-on-surface-variant, var(--sf-on-surface, CanvasText)); + } + .sf-editor-field-disclosure > summary { + cursor: pointer; + } +} +/* One bar centred in each row of the given height, as wide as the share. */ +@layer sf.base { + /* The final shape before the code (owner, 2026-10-15; ui-control + control/designs/2026-10-15-interaction-rules.md, rule 5). A Smart element + whose code has not arrived yet takes the room its loaded form takes and + shows its shape in skeleton bars, so nothing moves when it is defined. The + element says which shape with data-sf-skeleton -- server markup writes it -- + and these shapes live in core because a component's own stylesheet arrives + with its code, too late for this. + + rows a list: a toolbar and --sf-skeleton-rows rows (10) + record a record: --sf-skeleton-rows label-and-value pairs (6) + menu a menu column: --sf-skeleton-rows items (8) + block a box --sf-skeleton-block-size tall + line one line of text */ + :where([data-sf-skeleton]):not(:defined) { + --sf-skeleton-base: var(--sf-neutral-60--alfa-48); + --sf-skeleton-line: var(--sf-text-height-1); + --sf-skeleton-bar: var(--sf-text-size-1); + --sf-skeleton-row: calc(var(--sf-text-height-1) + 2 * var(--sf-space-1)); + --sf-skeleton-inset: var(--sf-space-1); + display: block; + background-repeat: no-repeat; + -webkit-animation: sf-placeholder-pulse calc(var(--sf-duration-slow) * 3) var(--sf-animation) infinite; + animation: sf-placeholder-pulse calc(var(--sf-duration-slow) * 3) var(--sf-animation) infinite; + } + :where([data-sf-skeleton=rows]):not(:defined) { + --sf-skeleton-rows: 10; + --sf-skeleton-toolbar: var(--sf-ui-1--control-height); + min-height: calc(var(--sf-skeleton-toolbar) + var(--sf-space-1) + var(--sf-skeleton-rows) * var(--sf-skeleton-row)); + min-block-size: calc(var(--sf-skeleton-toolbar) + var(--sf-space-1) + var(--sf-skeleton-rows) * var(--sf-skeleton-row)); + background-image: linear-gradient(var(--sf-skeleton-base), var(--sf-skeleton-base)), repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-row) - var(--sf-skeleton-bar)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-row) - var(--sf-skeleton-bar)) / 2) calc((var(--sf-skeleton-row) + var(--sf-skeleton-bar)) / 2), transparent calc((var(--sf-skeleton-row) + var(--sf-skeleton-bar)) / 2) var(--sf-skeleton-row)), repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-row) - var(--sf-skeleton-bar)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-row) - var(--sf-skeleton-bar)) / 2) calc((var(--sf-skeleton-row) + var(--sf-skeleton-bar)) / 2), transparent calc((var(--sf-skeleton-row) + var(--sf-skeleton-bar)) / 2) var(--sf-skeleton-row)), linear-gradient(var(--sf-outline-variant), var(--sf-outline-variant)); + background-size: 40% var(--sf-skeleton-toolbar), 30% 100%, 20% 100%, 100% 1px; + background-size: 40% var(--sf-skeleton-toolbar), 30% 100%, 20% 100%, 100% var(--sf-px); + background-position: 0 0, var(--sf-skeleton-inset) calc(var(--sf-skeleton-toolbar) + var(--sf-space-1)), 55% calc(var(--sf-skeleton-toolbar) + var(--sf-space-1)), 0 calc(var(--sf-skeleton-toolbar) + var(--sf-space-1) + var(--sf-skeleton-row)); + } + :where([data-sf-skeleton=record]):not(:defined) { + --sf-skeleton-rows: 6; + --sf-skeleton-pair: calc(var(--sf-text-height-1\/2) + var(--sf-text-height-1) + var(--sf-space-1)); + min-height: calc(var(--sf-skeleton-rows) * var(--sf-skeleton-pair)); + min-block-size: calc(var(--sf-skeleton-rows) * var(--sf-skeleton-pair)); + background-image: repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-pair) - var(--sf-text-size-1\/2)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-pair) - var(--sf-text-size-1\/2)) / 2) calc((var(--sf-skeleton-pair) + var(--sf-text-size-1\/2)) / 2), transparent calc((var(--sf-skeleton-pair) + var(--sf-text-size-1\/2)) / 2) var(--sf-skeleton-pair)), repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-pair) - var(--sf-skeleton-bar)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-pair) - var(--sf-skeleton-bar)) / 2) calc((var(--sf-skeleton-pair) + var(--sf-skeleton-bar)) / 2), transparent calc((var(--sf-skeleton-pair) + var(--sf-skeleton-bar)) / 2) var(--sf-skeleton-pair)); + background-size: 25% 100%, 60% 100%; + background-position: 0 calc(var(--sf-text-height-1) / -2), 0 calc(var(--sf-text-height-1\/2) / 2); + } + :where([data-sf-skeleton=menu]):not(:defined) { + --sf-skeleton-rows: 8; + --sf-skeleton-row: var(--sf-ui-1\/2--control-height); + min-height: calc(var(--sf-skeleton-rows) * var(--sf-skeleton-row)); + min-block-size: calc(var(--sf-skeleton-rows) * var(--sf-skeleton-row)); + background-image: repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-row) - var(--sf-text-size-1\/2)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-row) - var(--sf-text-size-1\/2)) / 2) calc((var(--sf-skeleton-row) + var(--sf-text-size-1\/2)) / 2), transparent calc((var(--sf-skeleton-row) + var(--sf-text-size-1\/2)) / 2) var(--sf-skeleton-row)); + background-size: 70% 100%; + background-position: var(--sf-skeleton-inset) 0; + } + :where([data-sf-skeleton=block]):not(:defined) { + min-height: var(--sf-ui-1--control-height); + min-block-size: var(--sf-ui-1--control-height); + min-height: var(--sf-ui-1--control-height); + min-height: var(--sf-skeleton-block-size, var(--sf-ui-1--control-height)); + min-block-size: var(--sf-skeleton-block-size, var(--sf-ui-1--control-height)); + background-image: linear-gradient(var(--sf-skeleton-base), var(--sf-skeleton-base)); + background-size: 100% 100%; + border-radius: var(--sf-radius--ui); + } + :where([data-sf-skeleton=line]):not(:defined) { + min-height: var(--sf-skeleton-line); + min-block-size: var(--sf-skeleton-line); + background-image: repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-line) - var(--sf-skeleton-bar)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-line) - var(--sf-skeleton-bar)) / 2) calc((var(--sf-skeleton-line) + var(--sf-skeleton-bar)) / 2), transparent calc((var(--sf-skeleton-line) + var(--sf-skeleton-bar)) / 2) var(--sf-skeleton-line)); + background-size: 60% 100%; + } + @-webkit-keyframes sf-placeholder-pulse { + 50% { + opacity: var(--sf-opacity-60); + } + } + @keyframes sf-placeholder-pulse { + 50% { + opacity: var(--sf-opacity-60); + } + } + @media (prefers-reduced-motion: reduce) { + :where([data-sf-skeleton]):not(:defined) { + -webkit-animation: none; + animation: none; + } + } +} +@layer sf.base { + /* A region on its way (region navigation, 2026-10-15): the content that is + leaving gives up its place to the skeleton of a page -- a heading bar and + rows -- in that region only; the shell around it stays as it is. The + region keeps its size, so nothing below it moves while the answer comes. */ + [data-sf-region-loading] { + --sf-skeleton-base: var(--sf-neutral-60--alfa-48); + --sf-skeleton-row: calc(var(--sf-text-height-1) + 2 * var(--sf-space-1)); + background-repeat: no-repeat; + background-image: linear-gradient(var(--sf-skeleton-base), var(--sf-skeleton-base)), repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-row) - var(--sf-text-size-1)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-row) - var(--sf-text-size-1)) / 2) calc((var(--sf-skeleton-row) + var(--sf-text-size-1)) / 2), transparent calc((var(--sf-skeleton-row) + var(--sf-text-size-1)) / 2) var(--sf-skeleton-row)), repeating-linear-gradient(to bottom, transparent 0 calc((var(--sf-skeleton-row) - var(--sf-text-size-1)) / 2), var(--sf-skeleton-base) calc((var(--sf-skeleton-row) - var(--sf-text-size-1)) / 2) calc((var(--sf-skeleton-row) + var(--sf-text-size-1)) / 2), transparent calc((var(--sf-skeleton-row) + var(--sf-text-size-1)) / 2) var(--sf-skeleton-row)); + background-size: 30% var(--sf-text-height-3), 35% 100%, 25% 100%; + background-position: var(--sf-space-1) var(--sf-space-1), var(--sf-space-1) calc(var(--sf-space-3) + var(--sf-text-height-2)), 55% calc(var(--sf-space-3) + var(--sf-text-height-2)); + -webkit-animation: sf-placeholder-pulse calc(var(--sf-duration-slow) * 3) var(--sf-animation) infinite; + animation: sf-placeholder-pulse calc(var(--sf-duration-slow) * 3) var(--sf-animation) infinite; + } + [data-sf-region-loading] > * { + visibility: hidden; + } + /* Still for a person who asked for less motion, as the element shapes are. */ + @media (prefers-reduced-motion: reduce) { + [data-sf-region-loading] { + -webkit-animation: none; + animation: none; + } + } +} diff --git a/contracts/framework/core/public-variables.v1.json b/contracts/framework/core/public-variables.v1.json new file mode 100644 index 0000000..f83bf29 --- /dev/null +++ b/contracts/framework/core/public-variables.v1.json @@ -0,0 +1,1117 @@ +{ + "schema": "simai.framework.public-variables", + "schema_version": 1, + "summary": "The CSS variables each component offers for customisation. A public variable has a single dash after the block (--sf-badge-color); the Framework never sets one, and reads it wherever a resting look is defined -- the base rule, sizes, appearances, schemes, statuses -- but not where a state is drawn (hover, focus, pressed, disabled, loading, an error), so states still show over a customised look. Set one on the component or on any ancestor. Every other --sf---* variable is internal: it may be renamed or removed in any release. A public variable is renamed or removed only through the change journal, as an attribute is.", + "components": [ + { + "component": "badge", + "selector": ".sf-badge", + "variables": [ + { + "name": "--sf-badge-background-color", + "role": "background", + "summary": "The badge's fill.", + "default": "var(--sf-on-surface-variant)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "scheme", + "status" + ] + }, + { + "name": "--sf-badge-color", + "role": "color", + "summary": "The text and icon colour.", + "default": "var(--sf-on-surface-inverse)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "scheme", + "status" + ] + }, + { + "name": "--sf-badge-border-color", + "role": "border-color", + "summary": "The border colour; seen with a border width.", + "default": "transparent", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "scheme", + "status" + ] + }, + { + "name": "--sf-badge-border-width", + "role": "border-width", + "summary": "The border width on every side.", + "default": "0", + "since": "2026-10-13", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-badge-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius-circle)", + "since": "2026-10-13" + }, + { + "name": "--sf-badge-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the text.", + "default": "var(--sf-ui-1/3--text-space-x)", + "since": "2026-10-13", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-badge-padding-block", + "role": "padding-block", + "summary": "Space above and below the text.", + "default": "var(--sf-ui-1/3--space-y-tightness-low)", + "since": "2026-10-13", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-badge-gap", + "role": "gap", + "summary": "Space between the icon and the text.", + "default": "var(--sf-space-1/4)", + "since": "2026-10-13" + } + ] + }, + { + "component": "button", + "selector": ".sf-button", + "variables": [ + { + "name": "--sf-button-background-color", + "role": "background", + "summary": "The resting fill; hover, pressed and disabled keep their own.", + "default": "var(--sf-primary)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-button-color", + "role": "color", + "summary": "The label colour at rest.", + "default": "var(--sf-on-primary)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-button-border-color", + "role": "border-color", + "summary": "The border colour at rest; seen with a border width.", + "default": "transparent", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-button-border-width", + "role": "border-width", + "summary": "The border width on every side (outline appearance: var(--sf-px)).", + "default": "0", + "since": "2026-10-13", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-button-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-13" + }, + { + "name": "--sf-button-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the content.", + "default": "var(--sf-ui-1--space-x)", + "since": "2026-10-13", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-button-padding-block", + "role": "padding-block", + "summary": "Space above and below the content.", + "default": "var(--sf-ui-1--space-y-tightness-default)", + "since": "2026-10-13", + "varies_with": [ + "size", + "spacing" + ] + } + ] + }, + { + "component": "input", + "selector": ".sf-input", + "variables": [ + { + "name": "--sf-input-background-color", + "role": "background", + "summary": "The field's fill at rest; focus, error and disabled keep their own.", + "default": "var(--sf-surface-0)", + "since": "2026-10-13", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-input-border-color", + "role": "border-color", + "summary": "The field's border at rest.", + "default": "var(--sf-outline)", + "since": "2026-10-13", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-input-color", + "role": "color", + "summary": "The typed text.", + "default": "inherit", + "since": "2026-10-13" + }, + { + "name": "--sf-input-radius", + "role": "radius", + "summary": "The field's corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-13" + }, + { + "name": "--sf-input-padding-inline", + "role": "padding-inline", + "summary": "Space inside the field before and after its content.", + "default": "var(--sf-ui-1--space-x)", + "since": "2026-10-13", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-input-padding-block", + "role": "padding-block", + "summary": "Space inside the field above and below its content.", + "default": "calc(var(--sf-ui-1--space-y-tightness-default) - var(--sf-px))", + "since": "2026-10-13", + "varies_with": [ + "size" + ] + } + ] + }, + { + "component": "alert", + "selector": ".sf-alert", + "variables": [ + { + "name": "--sf-alert-background-color", + "role": "background", + "summary": "The alert's fill.", + "default": "var(--sf-surface-container)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "status" + ] + }, + { + "name": "--sf-alert-border-color", + "role": "border-color", + "summary": "The border colour.", + "default": "var(--sf-outline)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "status" + ] + }, + { + "name": "--sf-alert-color", + "role": "color", + "summary": "The text colour.", + "default": "var(--sf-on-surface)", + "since": "2026-10-13", + "varies_with": [ + "appearance", + "status" + ] + }, + { + "name": "--sf-alert-border-width", + "role": "border-width", + "summary": "The border width on every side.", + "default": "var(--sf-px)", + "since": "2026-10-13" + }, + { + "name": "--sf-alert-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius--surface)", + "since": "2026-10-13" + }, + { + "name": "--sf-alert-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the content.", + "default": "var(--sf-space-1)", + "since": "2026-10-13" + }, + { + "name": "--sf-alert-padding-block", + "role": "padding-block", + "summary": "Space above and below the content.", + "default": "var(--sf-space-1)", + "since": "2026-10-13" + }, + { + "name": "--sf-alert-gap", + "role": "gap", + "summary": "Space between the icon, the text and the buttons.", + "default": "var(--sf-space-1)", + "since": "2026-10-13" + } + ] + }, + { + "component": "tag", + "selector": ".sf-tag", + "variables": [ + { + "name": "--sf-tag-background-color", + "role": "background", + "summary": "The tag's fill at rest; hover, pressed, selected and disabled keep their own.", + "default": "var(--sf-surface-container)", + "since": "2026-10-18", + "varies_with": [ + "appearance", + "status" + ] + }, + { + "name": "--sf-tag-color", + "role": "color", + "summary": "The label and count colour at rest; disabled keeps its own.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18", + "varies_with": [ + "status" + ] + }, + { + "name": "--sf-tag-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-18" + }, + { + "name": "--sf-tag-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the content; an inline tag keeps its host's insets.", + "default": "var(--sf-ui-1--space-x)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-tag-padding-block", + "role": "padding-block", + "summary": "Space above and below the content; an inline tag keeps its host's insets.", + "default": "var(--sf-ui-1--space-y-tightness-default)", + "since": "2026-10-18", + "varies_with": [ + "size", + "spacing" + ] + }, + { + "name": "--sf-tag-gap", + "role": "gap", + "summary": "Space between the parts of the tag (every size sets 0: the label's own step spaces it).", + "default": "var(--sf-a1)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + } + ] + }, + { + "component": "icon-button", + "selector": ".sf-icon-button", + "variables": [ + { + "name": "--sf-icon-button-background-color", + "role": "background", + "summary": "The resting fill; hover, pressed, focus and disabled keep their own.", + "default": "var(--sf-primary)", + "since": "2026-10-18", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-icon-button-color", + "role": "color", + "summary": "The icon and close-mark colour at rest; disabled keeps its own.", + "default": "var(--sf-on-surface-variant)", + "since": "2026-10-18", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-icon-button-border-color", + "role": "border-color", + "summary": "The border colour at rest; seen with a border width.", + "default": "transparent", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-icon-button-border-width", + "role": "border-width", + "summary": "The border width on every side (outline and surface appearances: var(--sf-px)).", + "default": "0", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-icon-button-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-18" + }, + { + "name": "--sf-icon-button-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the icon.", + "default": "var(--sf-ui-1--space-y-tightness-default)", + "since": "2026-10-18", + "varies_with": [ + "size", + "spacing" + ] + }, + { + "name": "--sf-icon-button-padding-block", + "role": "padding-block", + "summary": "Space above and below the icon.", + "default": "var(--sf-ui-1--space-y-tightness-default)", + "since": "2026-10-18", + "varies_with": [ + "size", + "spacing" + ] + } + ] + }, + { + "component": "checkbox", + "selector": ".sf-checkbox", + "variables": [ + { + "name": "--sf-checkbox-background-color", + "role": "background", + "summary": "The box's fill when unchecked; checked, error and disabled keep their own.", + "default": "var(--sf-surface-0)", + "since": "2026-10-18" + }, + { + "name": "--sf-checkbox-border-color", + "role": "border-color", + "summary": "The box's border when unchecked; checked, hover, error and disabled keep their own.", + "default": "var(--sf-outline)", + "since": "2026-10-18" + }, + { + "name": "--sf-checkbox-border-width", + "role": "border-width", + "summary": "The box's border width on every side.", + "default": "var(--sf-px)", + "since": "2026-10-18" + }, + { + "name": "--sf-checkbox-radius", + "role": "radius", + "summary": "The box's corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-18" + }, + { + "name": "--sf-checkbox-size", + "role": "size", + "summary": "The box's width and height.", + "default": "var(--sf-text-height-1)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-checkbox-gap", + "role": "gap", + "summary": "Space between the box and the label.", + "default": "var(--sf-ui-1--text-space-x)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + } + ] + }, + { + "component": "radio-button", + "selector": ".sf-radio-button", + "variables": [ + { + "name": "--sf-radio-button-background-color", + "role": "background", + "summary": "The ring's fill; focus keeps its own.", + "default": "transparent", + "since": "2026-10-18" + }, + { + "name": "--sf-radio-button-border-color", + "role": "border-color", + "summary": "The ring's colour when unchecked; checked, hover, error and disabled keep their own.", + "default": "var(--sf-outline)", + "since": "2026-10-18" + }, + { + "name": "--sf-radio-button-border-width", + "role": "border-width", + "summary": "The ring's width.", + "default": "var(--sf-px)", + "since": "2026-10-18" + }, + { + "name": "--sf-radio-button-color", + "role": "color", + "summary": "The label colour at rest; disabled keeps its own.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-radio-button-size", + "role": "size", + "summary": "The ring's width and height.", + "default": "var(--sf-text-height-1)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-radio-button-gap", + "role": "gap", + "summary": "Space between the ring and the label.", + "default": "var(--sf-ui-1--text-space-x)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + } + ] + }, + { + "component": "switch", + "selector": ".sf-switch", + "variables": [ + { + "name": "--sf-switch-background-color", + "role": "background", + "summary": "The track's fill when off; the on, pressed and disabled looks keep their own.", + "default": "var(--sf-surface-0)", + "since": "2026-10-18" + }, + { + "name": "--sf-switch-border-color", + "role": "border-color", + "summary": "The track's border at rest; hover and disabled keep their own.", + "default": "var(--sf-outline)", + "since": "2026-10-18" + }, + { + "name": "--sf-switch-border-width", + "role": "border-width", + "summary": "The track's border width; the thumb's seat is measured from the outer edge, so it keeps its place.", + "default": "var(--sf-px)", + "since": "2026-10-18" + }, + { + "name": "--sf-switch-radius", + "role": "radius", + "summary": "The track's corner radius.", + "default": "var(--sf-radius-circle)", + "since": "2026-10-18" + }, + { + "name": "--sf-switch-color", + "role": "color", + "summary": "The label colour; disabled keeps its own.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-switch-gap", + "role": "gap", + "summary": "Space between the track and the label.", + "default": "var(--sf-ui-1--text-space-x)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + } + ] + }, + { + "component": "textarea", + "selector": ".sf-textarea", + "variables": [ + { + "name": "--sf-textarea-background-color", + "role": "background", + "summary": "The field's fill at rest; hover, focus, read-only, error and disabled keep their own.", + "default": "var(--sf-surface-0)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-textarea-border-color", + "role": "border-color", + "summary": "The field's border at rest.", + "default": "var(--sf-outline)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-textarea-color", + "role": "color", + "summary": "The typed text; disabled keeps its own.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-textarea-radius", + "role": "radius", + "summary": "The field's corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-18" + }, + { + "name": "--sf-textarea-padding-inline", + "role": "padding-inline", + "summary": "Space inside the field before and after the text.", + "default": "calc(var(--sf-ui-1--space-x) + var(--sf-ui-1--text-space-x))", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-textarea-padding-block", + "role": "padding-block", + "summary": "Space inside the field above and below the text.", + "default": "calc(var(--sf-ui-1--space-y-tightness-default) - var(--sf-px))", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + } + ] + }, + { + "component": "toast", + "selector": ".sf-toast", + "variables": [ + { + "name": "--sf-toast-background-color", + "role": "background", + "summary": "The tint over the toast's raised surface.", + "default": "var(--sf-surface-container)", + "since": "2026-10-18", + "varies_with": [ + "status" + ] + }, + { + "name": "--sf-toast-color", + "role": "color", + "summary": "The text colour of the title and the supporting text.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18", + "varies_with": [ + "status" + ] + }, + { + "name": "--sf-toast-border-color", + "role": "border-color", + "summary": "The border colour.", + "default": "var(--sf-outline-variant)", + "since": "2026-10-18" + }, + { + "name": "--sf-toast-border-width", + "role": "border-width", + "summary": "The border width on every side.", + "default": "var(--sf-px)", + "since": "2026-10-18" + }, + { + "name": "--sf-toast-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius--surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-toast-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the content.", + "default": "var(--sf-space-1)", + "since": "2026-10-18" + }, + { + "name": "--sf-toast-padding-block", + "role": "padding-block", + "summary": "Space above and below the content.", + "default": "var(--sf-space-1)", + "since": "2026-10-18" + }, + { + "name": "--sf-toast-gap", + "role": "gap", + "summary": "Space between the icon, the text and the close button.", + "default": "var(--sf-space-1/2)", + "since": "2026-10-18" + } + ] + }, + { + "component": "modal", + "selector": ".sf-modal-surface", + "variables": [ + { + "name": "--sf-modal-background-color", + "role": "background", + "summary": "The panel's fill; the backdrop keeps its own.", + "default": "var(--sf-surface-1, #fff)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-modal-border-color", + "role": "border-color", + "summary": "The panel's border colour.", + "default": "var(--sf-outline-variant, transparent)", + "since": "2026-10-18" + }, + { + "name": "--sf-modal-border-width", + "role": "border-width", + "summary": "The panel's border width on every side.", + "default": "var(--sf-border-width, var(--sf-px))", + "since": "2026-10-18" + }, + { + "name": "--sf-modal-radius", + "role": "radius", + "summary": "The panel's corner radius; a fullscreen panel stays square.", + "default": "var(--sf-radius--surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-modal-padding-inline", + "role": "padding-inline", + "summary": "Space inside the panel before and after its content; the surface-padding attribute still wins.", + "default": "var(--sf-space-2)", + "since": "2026-10-18" + }, + { + "name": "--sf-modal-padding-block", + "role": "padding-block", + "summary": "Space inside the panel above and below its content; the surface-padding attribute still wins.", + "default": "var(--sf-space-2)", + "since": "2026-10-18" + }, + { + "name": "--sf-modal-gap", + "role": "gap", + "summary": "Space between the header, the body and the footer.", + "default": "var(--sf-space-1)", + "since": "2026-10-18" + } + ] + }, + { + "component": "tooltip", + "selector": ".sf-tooltip", + "variables": [ + { + "name": "--sf-tooltip-background-color", + "role": "background", + "summary": "The tooltip's fill, its tail included.", + "default": "var(--sf-elevation-2--surface)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tooltip-color", + "role": "color", + "summary": "The colour of the text and the supporting text.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tooltip-border-color", + "role": "border-color", + "summary": "The border colour of the light appearance; the dark one has no border.", + "default": "var(--sf-outline-variant)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tooltip-border-width", + "role": "border-width", + "summary": "The border width of the light appearance on every side; the dark one has no border.", + "default": "var(--sf-px)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tooltip-radius", + "role": "radius", + "summary": "The corner radius.", + "default": "var(--sf-radius--ui)", + "since": "2026-10-18" + }, + { + "name": "--sf-tooltip-padding-inline", + "role": "padding-inline", + "summary": "Space before and after the text.", + "default": "var(--sf-ui-1--space-x)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-tooltip-padding-block", + "role": "padding-block", + "summary": "Space above and below the text.", + "default": "var(--sf-ui-1--space-y-tightness-default)", + "since": "2026-10-18", + "varies_with": [ + "size" + ] + }, + { + "name": "--sf-tooltip-gap", + "role": "gap", + "summary": "Space between the text and the supporting text.", + "default": "var(--sf-space-1/4)", + "since": "2026-10-18" + } + ] + }, + { + "component": "tabs", + "selector": ".sf-tabs", + "variables": [ + { + "name": "--sf-tabs-color", + "role": "color", + "summary": "The label and icon colour of a tab at rest, in the underline and full appearances; the selected tab keeps its own.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tabs-indicator-color", + "role": "indicator-color", + "summary": "The colour of the line under the selected tab, in the underline appearance.", + "default": "var(--sf-outline)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tabs-indicator-width", + "role": "indicator-width", + "summary": "The thickness of the line under a tab, in the underline appearance; the tab keeps its height.", + "default": "calc(var(--sf-px) * 2)", + "since": "2026-10-18", + "varies_with": [ + "appearance", + "size" + ] + }, + { + "name": "--sf-tabs-border-color", + "role": "border-color", + "summary": "The colour of the divider under the row of tabs; pills, full and vertical tabs have none.", + "default": "var(--sf-outline-variant)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tabs-border-width", + "role": "border-width", + "summary": "The thickness of the divider under the row of tabs; an underline row stays on it.", + "default": "var(--sf-px)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-tabs-gap", + "role": "gap", + "summary": "Space between tabs; full tabs stay joined.", + "default": "var(--sf-space-1)", + "since": "2026-10-18", + "varies_with": [ + "appearance", + "size" + ] + } + ] + }, + { + "component": "avatar", + "selector": ".sf-avatar", + "variables": [ + { + "name": "--sf-avatar-background-color", + "role": "background", + "summary": "The fill behind the initials or the placeholder; an image covers it.", + "default": "transparent", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-avatar-color", + "role": "color", + "summary": "The colour of the initials and the placeholder icon.", + "default": "var(--sf-on-surface-variant)", + "since": "2026-10-18" + }, + { + "name": "--sf-avatar-border-color", + "role": "border-color", + "summary": "The border colour at rest; hover keeps its own.", + "default": "transparent", + "since": "2026-10-18" + }, + { + "name": "--sf-avatar-border-width", + "role": "border-width", + "summary": "The border width on every side.", + "default": "var(--sf-px)", + "since": "2026-10-18" + }, + { + "name": "--sf-avatar-radius", + "role": "radius", + "summary": "The corner radius, for the circle and the square shape alike.", + "default": "var(--sf-radius-circle)", + "since": "2026-10-18", + "varies_with": [ + "appearance" + ] + } + ] + }, + { + "component": "context-menu", + "selector": ".sf-context-menu", + "variables": [ + { + "name": "--sf-context-menu-background-color", + "role": "background", + "summary": "The menu's fill, its sticky footer included.", + "default": "var(--sf-elevation-3--surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-color", + "role": "color", + "summary": "The label colour of a row at rest; the current, danger and disabled rows keep their own.", + "default": "var(--sf-on-surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-border-color", + "role": "border-color", + "summary": "The colour of the hairline around the menu.", + "default": "var(--sf-outline-variant)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-border-width", + "role": "border-width", + "summary": "The width of the line around the menu.", + "default": "var(--sf-px)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-radius", + "role": "radius", + "summary": "The corner radius of the menu and its shadow.", + "default": "var(--sf-radius--surface)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-padding-inline", + "role": "padding-inline", + "summary": "Space between the menu's edge and its rows, before and after; row content stays on its axis.", + "default": "var(--sf-space-1/4)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-padding-block", + "role": "padding-block", + "summary": "Space above the first row and below the last.", + "default": "var(--sf-space-1/4)", + "since": "2026-10-18" + }, + { + "name": "--sf-context-menu-gap", + "role": "gap", + "summary": "Space between rows.", + "default": "var(--sf-px)", + "since": "2026-10-18" + } + ] + }, + { + "component": "button-group", + "selector": ".sf-button-group", + "variables": [ + { + "name": "--sf-button-group-background-color", + "role": "background", + "summary": "The segmented track's fill at rest.", + "default": "var(--sf-surface-container)", + "since": "2026-10-19", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-button-group-padding", + "role": "padding-inline", + "summary": "The segmented track's padding on every side, which is also the gap between segments; the plate's radius stays concentric.", + "default": "var(--sf-a4)", + "since": "2026-10-19", + "varies_with": [ + "appearance", + "size" + ] + }, + { + "name": "--sf-button-group-color", + "role": "color", + "summary": "The label and icon colour of a segment that is not selected, at rest; hover, pressed and disabled keep their own.", + "default": "var(--sf-on-surface-container--variant)", + "since": "2026-10-19", + "varies_with": [ + "appearance" + ] + }, + { + "name": "--sf-button-group-plate-background-color", + "role": "background", + "summary": "The fill of the plate under the selected segment; disabled keeps its own.", + "default": "var(--sf-primary)", + "since": "2026-10-19", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-button-group-plate-color", + "role": "color", + "summary": "The label, icon and count colour on the selected plate.", + "default": "var(--sf-on-primary)", + "since": "2026-10-19", + "varies_with": [ + "appearance", + "scheme" + ] + }, + { + "name": "--sf-button-group-count-color", + "role": "color", + "summary": "The count's colour in a segment that is not selected; the selected one takes the plate's ink.", + "default": "currentColor", + "since": "2026-10-19", + "varies_with": [ + "appearance" + ] + } + ] + } + ] +} diff --git a/contracts/framework/framework-contract-registry.json b/contracts/framework/framework-contract-registry.json new file mode 100644 index 0000000..e29f378 --- /dev/null +++ b/contracts/framework/framework-contract-registry.json @@ -0,0 +1,15289 @@ +{ + "compatibility": { + "build_inputs": { + "builder": { + "archive_sha256": "dc024fbdafb7f3ca0fed929293b22e38adcd1741115c800a59ea7224bbb81ab7", + "commit": "12a022bdde4d04a388996304e1dd09ccabc29ad7", + "owner": "simai/ui-builder", + "tree": "229b703701b1cef847915377df973e4555ae99be" + }, + "legacy_compatibility": { + "required": false + }, + "source": { + "archive_sha256": "68be39edab4f67e3ce35172689f2f4c9a18669855f6ea2d2bd9832255d25e473", + "commit": "1d26dd483201d24ad1af8419efc21b0d4a76a565", + "owner": "simai/ui-source", + "tree": "5b4d11c91ac0716e083554a9a358b0a9deaadab2" + } + }, + "claims": { + "all_items_ready": false, + "full_compatible": false, + "production_ready": false + }, + "exclusions": [], + "id": "ui-a9636b60d3e3", + "profile": "plain-assets-v1", + "release_lock_version": 2, + "runtime_sources": [ + { + "archive_sha256": "2177b01d60136b3e7ec92a683348d1bdc331935f7bb3a37306ed1dd3fba96d11", + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "owner": "simai/ui", + "revision": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "runtime_path": "distr", + "runtime_tree": "d337f03da440b304f81cc87fb93934a5b5dbb7f6", + "tag": null, + "tag_object": null, + "tree": "5fc2e581f23d8d187bf432fc524404c884e6f43a" + }, + { + "archive_sha256": "cb53515442a64f8acbb3c35d2aab8022dbb9a8871a4c8f71de1510d53462005f", + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "owner": "simai/ui", + "revision": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "runtime_path": "distr/smart", + "runtime_tree": "09caaaa2f2f868fc3cc4f9399fceddc263b34e17", + "tag": null, + "tag_object": null, + "tree": "9d693c353642546e8214fc951c466a8b5023cbdd" + } + ], + "status": "bounded" + }, + "counts": { + "component": 62, + "recipe": 1, + "smart-component": 54, + "total": 345, + "utility": 228 + }, + "entries": [ + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.accordion", + "kind": "component", + "lifecycle": "released", + "name": "accordion", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=accordion" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/accordion", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "accordion" + }, + "title": "Accordion" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.admin-menu", + "kind": "component", + "lifecycle": "released", + "name": "admin-menu", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=admin-menu" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/admin-menu", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "admin-menu" + }, + "title": "Admin Menu" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.alerts", + "kind": "component", + "lifecycle": "released", + "name": "alerts", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=alerts" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/alerts", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "alerts" + }, + "title": "Alerts" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.avatars", + "kind": "component", + "lifecycle": "released", + "name": "avatars", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=avatars" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/avatars", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 6, + "rule_name": "avatars" + }, + "title": "Avatars" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.badges", + "kind": "component", + "lifecycle": "released", + "name": "badges", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=badges" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/badges", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "badges" + }, + "title": "Badges" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.breadcrumbs", + "kind": "component", + "lifecycle": "released", + "name": "breadcrumbs", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=breadcrumbs" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/breadcrumbs", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "breadcrumbs" + }, + "title": "Breadcrumbs" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.button-group", + "kind": "component", + "lifecycle": "released", + "name": "button-group", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=button-group" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/button-group", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "button-group" + }, + "title": "Button Group" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/buttons/all/index.html" + ], + "id": "component.buttons", + "kind": "component", + "lifecycle": "released", + "name": "buttons", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=buttons" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/buttons", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "buttons" + }, + "title": "Buttons" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.carousel", + "kind": "component", + "lifecycle": "released", + "name": "carousel", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=carousel" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.swiper" + ], + "runtime": { + "asset_root": "distr/component/carousel", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "carousel" + }, + "title": "Carousel" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/checkbox/all/index.html" + ], + "id": "component.checkbox", + "kind": "component", + "lifecycle": "released", + "name": "checkbox", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=checkbox" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/checkbox", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "checkbox" + }, + "title": "Checkbox" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.clipboard", + "kind": "component", + "lifecycle": "released", + "name": "clipboard", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=clipboard" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.buttons", + "component.icon-buttons", + "component.icons" + ], + "runtime": { + "asset_root": "distr/component/clipboard", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "clipboard" + }, + "title": "Clipboard" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.close", + "kind": "component", + "lifecycle": "released", + "name": "close", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=close" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/close", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 3, + "rule_name": "close" + }, + "title": "Close" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.content-divider", + "kind": "component", + "lifecycle": "released", + "name": "contentDivider", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=contentDivider" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/contentDivider", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "contentDivider" + }, + "title": "Contentdivider" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.context-menu", + "kind": "component", + "lifecycle": "released", + "name": "context-menu", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=context-menu" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/context-menu", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 3, + "rule_name": "context-menu" + }, + "title": "Context Menu" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.country-code", + "kind": "component", + "lifecycle": "released", + "name": "country-code", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=country-code" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/country-code", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 6, + "rule_name": "country-code" + }, + "title": "Country Code" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.datepicker", + "kind": "component", + "lifecycle": "released", + "name": "datepicker", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=datepicker" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/datepicker", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 3, + "rule_name": "datepicker" + }, + "title": "Datepicker" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.doc", + "kind": "component", + "lifecycle": "released", + "name": "doc", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=doc" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/doc", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "doc" + }, + "title": "Doc" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.dot", + "kind": "component", + "lifecycle": "released", + "name": "dot", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=dot" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/dot", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 3, + "rule_name": "dot" + }, + "title": "Dot" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.download-file", + "kind": "component", + "lifecycle": "released", + "name": "download-file", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=download-file" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/download-file", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "download-file" + }, + "title": "Download File" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/dropdown/dropdown/index.html" + ], + "id": "component.dropdown", + "kind": "component", + "lifecycle": "released", + "name": "dropdown", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=dropdown" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.icon-buttons" + ], + "runtime": { + "asset_root": "distr/component/dropdown", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "dropdown" + }, + "title": "Dropdown" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.emoji", + "kind": "component", + "lifecycle": "released", + "name": "emoji", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=emoji" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/emoji", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "emoji" + }, + "title": "Emoji" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.fab", + "kind": "component", + "lifecycle": "released", + "name": "fab", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=fab" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/fab", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "fab" + }, + "title": "Fab" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.featured-icon", + "kind": "component", + "lifecycle": "released", + "name": "featured-icon", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=featured-icon" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/featured-icon", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "featured-icon" + }, + "title": "Featured Icon" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.file-preview", + "kind": "component", + "lifecycle": "released", + "name": "file-preview", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=file-preview" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/file-preview", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "file-preview" + }, + "title": "File Preview" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.file-upload", + "kind": "component", + "lifecycle": "released", + "name": "file-upload", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=file-upload" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/file-upload", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "file-upload" + }, + "title": "File Upload" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.flag", + "kind": "component", + "lifecycle": "released", + "name": "flag", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=flag" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/flag", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 499, + "rule_name": "flag" + }, + "title": "Flag" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.hide-show", + "kind": "component", + "lifecycle": "released", + "name": "hideShow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=hideShow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/hideShow", + "declared": { + "css": false, + "js": true + }, + "plain_asset_count": 2, + "rule_name": "hideShow" + }, + "title": "Hideshow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.highlight", + "kind": "component", + "lifecycle": "released", + "name": "highlight", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=highlight" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.clipboard", + "component.icon-buttons", + "component.icons", + "component.scrollbar" + ], + "runtime": { + "asset_root": "distr/component/highlight", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "highlight" + }, + "title": "Highlight" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/icon-buttons/icon-buttons/index.html" + ], + "id": "component.icon-buttons", + "kind": "component", + "lifecycle": "released", + "name": "icon-buttons", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=icon-buttons" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/icon-buttons", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "icon-buttons" + }, + "title": "Icon Buttons" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.icons", + "kind": "component", + "lifecycle": "released", + "name": "icons", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=icons" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/icons", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 10, + "rule_name": "icons" + }, + "title": "Icons" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/inputs/textarea/index.html" + ], + "id": "component.inputs", + "kind": "component", + "lifecycle": "released", + "name": "inputs", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=inputs" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/inputs", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "inputs" + }, + "title": "Inputs" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.kbd", + "kind": "component", + "lifecycle": "released", + "name": "kbd", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=kbd" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/kbd", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "kbd" + }, + "title": "Kbd" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.link", + "kind": "component", + "lifecycle": "released", + "name": "link", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=link" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/link", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "link" + }, + "title": "Link" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.menu", + "kind": "component", + "lifecycle": "released", + "name": "menu", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=menu" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icon-buttons", + "component.icons" + ], + "runtime": { + "asset_root": "distr/component/menu", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "menu" + }, + "title": "Menu" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.modal", + "kind": "component", + "lifecycle": "released", + "name": "modal", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=modal" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.close", + "component.icon-buttons", + "utility.backdrop-filter-blur" + ], + "runtime": { + "asset_root": "distr/component/modal", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "modal" + }, + "title": "Modal" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.outline", + "kind": "component", + "lifecycle": "released", + "name": "outline", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=outline" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/outline", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "outline" + }, + "title": "Outline" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/pagination/default/index.html" + ], + "id": "component.pagination", + "kind": "component", + "lifecycle": "released", + "name": "pagination", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=pagination" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/pagination", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "pagination" + }, + "title": "Pagination" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.placeholder", + "kind": "component", + "lifecycle": "released", + "name": "placeholder", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=placeholder" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/placeholder", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "placeholder" + }, + "title": "Placeholder" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.progress-bar", + "kind": "component", + "lifecycle": "released", + "name": "progress-bar", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=progress-bar" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/progress-bar", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "progress-bar" + }, + "title": "Progress Bar" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.progress-scale", + "kind": "component", + "lifecycle": "released", + "name": "progress-scale", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=progress-scale" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/progress-scale", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "progress-scale" + }, + "title": "Progress Scale" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.quantity", + "kind": "component", + "lifecycle": "released", + "name": "quantity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=quantity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icon-buttons" + ], + "runtime": { + "asset_root": "distr/component/quantity", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "quantity" + }, + "title": "Quantity" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.radio", + "kind": "component", + "lifecycle": "released", + "name": "radio", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=radio" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/radio", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "radio" + }, + "title": "Radio" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.range-slider", + "kind": "component", + "lifecycle": "released", + "name": "range-slider", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=range-slider" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/range-slider", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "range-slider" + }, + "title": "Range Slider" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.reference-link", + "kind": "component", + "lifecycle": "released", + "name": "reference-link", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=reference-link" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/reference-link", + "declared": { + "css": true, + "js": false + }, + "plain_asset_count": 4, + "rule_name": "reference-link" + }, + "title": "Reference Link" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.scrollbar", + "kind": "component", + "lifecycle": "released", + "name": "scrollbar", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=scrollbar" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/scrollbar", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "scrollbar" + }, + "title": "Scrollbar" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.skeleton", + "kind": "component", + "lifecycle": "released", + "name": "skeleton", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=skeleton" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/skeleton", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "skeleton" + }, + "title": "Skeleton" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.slider", + "kind": "component", + "lifecycle": "released", + "name": "slider", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=slider" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.swiper" + ], + "runtime": { + "asset_root": "distr/component/slider", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "slider" + }, + "title": "Slider" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.spinner", + "kind": "component", + "lifecycle": "released", + "name": "spinner", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=spinner" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/spinner", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "spinner" + }, + "title": "Spinner" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.step", + "kind": "component", + "lifecycle": "released", + "name": "step", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=step" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/step", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "step" + }, + "title": "Step" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.swiper", + "kind": "component", + "lifecycle": "released", + "name": "swiper", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=swiper" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/swiper", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "swiper" + }, + "title": "Swiper" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.switch", + "kind": "component", + "lifecycle": "released", + "name": "switch", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=switch" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/switch", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "switch" + }, + "title": "Switch" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.tab", + "kind": "component", + "lifecycle": "released", + "name": "tab", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=tab" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/tab", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "tab" + }, + "title": "Tab" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.tabs", + "kind": "component", + "lifecycle": "released", + "name": "tabs", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=tabs" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/tabs", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "tabs" + }, + "title": "Tabs" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/components/tags/all/index.html" + ], + "id": "component.tags", + "kind": "component", + "lifecycle": "released", + "name": "tags", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=tags" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/tags", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "tags" + }, + "title": "Tags" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.textarea", + "kind": "component", + "lifecycle": "released", + "name": "textarea", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=textarea" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/textarea", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 5, + "rule_name": "textarea" + }, + "title": "Textarea" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.theme", + "kind": "component", + "lifecycle": "released", + "name": "theme", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=theme" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/theme", + "declared": { + "css": false, + "js": true + }, + "plain_asset_count": 2, + "rule_name": "theme" + }, + "title": "Theme" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.toast", + "kind": "component", + "lifecycle": "released", + "name": "toast", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=toast" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/toast", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "toast" + }, + "title": "Toast" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.toggle", + "kind": "component", + "lifecycle": "released", + "name": "toggle", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=toggle" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/toggle", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "toggle" + }, + "title": "Toggle" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.tooltip", + "kind": "component", + "lifecycle": "released", + "name": "tooltip", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=tooltip" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/tooltip", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "tooltip" + }, + "title": "Tooltip" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.tree", + "kind": "component", + "lifecycle": "released", + "name": "tree", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=tree" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icon-buttons", + "component.icons", + "component.tree-item" + ], + "runtime": { + "asset_root": "distr/component/tree", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "tree" + }, + "title": "Tree" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.tree-item", + "kind": "component", + "lifecycle": "released", + "name": "tree-item", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=tree-item" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons" + ], + "runtime": { + "asset_root": "distr/component/tree-item", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 4, + "rule_name": "tree-item" + }, + "title": "Tree Item" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "component.verification", + "kind": "component", + "lifecycle": "released", + "name": "verification", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=verification" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/component/verification", + "declared": { + "css": true, + "js": true + }, + "plain_asset_count": 6, + "rule_name": "verification" + }, + "title": "Verification" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/larena-layout@a4c3c8768b894a5d9ffff0d8fc55c1430114e43f:README.md" + ], + "example_refs": [ + "simai/larena-admin@7e673a5de3b0cd89838d7515ae1a683241c4c8be:tests/Unit/SmartRecipePresenterTest.php" + ], + "id": "recipe.admin.collection", + "kind": "recipe", + "lifecycle": "released", + "name": "admin.collection", + "owner": "larena/layout", + "provenance": { + "commit": "a4c3c8768b894a5d9ffff0d8fc55c1430114e43f", + "repository": "https://github.com/simai/larena-layout", + "source_refs": [ + "simai/larena-admin@7e673a5de3b0cd89838d7515ae1a683241c4c8be:src/Runtime/SmartRecipePresenter.php", + "simai/larena-layout@a4c3c8768b894a5d9ffff0d8fc55c1430114e43f:src/Contracts/AdminCollectionLayoutPlan.php" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "smart.buttons", + "smart.data-view", + "smart.pagination", + "utility.display", + "utility.flex-direction", + "utility.gap", + "utility.overflow", + "utility.width" + ], + "runtime": { + "profile": "list-page", + "read_only": true, + "regions": [ + "heading", + "toolbar", + "content", + "pagination" + ], + "version": "1.0.0" + }, + "title": "Admin collection" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.alert", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "alert", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/alert", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-alert" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.alerts", + "component.buttons", + "smart.icon-buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/alert/js/alert.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/alert/js/alert.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/alert/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-alert", + "tags": [ + "sf-alert" + ] + }, + "title": "Alert" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.avatar", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "avatar", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-avatar" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.avatars" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar/js/avatar.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar/js/avatar.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar/template/card.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar/template/default.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar/template/label.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatar/template/shared.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-avatar", + "tags": [ + "sf-avatar" + ] + }, + "title": "Avatar" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.avatars", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "avatars", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-avatars" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.avatars", + "component.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/css/avatars.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/css/avatars.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/js/avatars.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/js/avatars.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/template/default/index.html", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/template/default.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/template/group/index.html", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/template/label/index.html", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/template/profile/index.html", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/avatars/template/user/index.html" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-avatars", + "tags": [ + "sf-avatars" + ] + }, + "title": "Avatars" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.badges", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "badges", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/badges", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-badges" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.badges", + "utility.sr-only" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/badges/js/badges.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/badges/js/badges.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/badges/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-badges", + "tags": [ + "sf-badge" + ] + }, + "title": "Badges" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.breadcrumbs", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "breadcrumbs", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/breadcrumbs", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-breadcrumbs" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.breadcrumbs", + "component.icons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/breadcrumbs/js/breadcrumbs.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/breadcrumbs/js/breadcrumbs.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/breadcrumbs/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-breadcrumbs", + "tags": [ + "sf-breadcrumbs" + ] + }, + "title": "Breadcrumbs" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.button-group", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "button-group", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/button-group", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-button-group" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.button-group", + "smart.buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/button-group/js/button-group.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/button-group/js/button-group.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/button-group/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-button-group", + "tags": [ + "sf-button-group" + ] + }, + "title": "Button group" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.buttons", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "buttons", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/buttons", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-buttons" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.buttons", + "smart.icons", + "utility.pointer-events", + "utility.text-align" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/buttons/js/buttons.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/buttons/js/buttons.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/buttons/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-buttons", + "tags": [ + "sf-button" + ] + }, + "title": "Buttons" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.checkbox", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "checkbox", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-checkbox" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.checkbox", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/css/checkbox.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/css/checkbox.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/js/checkbox.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/js/checkbox.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkbox/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-checkbox", + "tags": [ + "sf-checkbox" + ] + }, + "title": "Checkbox" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.close", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "close", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/close", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-close" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.close" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/close/js/close.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/close/js/close.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/close/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-close", + "tags": [ + "sf-close" + ] + }, + "title": "Close" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.color", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "color", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons", + "smart.icon-buttons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color/css/color.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color/css/color.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color/js/color.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color/js/color.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/color/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-color", + "tags": [ + "sf-color" + ] + }, + "title": "Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.composition-overlay", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "composition-overlay", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/composition-overlay", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-composition-overlay" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.sortable" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/composition-overlay/css/composition-overlay.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/composition-overlay/css/composition-overlay.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/composition-overlay/js/composition-overlay.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/composition-overlay/js/composition-overlay.min.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-composition-overlay", + "tags": [ + "sf-composition-overlay" + ] + }, + "title": "Composition overlay" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.context-menu", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "context-menu", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/context-menu", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-context-menu" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.context-menu", + "smart.buttons", + "smart.icon-buttons", + "smart.tabs" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/context-menu/js/context-menu.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/context-menu/js/context-menu.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/context-menu/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-context-menu", + "tags": [ + "sf-context-menu" + ] + }, + "title": "Context Menu" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.copy-button", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "copy-button", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/copy-button", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-copy-button" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.buttons", + "smart.icon-buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/copy-button/css/copy-button.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/copy-button/css/copy-button.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/copy-button/js/copy-button.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/copy-button/js/copy-button.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/copy-button/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-copy-button", + "tags": [ + "sf-copy-button" + ] + }, + "title": "Copy button" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.country-code", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "country-code", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/country-code", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-country-code" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.country-code" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/country-code/js/country-code.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/country-code/js/country-code.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/country-code/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-country-code", + "tags": [ + "sf-country-code" + ] + }, + "title": "Country Code" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.datepicker", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "datepicker", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/datepicker", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-datepicker" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.datepicker", + "smart.buttons", + "smart.icon-buttons", + "smart.icons", + "smart.inputs" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/datepicker/js/datepicker.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/datepicker/js/datepicker.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/datepicker/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-datepicker", + "tags": [ + "sf-datepicker" + ] + }, + "title": "Datepicker" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.download-file", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "download-file", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/download-file", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-download-file" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.download-file", + "component.icons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/download-file/js/download-file.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/download-file/js/download-file.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/download-file/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-download-file", + "tags": [ + "sf-download-file" + ] + }, + "title": "Download File" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.drawer", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "drawer", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/drawer", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-drawer" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.close", + "component.icon-buttons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/drawer/css/drawer.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/drawer/css/drawer.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/drawer/js/drawer.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/drawer/js/drawer.min.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-drawer", + "tags": [ + "sf-drawer" + ] + }, + "title": "Drawer" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.dropdown", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "dropdown", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/dropdown", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-dropdown" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.dropdown", + "component.icon-buttons", + "component.inputs", + "smart.icon-buttons", + "smart.inputs", + "smart.list-item" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/dropdown/js/dropdown.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/dropdown/js/dropdown.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/dropdown/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-dropdown", + "tags": [ + "sf-dropdown" + ] + }, + "title": "Dropdown" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.empty-state", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "empty-state", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-empty-state" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.featured-icon", + "smart.buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state/css/empty-state.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state/css/empty-state.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state/js/empty-state.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state/js/empty-state.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state/js/empty-state.min.js.LICENSE.txt", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/empty-state/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-empty-state", + "tags": [ + "sf-empty-state" + ] + }, + "title": "Empty state" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.file-preview", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "file-preview", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-preview", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-file-preview" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.file-preview", + "component.icon-buttons", + "component.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-preview/js/file-preview.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-preview/js/file-preview.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-preview/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-file-preview", + "tags": [ + "sf-file-preview" + ] + }, + "title": "File Preview" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.file-upload", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "file-upload", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-upload", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-file-upload" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.featured-icon", + "component.file-upload", + "component.icon-buttons", + "smart.progress-bar" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-upload/js/file-upload.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-upload/js/file-upload.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/file-upload/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-file-upload", + "tags": [ + "sf-file-upload" + ] + }, + "title": "File Upload" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.gallery", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "gallery", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-gallery" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.modal", + "smart.slider" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery/css/gallery.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery/css/gallery.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery/js/gallery.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery/js/gallery.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/gallery/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-gallery", + "tags": [ + "sf-gallery" + ] + }, + "title": "Gallery" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.help-mark", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "help-mark", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/help-mark", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-help-mark" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.icon-buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/help-mark/css/help-mark.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/help-mark/css/help-mark.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/help-mark/js/help-mark.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/help-mark/js/help-mark.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/help-mark/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-help-mark", + "tags": [ + "sf-help-mark" + ] + }, + "title": "Help mark" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.icon-buttons", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "icon-buttons", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-icon-buttons" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.icon-buttons", + "smart.close", + "smart.icons", + "utility.pointer-events" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/css/icon-buttons.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/css/icon-buttons.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/js/icon-buttons.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/js/icon-buttons.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icon-buttons/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-icon-buttons", + "tags": [ + "sf-icon-button" + ] + }, + "title": "Icon Buttons" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.icons", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "icons", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icons", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-icons" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icons/js/icons.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icons/js/icons.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/icons/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-icons", + "tags": [ + "sf-icon" + ] + }, + "title": "Icons" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.inline-editor", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "inline-editor", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inline-editor", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-inline-editor" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inline-editor/css/inline-editor.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inline-editor/css/inline-editor.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inline-editor/js/inline-editor.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inline-editor/js/inline-editor.min.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-inline-editor", + "tags": [ + "sf-inline-editor" + ] + }, + "title": "Inline editor" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.inputs", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "inputs", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-inputs" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.inputs", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/css/inputs.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/css/inputs.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/js/inputs.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/js/inputs.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/inputs/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-inputs", + "tags": [ + "sf-input" + ] + }, + "title": "Inputs" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.list-item", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "list-item", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/list-item", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-list-item" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.avatars", + "component.checkbox", + "component.dropdown", + "component.icons", + "component.tags" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/list-item/js/list-item.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/list-item/js/list-item.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/list-item/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-list-item", + "tags": [ + "sf-list-item" + ] + }, + "title": "List Item" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.modal", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "modal", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/modal", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-modal" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icon-buttons", + "component.modal" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/modal/js/modal.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/modal/js/modal.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/modal/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-modal", + "tags": [ + "sf-modal" + ] + }, + "title": "Modal" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.page-header", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "page-header", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/page-header", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-page-header" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.badges", + "smart.icon-buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/page-header/js/page-header.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/page-header/js/page-header.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/page-header/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-page-header", + "tags": [ + "sf-page-header" + ] + }, + "title": "Page header" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.pagination", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "pagination", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/pagination", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-pagination" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.pagination", + "smart.buttons", + "smart.checkbox", + "smart.dropdown", + "smart.icon-buttons", + "smart.inputs", + "smart.list-item", + "smart.spinner" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/pagination/js/pagination.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/pagination/js/pagination.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/pagination/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-pagination", + "tags": [ + "sf-pagination" + ] + }, + "title": "Pagination" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.popover", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "popover", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-popover" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover/css/popover.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover/css/popover.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover/js/popover.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover/js/popover.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/popover/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-popover", + "tags": [ + "sf-popover" + ] + }, + "title": "Popover" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.profile-picker", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "profile-picker", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-picker", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-profile-picker" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-picker/css/profile-picker.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-picker/css/profile-picker.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-picker/js/profile-picker.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-picker/js/profile-picker.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/profile-picker/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-profile-picker", + "tags": [ + "sf-profile-picker" + ] + }, + "title": "Profile picker" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.progress-bar", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "progress-bar", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-bar", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-progress-bar" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.progress-bar" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-bar/js/progress-bar.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-bar/js/progress-bar.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-bar/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-progress-bar", + "tags": [ + "sf-progress-bar" + ] + }, + "title": "Progress Bar" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.progress-scale", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "progress-scale", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-scale", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-progress-scale" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.progress-scale" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-scale/js/progress-scale.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-scale/js/progress-scale.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/progress-scale/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-progress-scale", + "tags": [ + "sf-progress-scale" + ] + }, + "title": "Progress Scale" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.radio", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "radio", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/radio", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-radio" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons", + "component.radio" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/radio/js/radio.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/radio/js/radio.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/radio/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-radio", + "tags": [ + "sf-radio" + ] + }, + "title": "Radio" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.range-slider", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "range-slider", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/range-slider", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-range-slider" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.range-slider" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/range-slider/js/range-slider.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/range-slider/js/range-slider.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/range-slider/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-range-slider", + "tags": [ + "sf-range-slider" + ] + }, + "title": "Range Slider" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.reference-link", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "reference-link", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/reference-link", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-reference-link" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons", + "component.reference-link", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/reference-link/js/reference-link.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/reference-link/js/reference-link.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/reference-link/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-reference-link", + "tags": [ + "sf-reference-link" + ] + }, + "title": "Reference Link" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.resizer", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "resizer", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/resizer", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-resizer" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/resizer/css/resizer.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/resizer/css/resizer.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/resizer/js/resizer.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/resizer/js/resizer.min.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-resizer", + "tags": [ + "sf-resizer" + ] + }, + "title": "Resizer" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.skeleton", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "skeleton", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/skeleton", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-skeleton" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.skeleton" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/skeleton/js/skeleton.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/skeleton/js/skeleton.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/skeleton/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-skeleton", + "tags": [ + "sf-skeleton" + ] + }, + "title": "Skeleton" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.slider", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "slider", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/slider", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-slider" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.slider", + "smart.icon-buttons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/slider/js/slider.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/slider/js/slider.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/slider/template/default/index.html", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/slider/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-slider", + "tags": [ + "sf-slider" + ] + }, + "title": "Slider" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.sortable", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "sortable", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/sortable", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-sortable" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/sortable/css/sortable.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/sortable/css/sortable.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/sortable/js/sortable.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/sortable/js/sortable.min.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-sortable", + "tags": [ + "sf-sortable" + ] + }, + "title": "Sortable" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.spinner", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "spinner", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/spinner", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-spinner" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.spinner" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/spinner/js/spinner.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/spinner/js/spinner.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/spinner/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-spinner", + "tags": [ + "sf-spinner" + ] + }, + "title": "Spinner" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.steps", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "steps", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/steps", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-steps" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons", + "component.step" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/steps/js/steps.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/steps/js/steps.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/steps/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-steps", + "tags": [ + "sf-steps" + ] + }, + "title": "Steps" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.switch", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "switch", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/switch", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-switch" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons", + "component.switch" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/switch/js/switch.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/switch/js/switch.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/switch/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-switch", + "tags": [ + "sf-switch" + ] + }, + "title": "Switch" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.tabs", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "tabs", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-tabs" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.tabs", + "smart.buttons", + "smart.checkbox", + "smart.context-menu", + "smart.icon-buttons", + "smart.sortable" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/css/tabs.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/css/tabs.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/js/tabs.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/js/tabs.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tabs/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-tabs", + "tags": [ + "sf-tabs" + ] + }, + "title": "Tabs" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.tags", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "tags", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-tags" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [ + "component.avatars", + "component.dot", + "component.icon-buttons", + "component.tags", + "smart.icon-buttons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/css/tags.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/css/tags.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/js/tags.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/js/tags.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tags/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-tags", + "tags": [ + "sf-tag" + ] + }, + "title": "Tags" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.textarea", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "textarea", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/textarea", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-textarea" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.textarea" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/textarea/js/textarea.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/textarea/js/textarea.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/textarea/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-textarea", + "tags": [ + "sf-textarea" + ] + }, + "title": "Textarea" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.theme-generator", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "theme-generator", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-theme-generator" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "smart.buttons", + "smart.color", + "smart.icon-buttons", + "smart.icons", + "smart.inputs" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator/css/theme-generator.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator/css/theme-generator.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator/js/theme-generator.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator/js/theme-generator.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator/js/theme-generator.min.js.LICENSE.txt", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/theme-generator/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-theme-generator", + "tags": [ + "sf-theme-generator" + ] + }, + "title": "Theme generator" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.toast", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "toast", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toast", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-toast" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.buttons", + "component.close", + "component.toast", + "smart.icon-buttons", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toast/js/toast.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toast/js/toast.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toast/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-toast", + "tags": [ + "sf-toast" + ] + }, + "title": "Toast" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.toggle", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "toggle", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toggle", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-toggle" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icons", + "component.toggle" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toggle/js/toggle.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toggle/js/toggle.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toggle/template/default/index.html", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/toggle/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-toggle", + "tags": [ + "sf-toggle" + ] + }, + "title": "Toggle" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.tooltip", + "kind": "smart-component", + "lifecycle": "released", + "name": "tooltip", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tooltip", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-tooltip" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.tooltip" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tooltip/js/tooltip.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tooltip/js/tooltip.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tooltip/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-tooltip", + "tags": [ + "sf-tooltip" + ] + }, + "title": "Tooltip" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.tree", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "tree", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-tree" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.tree", + "smart.tree-item" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree/css/tree.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree/css/tree.min.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree/js/tree.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree/js/tree.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree/template/default.css", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree/template/default.js" + ], + "declared": { + "css": true, + "js": true + }, + "rule_name": "cl-tree", + "tags": [ + "sf-tree" + ] + }, + "title": "Tree" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "smart.tree-item", + "kind": "smart-component", + "lifecycle": "experimental", + "name": "tree-item", + "owner": "simai/ui", + "provenance": { + "commit": "106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree-item", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#name=cl-tree-item" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [ + "component.icon-buttons", + "component.tree-item", + "smart.icons" + ], + "runtime": { + "asset_paths": [ + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree-item/js/tree-item.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree-item/js/tree-item.min.js", + "simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/tree-item/template/default.js" + ], + "declared": { + "css": false, + "js": true + }, + "rule_name": "cl-tree-item", + "tags": [ + "sf-tree-item" + ] + }, + "title": "Tree Item" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.accent-color", + "kind": "utility", + "lifecycle": "released", + "name": "accent-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=accent-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/accent-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/accent-color", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "accent-color/default", + "accent-color/hover" + ] + }, + "title": "Accent Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.align-content", + "kind": "utility", + "lifecycle": "released", + "name": "align-content", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=align-content", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/align-content" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/align-content", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "align-content/default", + "align-content/lg", + "align-content/md", + "align-content/sm", + "align-content/xl", + "align-content/xxl" + ] + }, + "title": "Align Content" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.align-items", + "kind": "utility", + "lifecycle": "released", + "name": "align-items", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=align-items", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/align-items" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/align-items", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "align-items/default", + "align-items/lg", + "align-items/md", + "align-items/sm", + "align-items/xl", + "align-items/xxl" + ] + }, + "title": "Align Items" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.align-self", + "kind": "utility", + "lifecycle": "released", + "name": "align-self", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=align-self", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/align-self" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/align-self", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "align-self/default", + "align-self/lg", + "align-self/md", + "align-self/sm", + "align-self/xl", + "align-self/xxl" + ] + }, + "title": "Align Self" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.animation", + "kind": "utility", + "lifecycle": "released", + "name": "animation", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=animation", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/animation" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/animation", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "animation/default" + ] + }, + "title": "Animation" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.animation-duration", + "kind": "utility", + "lifecycle": "released", + "name": "animation-duration", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=animation-duration", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/animation-duration" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/animation-duration", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "animation-duration/default" + ] + }, + "title": "Animation Duration" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.appearance", + "kind": "utility", + "lifecycle": "released", + "name": "appearance", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=appearance", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/appearance" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/appearance", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "appearance/default" + ] + }, + "title": "Appearance" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.aspect-ratio", + "kind": "utility", + "lifecycle": "released", + "name": "aspect-ratio", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=aspect-ratio", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/aspect-ratio" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/aspect-ratio", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "aspect-ratio/default", + "aspect-ratio/lg", + "aspect-ratio/md", + "aspect-ratio/sm", + "aspect-ratio/xl", + "aspect-ratio/xxl" + ] + }, + "title": "Aspect Ratio" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filer-hue-rotate", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filer-hue-rotate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filer-hue-rotate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filer-hue-rotate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filer-hue-rotate", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filer-hue-rotate/default", + "backdrop-filer-hue-rotate/hover" + ] + }, + "title": "Backdrop Filer Hue Rotate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-blur", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-blur", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-blur", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-blur" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-blur", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-blur/default", + "backdrop-filter-blur/hover" + ] + }, + "title": "Backdrop Filter Blur" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-brightness", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-brightness", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-brightness", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-brightness" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-brightness", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-brightness/default", + "backdrop-filter-brightness/hover" + ] + }, + "title": "Backdrop Filter Brightness" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-contrast", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-contrast", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-contrast", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-contrast" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-contrast", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-contrast/default", + "backdrop-filter-contrast/hover" + ] + }, + "title": "Backdrop Filter Contrast" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-grayscale", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-grayscale", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-grayscale", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-grayscale" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-grayscale", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-grayscale/default", + "backdrop-filter-grayscale/hover" + ] + }, + "title": "Backdrop Filter Grayscale" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-invert", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-invert", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-invert", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-invert" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-invert", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-invert/default", + "backdrop-filter-invert/hover" + ] + }, + "title": "Backdrop Filter Invert" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-opacity", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-opacity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-opacity", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-opacity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-opacity", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-opacity/default", + "backdrop-filter-opacity/hover" + ] + }, + "title": "Backdrop Filter Opacity" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-saturate", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-saturate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-saturate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-saturate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-saturate", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-saturate/default", + "backdrop-filter-saturate/hover" + ] + }, + "title": "Backdrop Filter Saturate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.backdrop-filter-sepia", + "kind": "utility", + "lifecycle": "released", + "name": "backdrop-filter-sepia", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=backdrop-filter-sepia", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/backdrop-filter-sepia" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/backdrop-filter-sepia", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "backdrop-filter-sepia/default", + "backdrop-filter-sepia/hover" + ] + }, + "title": "Backdrop Filter Sepia" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-attachment", + "kind": "utility", + "lifecycle": "released", + "name": "background-attachment", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-attachment", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-attachment" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-attachment", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-attachment/default", + "background-attachment/lg", + "background-attachment/md", + "background-attachment/sm", + "background-attachment/xl", + "background-attachment/xxl" + ] + }, + "title": "Background Attachment" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-clip", + "kind": "utility", + "lifecycle": "released", + "name": "background-clip", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-clip", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-clip" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-clip", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-clip/default", + "background-clip/lg", + "background-clip/md", + "background-clip/sm", + "background-clip/xl", + "background-clip/xxl" + ] + }, + "title": "Background Clip" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-color", + "kind": "utility", + "lifecycle": "released", + "name": "background-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-color", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "background-color/default" + ] + }, + "title": "Background Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-color-brand", + "kind": "utility", + "lifecycle": "released", + "name": "background-color-brand", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-color-brand", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-color-brand" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-color-brand", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "background-color-brand/default", + "background-color-brand/hover" + ] + }, + "title": "Background Color Brand" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-gradient", + "kind": "utility", + "lifecycle": "released", + "name": "background-gradient", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-gradient", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-gradient" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-gradient", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "background-gradient/default" + ] + }, + "title": "Background Gradient" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-origin", + "kind": "utility", + "lifecycle": "released", + "name": "background-origin", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-origin", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-origin" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-origin", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-origin/default", + "background-origin/lg", + "background-origin/md", + "background-origin/sm", + "background-origin/xl", + "background-origin/xxl" + ] + }, + "title": "Background Origin" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-position", + "kind": "utility", + "lifecycle": "released", + "name": "background-position", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-position", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-position" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-position", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-position/default", + "background-position/lg", + "background-position/md", + "background-position/sm", + "background-position/xl", + "background-position/xxl" + ] + }, + "title": "Background Position" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-repeat", + "kind": "utility", + "lifecycle": "released", + "name": "background-repeat", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-repeat", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-repeat" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-repeat", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-repeat/default", + "background-repeat/lg", + "background-repeat/md", + "background-repeat/sm", + "background-repeat/xl", + "background-repeat/xxl" + ] + }, + "title": "Background Repeat" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-size", + "kind": "utility", + "lifecycle": "released", + "name": "background-size", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-size", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-size" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-size", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-size/default", + "background-size/lg", + "background-size/md", + "background-size/sm", + "background-size/xl", + "background-size/xxl" + ] + }, + "title": "Background Size" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.background-size-ext", + "kind": "utility", + "lifecycle": "released", + "name": "background-size-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=background-size-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/background-size-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/background-size-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "background-size-ext/default", + "background-size-ext/lg", + "background-size-ext/md", + "background-size-ext/sm", + "background-size-ext/xl", + "background-size-ext/xxl" + ] + }, + "title": "Background Size Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.border-collapse", + "kind": "utility", + "lifecycle": "released", + "name": "border-collapse", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=border-collapse", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/border-collapse" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/border-collapse", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "border-collapse/default" + ] + }, + "title": "Border Collapse" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.border-color", + "kind": "utility", + "lifecycle": "released", + "name": "border-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=border-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/border-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/border-color", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "border-color/active", + "border-color/default", + "border-color/focus", + "border-color/hover" + ] + }, + "title": "Border Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.border-radius", + "kind": "utility", + "lifecycle": "released", + "name": "border-radius", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=border-radius", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/border-radius" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/border-radius", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "border-radius/default", + "border-radius/lg", + "border-radius/md", + "border-radius/sm", + "border-radius/xl", + "border-radius/xxl" + ] + }, + "title": "Border Radius" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.border-spacing", + "kind": "utility", + "lifecycle": "released", + "name": "border-spacing", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=border-spacing", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/border-spacing" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/border-spacing", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "border-spacing/default" + ] + }, + "title": "Border Spacing" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.border-style", + "kind": "utility", + "lifecycle": "released", + "name": "border-style", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=border-style", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/border-style" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/border-style", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "border-style/default" + ] + }, + "title": "Border Style" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.border-width", + "kind": "utility", + "lifecycle": "released", + "name": "border-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=border-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/border-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/border-width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "border-width/default", + "border-width/lg", + "border-width/md", + "border-width/sm", + "border-width/xl", + "border-width/xxl" + ] + }, + "title": "Border Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.box-decoration-break", + "kind": "utility", + "lifecycle": "released", + "name": "box-decoration-break", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=box-decoration-break", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/box-decoration-break" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/box-decoration-break", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "box-decoration-break/default" + ] + }, + "title": "Box Decoration Break" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.box-shadow", + "kind": "utility", + "lifecycle": "released", + "name": "box-shadow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=box-shadow", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/box-shadow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/box-shadow", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "box-shadow/default", + "box-shadow/hover" + ] + }, + "title": "Box Shadow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.box-shadow-color", + "kind": "utility", + "lifecycle": "released", + "name": "box-shadow-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=box-shadow-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/box-shadow-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/box-shadow-color", + "plain_asset_count": 9, + "rule_count": 3, + "rule_names": [ + "box-shadow-color/active", + "box-shadow-color/default", + "box-shadow-color/hover" + ] + }, + "title": "Box Shadow Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.box-sizing", + "kind": "utility", + "lifecycle": "released", + "name": "box-sizing", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=box-sizing", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/box-sizing" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/box-sizing", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "box-sizing/default" + ] + }, + "title": "Box Sizing" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.break-after", + "kind": "utility", + "lifecycle": "released", + "name": "break-after", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=break-after", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/break-after" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/break-after", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "break-after/default", + "break-after/lg", + "break-after/md", + "break-after/sm", + "break-after/xl", + "break-after/xxl" + ] + }, + "title": "Break After" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.break-before", + "kind": "utility", + "lifecycle": "released", + "name": "break-before", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=break-before", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/break-before" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/break-before", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "break-before/default", + "break-before/lg", + "break-before/md", + "break-before/sm", + "break-before/xl", + "break-before/xxl" + ] + }, + "title": "Break Before" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.break-inside", + "kind": "utility", + "lifecycle": "released", + "name": "break-inside", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=break-inside", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/break-inside" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/break-inside", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "break-inside/default", + "break-inside/lg", + "break-inside/md", + "break-inside/sm", + "break-inside/xl", + "break-inside/xxl" + ] + }, + "title": "Break Inside" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.caret-color", + "kind": "utility", + "lifecycle": "released", + "name": "caret-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=caret-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/caret-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/caret-color", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "caret-color/default" + ] + }, + "title": "Caret Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.clear", + "kind": "utility", + "lifecycle": "released", + "name": "clear", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=clear", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/clear" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/clear", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "clear/default", + "clear/lg", + "clear/md", + "clear/sm", + "clear/xl", + "clear/xxl" + ] + }, + "title": "Clear" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.column", + "kind": "utility", + "lifecycle": "released", + "name": "column", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=column", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/column" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/column", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "column/default", + "column/lg", + "column/md", + "column/sm", + "column/xl", + "column/xxl" + ] + }, + "title": "Column" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.column-gap", + "kind": "utility", + "lifecycle": "released", + "name": "column-gap", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=column-gap", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/column-gap" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/column-gap", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "column-gap/default", + "column-gap/lg", + "column-gap/md", + "column-gap/sm", + "column-gap/xl", + "column-gap/xxl" + ] + }, + "title": "Column Gap" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.container", + "kind": "utility", + "lifecycle": "released", + "name": "container", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=container", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/container" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/container", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "container/default", + "container/lg", + "container/md", + "container/sm", + "container/xl", + "container/xxl" + ] + }, + "title": "Container" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.content", + "kind": "utility", + "lifecycle": "released", + "name": "content", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=content", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/content" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/content", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "content/default" + ] + }, + "title": "Content" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.cursor", + "kind": "utility", + "lifecycle": "released", + "name": "cursor", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=cursor", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/cursor" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/cursor", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "cursor/default" + ] + }, + "title": "Cursor" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [ + "simai/ui-play@0a393e85f0c6a137ae024f442dd52cc34d5f0508:examples/layout/display/index.html" + ], + "id": "utility.display", + "kind": "utility", + "lifecycle": "released", + "name": "display", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=display", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/display", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "display/default", + "display/lg", + "display/md", + "display/sm", + "display/xl", + "display/xxl" + ] + }, + "title": "Display" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.display-print", + "kind": "utility", + "lifecycle": "released", + "name": "display-print", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=display-print", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/display-print" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/display-print", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "display-print/default" + ] + }, + "title": "Display Print" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.divider-color", + "kind": "utility", + "lifecycle": "released", + "name": "divider-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=divider-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/divider-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/divider-color", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "divider-color/default", + "divider-color/hover" + ] + }, + "title": "Divider Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.divider-opacity", + "kind": "utility", + "lifecycle": "released", + "name": "divider-opacity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=divider-opacity", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/divider-opacity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/divider-opacity", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "divider-opacity/default" + ] + }, + "title": "Divider Opacity" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.divider-style", + "kind": "utility", + "lifecycle": "released", + "name": "divider-style", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=divider-style", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/divider-style" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/divider-style", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "divider-style/default" + ] + }, + "title": "Divider Style" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.divider-width", + "kind": "utility", + "lifecycle": "released", + "name": "divider-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=divider-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/divider-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/divider-width", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "divider-width/default" + ] + }, + "title": "Divider Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.drop-shadow", + "kind": "utility", + "lifecycle": "released", + "name": "drop-shadow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=drop-shadow", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/drop-shadow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/drop-shadow", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "drop-shadow/default", + "drop-shadow/hover" + ] + }, + "title": "Drop Shadow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.drop-shadow-color", + "kind": "utility", + "lifecycle": "released", + "name": "drop-shadow-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=drop-shadow-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/drop-shadow-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/drop-shadow-color", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "drop-shadow-color/default", + "drop-shadow-color/hover" + ] + }, + "title": "Drop Shadow Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.element-position", + "kind": "utility", + "lifecycle": "released", + "name": "element-position", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=element-position", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/element-position" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/element-position", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "element-position/default", + "element-position/lg", + "element-position/md", + "element-position/sm", + "element-position/xl", + "element-position/xxl" + ] + }, + "title": "Element Position" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.element-position-ext", + "kind": "utility", + "lifecycle": "released", + "name": "element-position-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=element-position-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/element-position-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/element-position-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "element-position-ext/default", + "element-position-ext/lg", + "element-position-ext/md", + "element-position-ext/sm", + "element-position-ext/xl", + "element-position-ext/xxl" + ] + }, + "title": "Element Position Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.elevation", + "kind": "utility", + "lifecycle": "released", + "name": "elevation", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=elevation", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/elevation" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/elevation", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "elevation/default" + ] + }, + "title": "Elevation" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.fill", + "kind": "utility", + "lifecycle": "released", + "name": "fill", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=fill", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/fill" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/fill", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "fill/default" + ] + }, + "title": "Fill" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.fill-brand", + "kind": "utility", + "lifecycle": "released", + "name": "fill-brand", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=fill-brand", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/fill-brand" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/fill-brand", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "fill-brand/default", + "fill-brand/hover" + ] + }, + "title": "Fill Brand" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.fill-rule", + "kind": "utility", + "lifecycle": "released", + "name": "fill-rule", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=fill-rule", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/fill-rule" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/fill-rule", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "fill-rule/default" + ] + }, + "title": "Fill Rule" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-blur", + "kind": "utility", + "lifecycle": "released", + "name": "filter-blur", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-blur", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-blur" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-blur", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-blur/default", + "filter-blur/hover" + ] + }, + "title": "Filter Blur" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-brightness", + "kind": "utility", + "lifecycle": "released", + "name": "filter-brightness", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-brightness", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-brightness" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-brightness", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-brightness/default", + "filter-brightness/hover" + ] + }, + "title": "Filter Brightness" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-contrast", + "kind": "utility", + "lifecycle": "released", + "name": "filter-contrast", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-contrast", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-contrast" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-contrast", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-contrast/default", + "filter-contrast/hover" + ] + }, + "title": "Filter Contrast" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-grayscale", + "kind": "utility", + "lifecycle": "released", + "name": "filter-grayscale", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-grayscale", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-grayscale" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-grayscale", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-grayscale/default", + "filter-grayscale/hover" + ] + }, + "title": "Filter Grayscale" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-hue-rotate", + "kind": "utility", + "lifecycle": "released", + "name": "filter-hue-rotate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-hue-rotate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-hue-rotate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-hue-rotate", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-hue-rotate/default", + "filter-hue-rotate/hover" + ] + }, + "title": "Filter Hue Rotate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-invert", + "kind": "utility", + "lifecycle": "released", + "name": "filter-invert", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-invert", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-invert" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-invert", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-invert/default", + "filter-invert/hover" + ] + }, + "title": "Filter Invert" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-opacity", + "kind": "utility", + "lifecycle": "released", + "name": "filter-opacity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-opacity", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-opacity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-opacity", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-opacity/default", + "filter-opacity/hover" + ] + }, + "title": "Filter Opacity" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-saturate", + "kind": "utility", + "lifecycle": "released", + "name": "filter-saturate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-saturate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-saturate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-saturate", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-saturate/default", + "filter-saturate/hover" + ] + }, + "title": "Filter Saturate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.filter-sepia", + "kind": "utility", + "lifecycle": "released", + "name": "filter-sepia", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=filter-sepia", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/filter-sepia" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/filter-sepia", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "filter-sepia/default", + "filter-sepia/hover" + ] + }, + "title": "Filter Sepia" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex", + "kind": "utility", + "lifecycle": "released", + "name": "flex", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex/default", + "flex/lg", + "flex/md", + "flex/sm", + "flex/xl", + "flex/xxl" + ] + }, + "title": "Flex" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-align", + "kind": "utility", + "lifecycle": "released", + "name": "flex-align", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-align", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-align" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-align", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-align/default", + "flex-align/lg", + "flex-align/md", + "flex-align/sm", + "flex-align/xl", + "flex-align/xxl" + ] + }, + "title": "Flex Align" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-basis", + "kind": "utility", + "lifecycle": "released", + "name": "flex-basis", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-basis", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-basis" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-basis", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-basis/default", + "flex-basis/lg", + "flex-basis/md", + "flex-basis/sm", + "flex-basis/xl", + "flex-basis/xxl" + ] + }, + "title": "Flex Basis" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-basis-ext", + "kind": "utility", + "lifecycle": "released", + "name": "flex-basis-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-basis-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-basis-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-basis-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-basis-ext/default", + "flex-basis-ext/lg", + "flex-basis-ext/md", + "flex-basis-ext/sm", + "flex-basis-ext/xl", + "flex-basis-ext/xxl" + ] + }, + "title": "Flex Basis Ext" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-direction", + "kind": "utility", + "lifecycle": "released", + "name": "flex-direction", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-direction", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-direction" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-direction", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-direction/default", + "flex-direction/lg", + "flex-direction/md", + "flex-direction/sm", + "flex-direction/xl", + "flex-direction/xxl" + ] + }, + "title": "Flex Direction" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-grow", + "kind": "utility", + "lifecycle": "released", + "name": "flex-grow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-grow", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-grow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-grow", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-grow/default", + "flex-grow/lg", + "flex-grow/md", + "flex-grow/sm", + "flex-grow/xl", + "flex-grow/xxl" + ] + }, + "title": "Flex Grow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-shrink", + "kind": "utility", + "lifecycle": "released", + "name": "flex-shrink", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-shrink", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-shrink" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-shrink", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-shrink/default", + "flex-shrink/lg", + "flex-shrink/md", + "flex-shrink/sm", + "flex-shrink/xl", + "flex-shrink/xxl" + ] + }, + "title": "Flex Shrink" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.flex-wrap", + "kind": "utility", + "lifecycle": "released", + "name": "flex-wrap", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=flex-wrap", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/flex-wrap" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/flex-wrap", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "flex-wrap/default", + "flex-wrap/lg", + "flex-wrap/md", + "flex-wrap/sm", + "flex-wrap/xl", + "flex-wrap/xxl" + ] + }, + "title": "Flex Wrap" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.float", + "kind": "utility", + "lifecycle": "released", + "name": "float", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=float", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/float" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/float", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "float/default", + "float/lg", + "float/md", + "float/sm", + "float/xl", + "float/xxl" + ] + }, + "title": "Float" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-family", + "kind": "utility", + "lifecycle": "released", + "name": "font-family", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-family", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-family" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-family", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-family/default" + ] + }, + "title": "Font Family" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-size", + "kind": "utility", + "lifecycle": "released", + "name": "font-size", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-size", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-size" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-size", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-size/default" + ] + }, + "title": "Font Size" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-size-ext", + "kind": "utility", + "lifecycle": "released", + "name": "font-size-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-size-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-size-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-size-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "font-size-ext/default", + "font-size-ext/lg", + "font-size-ext/md", + "font-size-ext/sm", + "font-size-ext/xl", + "font-size-ext/xxl" + ] + }, + "title": "Font Size Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-smoothing", + "kind": "utility", + "lifecycle": "released", + "name": "font-smoothing", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-smoothing", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-smoothing" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-smoothing", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-smoothing/default" + ] + }, + "title": "Font Smoothing" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-style", + "kind": "utility", + "lifecycle": "released", + "name": "font-style", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-style", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-style" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-style", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-style/default" + ] + }, + "title": "Font Style" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-transform", + "kind": "utility", + "lifecycle": "released", + "name": "font-transform", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-transform", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-transform" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-transform", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-transform/default" + ] + }, + "title": "Font Transform" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-variant", + "kind": "utility", + "lifecycle": "released", + "name": "font-variant", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-variant", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-variant" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-variant", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-variant/default" + ] + }, + "title": "Font Variant" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-variant-numeric", + "kind": "utility", + "lifecycle": "released", + "name": "font-variant-numeric", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-variant-numeric", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-variant-numeric" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-variant-numeric", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "font-variant-numeric/default" + ] + }, + "title": "Font Variant Numeric" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.font-weight", + "kind": "utility", + "lifecycle": "released", + "name": "font-weight", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=font-weight", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/font-weight" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/font-weight", + "plain_asset_count": 21, + "rule_count": 7, + "rule_names": [ + "font-weight/default", + "font-weight/hover", + "font-weight/lg", + "font-weight/md", + "font-weight/sm", + "font-weight/xl", + "font-weight/xxl" + ] + }, + "title": "Font Weight" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.gap", + "kind": "utility", + "lifecycle": "released", + "name": "gap", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=gap", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gap" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/gap", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "gap/default", + "gap/lg", + "gap/md", + "gap/sm", + "gap/xl", + "gap/xxl" + ] + }, + "title": "Gap" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.gradient-color", + "kind": "utility", + "lifecycle": "released", + "name": "gradient-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=gradient-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gradient-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/gradient-color", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "gradient-color/default" + ] + }, + "title": "Gradient Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.gradient-stops", + "kind": "utility", + "lifecycle": "released", + "name": "gradient-stops", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=gradient-stops", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gradient-stops" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/gradient-stops", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "gradient-stops/default" + ] + }, + "title": "Gradient Stops" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.gradient-type", + "kind": "utility", + "lifecycle": "released", + "name": "gradient-type", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=gradient-type", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/gradient-type" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/gradient-type", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "gradient-type/default", + "gradient-type/lg", + "gradient-type/md", + "gradient-type/sm", + "gradient-type/xl", + "gradient-type/xxl" + ] + }, + "title": "Gradient Type" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-auto-columns", + "kind": "utility", + "lifecycle": "released", + "name": "grid-auto-columns", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-auto-columns", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-auto-columns" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-auto-columns", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-auto-columns/default", + "grid-auto-columns/lg", + "grid-auto-columns/md", + "grid-auto-columns/sm", + "grid-auto-columns/xl", + "grid-auto-columns/xxl" + ] + }, + "title": "Grid Auto Columns" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-auto-flow", + "kind": "utility", + "lifecycle": "released", + "name": "grid-auto-flow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-auto-flow", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-auto-flow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-auto-flow", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-auto-flow/default", + "grid-auto-flow/lg", + "grid-auto-flow/md", + "grid-auto-flow/sm", + "grid-auto-flow/xl", + "grid-auto-flow/xxl" + ] + }, + "title": "Grid Auto Flow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-auto-rows", + "kind": "utility", + "lifecycle": "released", + "name": "grid-auto-rows", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-auto-rows", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-auto-rows" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-auto-rows", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-auto-rows/default", + "grid-auto-rows/lg", + "grid-auto-rows/md", + "grid-auto-rows/sm", + "grid-auto-rows/xl", + "grid-auto-rows/xxl" + ] + }, + "title": "Grid Auto Rows" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-column", + "kind": "utility", + "lifecycle": "released", + "name": "grid-column", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-column", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-column" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-column", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-column/default", + "grid-column/lg", + "grid-column/md", + "grid-column/sm", + "grid-column/xl", + "grid-column/xxl" + ] + }, + "title": "Grid Column" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-column-end", + "kind": "utility", + "lifecycle": "released", + "name": "grid-column-end", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-column-end", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-column-end" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-column-end", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-column-end/default", + "grid-column-end/lg", + "grid-column-end/md", + "grid-column-end/sm", + "grid-column-end/xl", + "grid-column-end/xxl" + ] + }, + "title": "Grid Column End" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-column-start", + "kind": "utility", + "lifecycle": "released", + "name": "grid-column-start", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-column-start", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-column-start" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-column-start", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-column-start/default", + "grid-column-start/lg", + "grid-column-start/md", + "grid-column-start/sm", + "grid-column-start/xl", + "grid-column-start/xxl" + ] + }, + "title": "Grid Column Start" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-row", + "kind": "utility", + "lifecycle": "released", + "name": "grid-row", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-row", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-row" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-row", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-row/default", + "grid-row/lg", + "grid-row/md", + "grid-row/sm", + "grid-row/xl", + "grid-row/xxl" + ] + }, + "title": "Grid Row" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-row-end", + "kind": "utility", + "lifecycle": "released", + "name": "grid-row-end", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-row-end", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-row-end" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-row-end", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-row-end/default", + "grid-row-end/lg", + "grid-row-end/md", + "grid-row-end/sm", + "grid-row-end/xl", + "grid-row-end/xxl" + ] + }, + "title": "Grid Row End" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-row-start", + "kind": "utility", + "lifecycle": "released", + "name": "grid-row-start", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-row-start", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-row-start" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-row-start", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-row-start/default", + "grid-row-start/lg", + "grid-row-start/md", + "grid-row-start/sm", + "grid-row-start/xl", + "grid-row-start/xxl" + ] + }, + "title": "Grid Row Start" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-template-columns", + "kind": "utility", + "lifecycle": "released", + "name": "grid-template-columns", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-template-columns", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-template-columns" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-template-columns", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-template-columns/default", + "grid-template-columns/lg", + "grid-template-columns/md", + "grid-template-columns/sm", + "grid-template-columns/xl", + "grid-template-columns/xxl" + ] + }, + "title": "Grid Template Columns" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.grid-template-rows", + "kind": "utility", + "lifecycle": "released", + "name": "grid-template-rows", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=grid-template-rows", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/grid-template-rows" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/grid-template-rows", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "grid-template-rows/default", + "grid-template-rows/lg", + "grid-template-rows/md", + "grid-template-rows/sm", + "grid-template-rows/xl", + "grid-template-rows/xxl" + ] + }, + "title": "Grid Template Rows" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.headers", + "kind": "utility", + "lifecycle": "released", + "name": "headers", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=headers", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/headers" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/headers", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "headers/default" + ] + }, + "title": "Headers" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.height", + "kind": "utility", + "lifecycle": "released", + "name": "height", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=height", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/height" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/height", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "height/default", + "height/lg", + "height/md", + "height/sm", + "height/xl", + "height/xxl" + ] + }, + "title": "Height" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.height-ext", + "kind": "utility", + "lifecycle": "released", + "name": "height-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=height-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/height-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/height-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "height-ext/default", + "height-ext/lg", + "height-ext/md", + "height-ext/sm", + "height-ext/xl", + "height-ext/xxl" + ] + }, + "title": "Height Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.isolate", + "kind": "utility", + "lifecycle": "released", + "name": "isolate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=isolate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/isolate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/isolate", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "isolate/default", + "isolate/lg", + "isolate/md", + "isolate/sm", + "isolate/xl", + "isolate/xxl" + ] + }, + "title": "Isolate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.justify-content", + "kind": "utility", + "lifecycle": "released", + "name": "justify-content", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=justify-content", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/justify-content" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/justify-content", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "justify-content/default", + "justify-content/lg", + "justify-content/md", + "justify-content/sm", + "justify-content/xl", + "justify-content/xxl" + ] + }, + "title": "Justify Content" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.justify-items", + "kind": "utility", + "lifecycle": "released", + "name": "justify-items", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=justify-items", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/justify-items" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/justify-items", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "justify-items/default", + "justify-items/lg", + "justify-items/md", + "justify-items/sm", + "justify-items/xl", + "justify-items/xxl" + ] + }, + "title": "Justify Items" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.justify-self", + "kind": "utility", + "lifecycle": "released", + "name": "justify-self", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=justify-self", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/justify-self" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/justify-self", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "justify-self/default", + "justify-self/lg", + "justify-self/md", + "justify-self/sm", + "justify-self/xl", + "justify-self/xxl" + ] + }, + "title": "Justify Self" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.letter-spacing", + "kind": "utility", + "lifecycle": "released", + "name": "letter-spacing", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=letter-spacing", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/letter-spacing" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/letter-spacing", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "letter-spacing/default" + ] + }, + "title": "Letter Spacing" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.line-clamp", + "kind": "utility", + "lifecycle": "released", + "name": "line-clamp", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=line-clamp", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/line-clamp" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/line-clamp", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "line-clamp/default" + ] + }, + "title": "Line Clamp" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.line-height", + "kind": "utility", + "lifecycle": "released", + "name": "line-height", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=line-height", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/line-height" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/line-height", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "line-height/default", + "line-height/lg", + "line-height/md", + "line-height/sm", + "line-height/xl", + "line-height/xxl" + ] + }, + "title": "Line Height" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.list-style-position", + "kind": "utility", + "lifecycle": "released", + "name": "list-style-position", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=list-style-position", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/list-style-position" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/list-style-position", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "list-style-position/default" + ] + }, + "title": "List Style Position" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.list-style-type", + "kind": "utility", + "lifecycle": "released", + "name": "list-style-type", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=list-style-type", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/list-style-type" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/list-style-type", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "list-style-type/default" + ] + }, + "title": "List Style Type" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.margin", + "kind": "utility", + "lifecycle": "released", + "name": "margin", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=margin", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/margin" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/margin", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "margin/default", + "margin/lg", + "margin/md", + "margin/sm", + "margin/xl", + "margin/xxl" + ] + }, + "title": "Margin" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.margin-ext", + "kind": "utility", + "lifecycle": "released", + "name": "margin-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=margin-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/margin-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/margin-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "margin-ext/default", + "margin-ext/lg", + "margin-ext/md", + "margin-ext/sm", + "margin-ext/xl", + "margin-ext/xxl" + ] + }, + "title": "Margin Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-clip", + "kind": "utility", + "lifecycle": "released", + "name": "mask-clip", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-clip", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-clip" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-clip", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-clip/default" + ] + }, + "title": "Mask Clip" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-composite", + "kind": "utility", + "lifecycle": "released", + "name": "mask-composite", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-composite", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-composite" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-composite", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-composite/default" + ] + }, + "title": "Mask Composite" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-mode", + "kind": "utility", + "lifecycle": "released", + "name": "mask-mode", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-mode", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-mode" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-mode", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-mode/default" + ] + }, + "title": "Mask Mode" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-origin", + "kind": "utility", + "lifecycle": "released", + "name": "mask-origin", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-origin", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-origin" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-origin", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-origin/default" + ] + }, + "title": "Mask Origin" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-position", + "kind": "utility", + "lifecycle": "released", + "name": "mask-position", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-position", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-position" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-position", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-position/default" + ] + }, + "title": "Mask Position" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-repeat", + "kind": "utility", + "lifecycle": "released", + "name": "mask-repeat", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-repeat", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-repeat" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-repeat", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-repeat/default" + ] + }, + "title": "Mask Repeat" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-size", + "kind": "utility", + "lifecycle": "released", + "name": "mask-size", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-size", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-size" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-size", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-size/default" + ] + }, + "title": "Mask Size" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mask-type", + "kind": "utility", + "lifecycle": "released", + "name": "mask-type", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mask-type", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mask-type" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mask-type", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mask-type/default" + ] + }, + "title": "Mask Type" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.max-container", + "kind": "utility", + "lifecycle": "released", + "name": "max-container", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=max-container", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/max-container" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/max-container", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "max-container/default" + ] + }, + "title": "Max Container" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.max-height", + "kind": "utility", + "lifecycle": "released", + "name": "max-height", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=max-height", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/max-height" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/max-height", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "max-height/default", + "max-height/lg", + "max-height/md", + "max-height/sm", + "max-height/xl", + "max-height/xxl" + ] + }, + "title": "Max Height" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.max-height-ext", + "kind": "utility", + "lifecycle": "released", + "name": "max-height-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=max-height-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/max-height-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/max-height-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "max-height-ext/default", + "max-height-ext/lg", + "max-height-ext/md", + "max-height-ext/sm", + "max-height-ext/xl", + "max-height-ext/xxl" + ] + }, + "title": "Max Height Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.max-width", + "kind": "utility", + "lifecycle": "released", + "name": "max-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=max-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/max-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/max-width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "max-width/default", + "max-width/lg", + "max-width/md", + "max-width/sm", + "max-width/xl", + "max-width/xxl" + ] + }, + "title": "Max Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.max-width-ext", + "kind": "utility", + "lifecycle": "released", + "name": "max-width-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=max-width-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/max-width-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/max-width-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "max-width-ext/default", + "max-width-ext/lg", + "max-width-ext/md", + "max-width-ext/sm", + "max-width-ext/xl", + "max-width-ext/xxl" + ] + }, + "title": "Max Width Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.min-height", + "kind": "utility", + "lifecycle": "released", + "name": "min-height", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=min-height", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/min-height" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/min-height", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "min-height/default", + "min-height/lg", + "min-height/md", + "min-height/sm", + "min-height/xl", + "min-height/xxl" + ] + }, + "title": "Min Height" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.min-width", + "kind": "utility", + "lifecycle": "released", + "name": "min-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=min-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/min-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/min-width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "min-width/default", + "min-width/lg", + "min-width/md", + "min-width/sm", + "min-width/xl", + "min-width/xxl" + ] + }, + "title": "Min Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.mix-blend-mode", + "kind": "utility", + "lifecycle": "released", + "name": "mix-blend-mode", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=mix-blend-mode", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/mix-blend-mode" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/mix-blend-mode", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "mix-blend-mode/default" + ] + }, + "title": "Mix Blend Mode" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.object-fit", + "kind": "utility", + "lifecycle": "released", + "name": "object-fit", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=object-fit", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/object-fit" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/object-fit", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "object-fit/default", + "object-fit/lg", + "object-fit/md", + "object-fit/sm", + "object-fit/xl", + "object-fit/xxl" + ] + }, + "title": "Object Fit" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.object-position", + "kind": "utility", + "lifecycle": "released", + "name": "object-position", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=object-position", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/object-position" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/object-position", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "object-position/default", + "object-position/lg", + "object-position/md", + "object-position/sm", + "object-position/xl", + "object-position/xxl" + ] + }, + "title": "Object Position" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.offset", + "kind": "utility", + "lifecycle": "released", + "name": "offset", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=offset", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/offset" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/offset", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "offset/default", + "offset/lg", + "offset/md", + "offset/sm", + "offset/xl", + "offset/xxl" + ] + }, + "title": "Offset" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.opacity", + "kind": "utility", + "lifecycle": "released", + "name": "opacity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=opacity", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/opacity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/opacity", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "opacity/default", + "opacity/hover" + ] + }, + "title": "Opacity" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.order", + "kind": "utility", + "lifecycle": "released", + "name": "order", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=order", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/order" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/order", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "order/default", + "order/lg", + "order/md", + "order/sm", + "order/xl", + "order/xxl" + ] + }, + "title": "Order" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.outline-color", + "kind": "utility", + "lifecycle": "released", + "name": "outline-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=outline-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/outline-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/outline-color", + "plain_asset_count": 15, + "rule_count": 5, + "rule_names": [ + "outline-color/active", + "outline-color/default", + "outline-color/focus", + "outline-color/focus-visible", + "outline-color/hover" + ] + }, + "title": "Outline Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.outline-offset", + "kind": "utility", + "lifecycle": "released", + "name": "outline-offset", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=outline-offset", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/outline-offset" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/outline-offset", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "outline-offset/default" + ] + }, + "title": "Outline Offset" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.outline-style", + "kind": "utility", + "lifecycle": "released", + "name": "outline-style", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=outline-style", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/outline-style" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/outline-style", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "outline-style/default" + ] + }, + "title": "Outline Style" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.outline-width", + "kind": "utility", + "lifecycle": "released", + "name": "outline-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=outline-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/outline-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/outline-width", + "plain_asset_count": 9, + "rule_count": 3, + "rule_names": [ + "outline-width/default", + "outline-width/focus", + "outline-width/focus-visible" + ] + }, + "title": "Outline Width" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.overflow", + "kind": "utility", + "lifecycle": "released", + "name": "overflow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=overflow", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overflow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/overflow", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "overflow/default", + "overflow/lg", + "overflow/md", + "overflow/sm", + "overflow/xl", + "overflow/xxl" + ] + }, + "title": "Overflow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.overscroll-behavior", + "kind": "utility", + "lifecycle": "released", + "name": "overscroll-behavior", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=overscroll-behavior", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/overscroll-behavior" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/overscroll-behavior", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "overscroll-behavior/default" + ] + }, + "title": "Overscroll Behavior" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.padding", + "kind": "utility", + "lifecycle": "released", + "name": "padding", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=padding", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/padding" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/padding", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "padding/default", + "padding/lg", + "padding/md", + "padding/sm", + "padding/xl", + "padding/xxl" + ] + }, + "title": "Padding" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.padding-ext", + "kind": "utility", + "lifecycle": "released", + "name": "padding-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=padding-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/padding-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/padding-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "padding-ext/default", + "padding-ext/lg", + "padding-ext/md", + "padding-ext/sm", + "padding-ext/xl", + "padding-ext/xxl" + ] + }, + "title": "Padding Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.pattern", + "kind": "utility", + "lifecycle": "released", + "name": "pattern", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=pattern", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/pattern" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/pattern", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "pattern/default", + "pattern/lg", + "pattern/md", + "pattern/sm", + "pattern/xl", + "pattern/xxl" + ] + }, + "title": "Pattern" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.place-content", + "kind": "utility", + "lifecycle": "released", + "name": "place-content", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=place-content", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/place-content" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/place-content", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "place-content/default", + "place-content/lg", + "place-content/md", + "place-content/sm", + "place-content/xl", + "place-content/xxl" + ] + }, + "title": "Place Content" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.place-items", + "kind": "utility", + "lifecycle": "released", + "name": "place-items", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=place-items", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/place-items" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/place-items", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "place-items/default", + "place-items/lg", + "place-items/md", + "place-items/sm", + "place-items/xl", + "place-items/xxl" + ] + }, + "title": "Place Items" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.place-self", + "kind": "utility", + "lifecycle": "released", + "name": "place-self", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=place-self", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/place-self" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/place-self", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "place-self/default", + "place-self/lg", + "place-self/md", + "place-self/sm", + "place-self/xl", + "place-self/xxl" + ] + }, + "title": "Place Self" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.placeholder-color", + "kind": "utility", + "lifecycle": "released", + "name": "placeholder-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=placeholder-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/placeholder-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/placeholder-color", + "plain_asset_count": 9, + "rule_count": 3, + "rule_names": [ + "placeholder-color/default", + "placeholder-color/focus", + "placeholder-color/hover" + ] + }, + "title": "Placeholder Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.placeholder-opacity", + "kind": "utility", + "lifecycle": "released", + "name": "placeholder-opacity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=placeholder-opacity", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/placeholder-opacity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/placeholder-opacity", + "plain_asset_count": 9, + "rule_count": 3, + "rule_names": [ + "placeholder-opacity/default", + "placeholder-opacity/focus", + "placeholder-opacity/hover" + ] + }, + "title": "Placeholder Opacity" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.pointer-events", + "kind": "utility", + "lifecycle": "released", + "name": "pointer-events", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=pointer-events", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/pointer-events" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/pointer-events", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "pointer-events/default" + ] + }, + "title": "Pointer Events" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.position", + "kind": "utility", + "lifecycle": "released", + "name": "position", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=position", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/position" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/position", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "position/default", + "position/lg", + "position/md", + "position/sm", + "position/xl", + "position/xxl" + ] + }, + "title": "Position" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.query-container", + "kind": "utility", + "lifecycle": "released", + "name": "query-container", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=query-container", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/query-container" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/query-container", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "query-container/default" + ] + }, + "title": "Query Container" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.query-layout", + "kind": "utility", + "lifecycle": "released", + "name": "query-layout", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=query-layout", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/query-layout" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/query-layout", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "query-layout/default" + ] + }, + "title": "Query Layout" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.resize", + "kind": "utility", + "lifecycle": "released", + "name": "resize", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=resize", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/resize" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/resize", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "resize/default" + ] + }, + "title": "Resize" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.ring-color", + "kind": "utility", + "lifecycle": "released", + "name": "ring-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=ring-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/ring-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/ring-color", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "ring-color/default", + "ring-color/focus", + "ring-color/focus-visible", + "ring-color/hover" + ] + }, + "title": "Ring Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.ring-inset", + "kind": "utility", + "lifecycle": "released", + "name": "ring-inset", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=ring-inset", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/ring-inset" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/ring-inset", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "ring-inset/default", + "ring-inset/focus", + "ring-inset/focus-visible", + "ring-inset/hover" + ] + }, + "title": "Ring Inset" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.ring-offset-color", + "kind": "utility", + "lifecycle": "released", + "name": "ring-offset-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=ring-offset-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/ring-offset-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/ring-offset-color", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "ring-offset-color/default", + "ring-offset-color/focus", + "ring-offset-color/focus-visible", + "ring-offset-color/hover" + ] + }, + "title": "Ring Offset Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.ring-offset-width", + "kind": "utility", + "lifecycle": "released", + "name": "ring-offset-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=ring-offset-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/ring-offset-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/ring-offset-width", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "ring-offset-width/default", + "ring-offset-width/focus", + "ring-offset-width/focus-visible", + "ring-offset-width/hover" + ] + }, + "title": "Ring Offset Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.ring-opacity", + "kind": "utility", + "lifecycle": "released", + "name": "ring-opacity", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=ring-opacity", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/ring-opacity" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/ring-opacity", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "ring-opacity/default", + "ring-opacity/focus", + "ring-opacity/focus-visible", + "ring-opacity/hover" + ] + }, + "title": "Ring Opacity" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.ring-width", + "kind": "utility", + "lifecycle": "released", + "name": "ring-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=ring-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/ring-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/ring-width", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "ring-width/default", + "ring-width/focus", + "ring-width/focus-visible", + "ring-width/hover" + ] + }, + "title": "Ring Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-backdrop-color", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-backdrop-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-backdrop-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-backdrop-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-backdrop-color", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-backdrop-color/default" + ] + }, + "title": "Scroll Backdrop Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-backdrop-radius", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-backdrop-radius", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-backdrop-radius", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-backdrop-radius" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-backdrop-radius", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-backdrop-radius/default" + ] + }, + "title": "Scroll Backdrop Radius" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-backdrop-width", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-backdrop-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-backdrop-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-backdrop-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-backdrop-width", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-backdrop-width/default" + ] + }, + "title": "Scroll Backdrop Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-behavior", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-behavior", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-behavior", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-behavior" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-behavior", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-behavior/default" + ] + }, + "title": "Scroll Behavior" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-hover", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-hover", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-hover", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-hover" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-hover", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-hover/default" + ] + }, + "title": "Scroll Hover" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-margin", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-margin", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-margin", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-margin" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-margin", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-margin/default" + ] + }, + "title": "Scroll Margin" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-margin-ext", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-margin-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-margin-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-margin-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-margin-ext", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-margin-ext/default" + ] + }, + "title": "Scroll Margin Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-padding", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-padding", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-padding", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-padding" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-padding", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-padding/default" + ] + }, + "title": "Scroll Padding" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-padding-ext", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-padding-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-padding-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-padding-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-padding-ext", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-padding-ext/default" + ] + }, + "title": "Scroll Padding Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-slider-color", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-slider-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-slider-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-slider-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-slider-color", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-slider-color/default" + ] + }, + "title": "Scroll Slider Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-slider-radius", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-slider-radius", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-slider-radius", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-slider-radius" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-slider-radius", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-slider-radius/default" + ] + }, + "title": "Scroll Slider Radius" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-slider-width", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-slider-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-slider-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-slider-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-slider-width", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-slider-width/default" + ] + }, + "title": "Scroll Slider Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-snap-align", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-snap-align", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-snap-align", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-snap-align" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-snap-align", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-snap-align/default" + ] + }, + "title": "Scroll Snap Align" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-snap-stop", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-snap-stop", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-snap-stop", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-snap-stop" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-snap-stop", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-snap-stop/default" + ] + }, + "title": "Scroll Snap Stop" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-snap-type", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-snap-type", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-snap-type", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-snap-type" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-snap-type", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-snap-type/default" + ] + }, + "title": "Scroll Snap Type" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.scroll-subtle", + "kind": "utility", + "lifecycle": "released", + "name": "scroll-subtle", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=scroll-subtle", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/scroll-subtle" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/scroll-subtle", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "scroll-subtle/default" + ] + }, + "title": "Scroll Subtle" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.space", + "kind": "utility", + "lifecycle": "released", + "name": "space", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=space", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/space" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/space", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "space/default", + "space/lg", + "space/md", + "space/sm", + "space/xl", + "space/xxl" + ] + }, + "title": "Space" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.sr-only", + "kind": "utility", + "lifecycle": "released", + "name": "sr-only", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=sr-only", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/sr-only" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/sr-only", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "sr-only/default" + ] + }, + "title": "Sr Only" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stripe", + "kind": "utility", + "lifecycle": "released", + "name": "stripe", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stripe", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stripe" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stripe", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "stripe/default", + "stripe/lg", + "stripe/md", + "stripe/sm", + "stripe/xl", + "stripe/xxl" + ] + }, + "title": "Stripe" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stripe-color", + "kind": "utility", + "lifecycle": "released", + "name": "stripe-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stripe-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stripe-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stripe-color", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "stripe-color/default" + ] + }, + "title": "Stripe Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stripe-width", + "kind": "utility", + "lifecycle": "released", + "name": "stripe-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stripe-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stripe-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stripe-width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "stripe-width/default", + "stripe-width/lg", + "stripe-width/md", + "stripe-width/sm", + "stripe-width/xl", + "stripe-width/xxl" + ] + }, + "title": "Stripe Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stroke-color", + "kind": "utility", + "lifecycle": "released", + "name": "stroke-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stroke-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stroke-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stroke-color", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "stroke-color/default", + "stroke-color/hover" + ] + }, + "title": "Stroke Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stroke-linecap", + "kind": "utility", + "lifecycle": "released", + "name": "stroke-linecap", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stroke-linecap", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stroke-linecap" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stroke-linecap", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "stroke-linecap/default" + ] + }, + "title": "Stroke Linecap" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stroke-linejoin", + "kind": "utility", + "lifecycle": "released", + "name": "stroke-linejoin", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stroke-linejoin", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stroke-linejoin" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stroke-linejoin", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "stroke-linejoin/default" + ] + }, + "title": "Stroke Linejoin" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.stroke-width", + "kind": "utility", + "lifecycle": "released", + "name": "stroke-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=stroke-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/stroke-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/stroke-width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "stroke-width/default", + "stroke-width/lg", + "stroke-width/md", + "stroke-width/sm", + "stroke-width/xl", + "stroke-width/xxl" + ] + }, + "title": "Stroke Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.svg-size", + "kind": "utility", + "lifecycle": "released", + "name": "svg-size", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=svg-size", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/svg-size" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/svg-size", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "svg-size/default", + "svg-size/lg", + "svg-size/md", + "svg-size/sm", + "svg-size/xl", + "svg-size/xxl" + ] + }, + "title": "Svg Size" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.table", + "kind": "utility", + "lifecycle": "released", + "name": "table", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=table", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/table" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/table", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "table/default" + ] + }, + "title": "Table" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.table-active", + "kind": "utility", + "lifecycle": "released", + "name": "table-active", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=table-active", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/table-active" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/table-active", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "table-active/default" + ] + }, + "title": "Table Active" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.table-border", + "kind": "utility", + "lifecycle": "released", + "name": "table-border", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=table-border", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/table-border" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/table-border", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "table-border/default" + ] + }, + "title": "Table Border" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.table-hover", + "kind": "utility", + "lifecycle": "released", + "name": "table-hover", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=table-hover", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/table-hover" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/table-hover", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "table-hover/default" + ] + }, + "title": "Table Hover" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.table-layout", + "kind": "utility", + "lifecycle": "released", + "name": "table-layout", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=table-layout", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/table-layout" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/table-layout", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "table-layout/default" + ] + }, + "title": "Table Layout" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.table-stripe", + "kind": "utility", + "lifecycle": "released", + "name": "table-stripe", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=table-stripe", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/table-stripe" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/table-stripe", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "table-stripe/default" + ] + }, + "title": "Table Stripe" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-align", + "kind": "utility", + "lifecycle": "released", + "name": "text-align", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-align", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-align" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-align", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "text-align/default", + "text-align/lg", + "text-align/md", + "text-align/sm", + "text-align/xl", + "text-align/xxl" + ] + }, + "title": "Text Align" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-color", + "kind": "utility", + "lifecycle": "released", + "name": "text-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-color", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "text-color/active", + "text-color/default", + "text-color/focus", + "text-color/hover" + ] + }, + "title": "Text Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-decoration", + "kind": "utility", + "lifecycle": "released", + "name": "text-decoration", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-decoration", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-decoration" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-decoration", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "text-decoration/active", + "text-decoration/default", + "text-decoration/focus", + "text-decoration/hover" + ] + }, + "title": "Text Decoration" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-decoration-color", + "kind": "utility", + "lifecycle": "released", + "name": "text-decoration-color", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-decoration-color", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-decoration-color" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-decoration-color", + "plain_asset_count": 12, + "rule_count": 4, + "rule_names": [ + "text-decoration-color/active", + "text-decoration-color/default", + "text-decoration-color/focus", + "text-decoration-color/hover" + ] + }, + "title": "Text Decoration Color" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-decoration-offset", + "kind": "utility", + "lifecycle": "released", + "name": "text-decoration-offset", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-decoration-offset", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-decoration-offset" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-decoration-offset", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "text-decoration-offset/default" + ] + }, + "title": "Text Decoration Offset" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-decoration-style", + "kind": "utility", + "lifecycle": "released", + "name": "text-decoration-style", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-decoration-style", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-decoration-style" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-decoration-style", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "text-decoration-style/default" + ] + }, + "title": "Text Decoration Style" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-decoration-thickness", + "kind": "utility", + "lifecycle": "released", + "name": "text-decoration-thickness", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-decoration-thickness", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-decoration-thickness" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-decoration-thickness", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "text-decoration-thickness/default" + ] + }, + "title": "Text Decoration Thickness" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-indent", + "kind": "utility", + "lifecycle": "released", + "name": "text-indent", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-indent", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-indent" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-indent", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "text-indent/default" + ] + }, + "title": "Text Indent" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-max-width", + "kind": "utility", + "lifecycle": "released", + "name": "text-max-width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-max-width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-max-width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-max-width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "text-max-width/default", + "text-max-width/lg", + "text-max-width/md", + "text-max-width/sm", + "text-max-width/xl", + "text-max-width/xxl" + ] + }, + "title": "Text Max Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-overflow", + "kind": "utility", + "lifecycle": "released", + "name": "text-overflow", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-overflow", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-overflow" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-overflow", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "text-overflow/default" + ] + }, + "title": "Text Overflow" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.text-wrap", + "kind": "utility", + "lifecycle": "released", + "name": "text-wrap", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=text-wrap", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/text-wrap" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/text-wrap", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "text-wrap/default" + ] + }, + "title": "Text Wrap" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.theme", + "kind": "utility", + "lifecycle": "released", + "name": "theme", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=theme", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/theme" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/theme", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "theme/default" + ] + }, + "title": "Theme" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.title", + "kind": "utility", + "lifecycle": "released", + "name": "title", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=title", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/title" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/title", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "title/default" + ] + }, + "title": "Title" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.touch-action", + "kind": "utility", + "lifecycle": "released", + "name": "touch-action", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=touch-action", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/touch-action" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/touch-action", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "touch-action/default" + ] + }, + "title": "Touch Action" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transform-origin", + "kind": "utility", + "lifecycle": "released", + "name": "transform-origin", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transform-origin", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transform-origin" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transform-origin", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "transform-origin/default" + ] + }, + "title": "Transform Origin" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transform-rotate", + "kind": "utility", + "lifecycle": "released", + "name": "transform-rotate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transform-rotate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transform-rotate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transform-rotate", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "transform-rotate/default", + "transform-rotate/hover" + ] + }, + "title": "Transform Rotate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transform-scale", + "kind": "utility", + "lifecycle": "released", + "name": "transform-scale", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transform-scale", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transform-scale" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transform-scale", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "transform-scale/default", + "transform-scale/hover" + ] + }, + "title": "Transform Scale" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transform-skew", + "kind": "utility", + "lifecycle": "released", + "name": "transform-skew", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transform-skew", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transform-skew" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transform-skew", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "transform-skew/default", + "transform-skew/hover" + ] + }, + "title": "Transform Skew" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transform-translate", + "kind": "utility", + "lifecycle": "released", + "name": "transform-translate", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transform-translate", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transform-translate" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transform-translate", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "transform-translate/default", + "transform-translate/hover" + ] + }, + "title": "Transform Translate" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transform-translate-ext", + "kind": "utility", + "lifecycle": "released", + "name": "transform-translate-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transform-translate-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transform-translate-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transform-translate-ext", + "plain_asset_count": 6, + "rule_count": 2, + "rule_names": [ + "transform-translate-ext/default", + "transform-translate-ext/hover" + ] + }, + "title": "Transform Translate Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transition-delay", + "kind": "utility", + "lifecycle": "released", + "name": "transition-delay", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transition-delay", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transition-delay" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transition-delay", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "transition-delay/default", + "transition-delay/lg", + "transition-delay/md", + "transition-delay/sm", + "transition-delay/xl", + "transition-delay/xxl" + ] + }, + "title": "Transition Delay" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transition-duration", + "kind": "utility", + "lifecycle": "released", + "name": "transition-duration", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transition-duration", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transition-duration" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transition-duration", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "transition-duration/default" + ] + }, + "title": "Transition Duration" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transition-property", + "kind": "utility", + "lifecycle": "released", + "name": "transition-property", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transition-property", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transition-property" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transition-property", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "transition-property/default", + "transition-property/lg", + "transition-property/md", + "transition-property/sm", + "transition-property/xl", + "transition-property/xxl" + ] + }, + "title": "Transition Property" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.transition-timing-function", + "kind": "utility", + "lifecycle": "released", + "name": "transition-timing-function", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=transition-timing-function", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/transition-timing-function" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/transition-timing-function", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "transition-timing-function/default" + ] + }, + "title": "Transition Timing Function" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.user-select", + "kind": "utility", + "lifecycle": "released", + "name": "user-select", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=user-select", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/user-select" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/user-select", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "user-select/default" + ] + }, + "title": "User Select" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.vertical-align", + "kind": "utility", + "lifecycle": "released", + "name": "vertical-align", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=vertical-align", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/vertical-align" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/vertical-align", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "vertical-align/default" + ] + }, + "title": "Vertical Align" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.visibility", + "kind": "utility", + "lifecycle": "released", + "name": "visibility", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=visibility", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/visibility" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/visibility", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "visibility/default", + "visibility/lg", + "visibility/md", + "visibility/sm", + "visibility/xl", + "visibility/xxl" + ] + }, + "title": "Visibility" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.white-space", + "kind": "utility", + "lifecycle": "released", + "name": "white-space", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=white-space", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/white-space" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/white-space", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "white-space/default" + ] + }, + "title": "White Space" + }, + { + "curated_for": [ + "recipe.admin.collection" + ], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.width", + "kind": "utility", + "lifecycle": "released", + "name": "width", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=width", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": true, + "status": "ready" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/width", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "width/default", + "width/lg", + "width/md", + "width/sm", + "width/xl", + "width/xxl" + ] + }, + "title": "Width" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.width-ext", + "kind": "utility", + "lifecycle": "released", + "name": "width-ext", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=width-ext", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/width-ext" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/width-ext", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "width-ext/default", + "width-ext/lg", + "width-ext/md", + "width-ext/sm", + "width-ext/xl", + "width-ext/xxl" + ] + }, + "title": "Width Ext" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.will-change", + "kind": "utility", + "lifecycle": "released", + "name": "will-change", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=will-change", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/will-change" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/will-change", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "will-change/default" + ] + }, + "title": "Will Change" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.word-break", + "kind": "utility", + "lifecycle": "released", + "name": "word-break", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=word-break", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/word-break" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/word-break", + "plain_asset_count": 3, + "rule_count": 1, + "rule_names": [ + "word-break/default" + ] + }, + "title": "Word Break" + }, + { + "curated_for": [], + "documentation_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md" + ], + "example_refs": [], + "id": "utility.z-index", + "kind": "utility", + "lifecycle": "released", + "name": "z-index", + "owner": "simai/ui", + "provenance": { + "commit": "a9636b60d3e330edc2736b41f3791ebf8d1be391", + "repository": "https://github.com/simai/ui", + "source_refs": [ + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/rule/rule.json#family=z-index", + "simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:distr/utility/z-index" + ], + "tag": null + }, + "readiness": { + "blockers": [], + "profiles": [ + "plain-assets-v1" + ], + "safe_to_suggest": false, + "status": "discoverable" + }, + "requires": [], + "runtime": { + "asset_root": "distr/utility/z-index", + "plain_asset_count": 18, + "rule_count": 6, + "rule_names": [ + "z-index/default", + "z-index/lg", + "z-index/md", + "z-index/sm", + "z-index/xl", + "z-index/xxl" + ] + }, + "title": "Z Index" + } + ], + "indexes": { + "blocked": [], + "by_kind": { + "component": [ + "component.accordion", + "component.admin-menu", + "component.alerts", + "component.avatars", + "component.badges", + "component.breadcrumbs", + "component.button-group", + "component.buttons", + "component.carousel", + "component.checkbox", + "component.clipboard", + "component.close", + "component.content-divider", + "component.context-menu", + "component.country-code", + "component.datepicker", + "component.doc", + "component.dot", + "component.download-file", + "component.dropdown", + "component.emoji", + "component.fab", + "component.featured-icon", + "component.file-preview", + "component.file-upload", + "component.flag", + "component.hide-show", + "component.highlight", + "component.icon-buttons", + "component.icons", + "component.inputs", + "component.kbd", + "component.link", + "component.menu", + "component.modal", + "component.outline", + "component.pagination", + "component.placeholder", + "component.progress-bar", + "component.progress-scale", + "component.quantity", + "component.radio", + "component.range-slider", + "component.reference-link", + "component.scrollbar", + "component.skeleton", + "component.slider", + "component.spinner", + "component.step", + "component.swiper", + "component.switch", + "component.tab", + "component.tabs", + "component.tags", + "component.textarea", + "component.theme", + "component.toast", + "component.toggle", + "component.tooltip", + "component.tree", + "component.tree-item", + "component.verification" + ], + "recipe": [ + "recipe.admin.collection" + ], + "smart-component": [ + "smart.alert", + "smart.avatar", + "smart.avatars", + "smart.badges", + "smart.breadcrumbs", + "smart.button-group", + "smart.buttons", + "smart.checkbox", + "smart.close", + "smart.color", + "smart.composition-overlay", + "smart.context-menu", + "smart.copy-button", + "smart.country-code", + "smart.datepicker", + "smart.download-file", + "smart.drawer", + "smart.dropdown", + "smart.empty-state", + "smart.file-preview", + "smart.file-upload", + "smart.gallery", + "smart.help-mark", + "smart.icon-buttons", + "smart.icons", + "smart.inline-editor", + "smart.inputs", + "smart.list-item", + "smart.modal", + "smart.page-header", + "smart.pagination", + "smart.popover", + "smart.profile-picker", + "smart.progress-bar", + "smart.progress-scale", + "smart.radio", + "smart.range-slider", + "smart.reference-link", + "smart.resizer", + "smart.skeleton", + "smart.slider", + "smart.sortable", + "smart.spinner", + "smart.steps", + "smart.switch", + "smart.tabs", + "smart.tags", + "smart.textarea", + "smart.theme-generator", + "smart.toast", + "smart.toggle", + "smart.tooltip", + "smart.tree", + "smart.tree-item" + ], + "utility": [ + "utility.accent-color", + "utility.align-content", + "utility.align-items", + "utility.align-self", + "utility.animation", + "utility.animation-duration", + "utility.appearance", + "utility.aspect-ratio", + "utility.backdrop-filer-hue-rotate", + "utility.backdrop-filter-blur", + "utility.backdrop-filter-brightness", + "utility.backdrop-filter-contrast", + "utility.backdrop-filter-grayscale", + "utility.backdrop-filter-invert", + "utility.backdrop-filter-opacity", + "utility.backdrop-filter-saturate", + "utility.backdrop-filter-sepia", + "utility.background-attachment", + "utility.background-clip", + "utility.background-color", + "utility.background-color-brand", + "utility.background-gradient", + "utility.background-origin", + "utility.background-position", + "utility.background-repeat", + "utility.background-size", + "utility.background-size-ext", + "utility.border-collapse", + "utility.border-color", + "utility.border-radius", + "utility.border-spacing", + "utility.border-style", + "utility.border-width", + "utility.box-decoration-break", + "utility.box-shadow", + "utility.box-shadow-color", + "utility.box-sizing", + "utility.break-after", + "utility.break-before", + "utility.break-inside", + "utility.caret-color", + "utility.clear", + "utility.column", + "utility.column-gap", + "utility.container", + "utility.content", + "utility.cursor", + "utility.display", + "utility.display-print", + "utility.divider-color", + "utility.divider-opacity", + "utility.divider-style", + "utility.divider-width", + "utility.drop-shadow", + "utility.drop-shadow-color", + "utility.element-position", + "utility.element-position-ext", + "utility.elevation", + "utility.fill", + "utility.fill-brand", + "utility.fill-rule", + "utility.filter-blur", + "utility.filter-brightness", + "utility.filter-contrast", + "utility.filter-grayscale", + "utility.filter-hue-rotate", + "utility.filter-invert", + "utility.filter-opacity", + "utility.filter-saturate", + "utility.filter-sepia", + "utility.flex", + "utility.flex-align", + "utility.flex-basis", + "utility.flex-basis-ext", + "utility.flex-direction", + "utility.flex-grow", + "utility.flex-shrink", + "utility.flex-wrap", + "utility.float", + "utility.font-family", + "utility.font-size", + "utility.font-size-ext", + "utility.font-smoothing", + "utility.font-style", + "utility.font-transform", + "utility.font-variant", + "utility.font-variant-numeric", + "utility.font-weight", + "utility.gap", + "utility.gradient-color", + "utility.gradient-stops", + "utility.gradient-type", + "utility.grid-auto-columns", + "utility.grid-auto-flow", + "utility.grid-auto-rows", + "utility.grid-column", + "utility.grid-column-end", + "utility.grid-column-start", + "utility.grid-row", + "utility.grid-row-end", + "utility.grid-row-start", + "utility.grid-template-columns", + "utility.grid-template-rows", + "utility.headers", + "utility.height", + "utility.height-ext", + "utility.isolate", + "utility.justify-content", + "utility.justify-items", + "utility.justify-self", + "utility.letter-spacing", + "utility.line-clamp", + "utility.line-height", + "utility.list-style-position", + "utility.list-style-type", + "utility.margin", + "utility.margin-ext", + "utility.mask-clip", + "utility.mask-composite", + "utility.mask-mode", + "utility.mask-origin", + "utility.mask-position", + "utility.mask-repeat", + "utility.mask-size", + "utility.mask-type", + "utility.max-container", + "utility.max-height", + "utility.max-height-ext", + "utility.max-width", + "utility.max-width-ext", + "utility.min-height", + "utility.min-width", + "utility.mix-blend-mode", + "utility.object-fit", + "utility.object-position", + "utility.offset", + "utility.opacity", + "utility.order", + "utility.outline-color", + "utility.outline-offset", + "utility.outline-style", + "utility.outline-width", + "utility.overflow", + "utility.overscroll-behavior", + "utility.padding", + "utility.padding-ext", + "utility.pattern", + "utility.place-content", + "utility.place-items", + "utility.place-self", + "utility.placeholder-color", + "utility.placeholder-opacity", + "utility.pointer-events", + "utility.position", + "utility.query-container", + "utility.query-layout", + "utility.resize", + "utility.ring-color", + "utility.ring-inset", + "utility.ring-offset-color", + "utility.ring-offset-width", + "utility.ring-opacity", + "utility.ring-width", + "utility.scroll-backdrop-color", + "utility.scroll-backdrop-radius", + "utility.scroll-backdrop-width", + "utility.scroll-behavior", + "utility.scroll-hover", + "utility.scroll-margin", + "utility.scroll-margin-ext", + "utility.scroll-padding", + "utility.scroll-padding-ext", + "utility.scroll-slider-color", + "utility.scroll-slider-radius", + "utility.scroll-slider-width", + "utility.scroll-snap-align", + "utility.scroll-snap-stop", + "utility.scroll-snap-type", + "utility.scroll-subtle", + "utility.space", + "utility.sr-only", + "utility.stripe", + "utility.stripe-color", + "utility.stripe-width", + "utility.stroke-color", + "utility.stroke-linecap", + "utility.stroke-linejoin", + "utility.stroke-width", + "utility.svg-size", + "utility.table", + "utility.table-active", + "utility.table-border", + "utility.table-hover", + "utility.table-layout", + "utility.table-stripe", + "utility.text-align", + "utility.text-color", + "utility.text-decoration", + "utility.text-decoration-color", + "utility.text-decoration-offset", + "utility.text-decoration-style", + "utility.text-decoration-thickness", + "utility.text-indent", + "utility.text-max-width", + "utility.text-overflow", + "utility.text-wrap", + "utility.theme", + "utility.title", + "utility.touch-action", + "utility.transform-origin", + "utility.transform-rotate", + "utility.transform-scale", + "utility.transform-skew", + "utility.transform-translate", + "utility.transform-translate-ext", + "utility.transition-delay", + "utility.transition-duration", + "utility.transition-property", + "utility.transition-timing-function", + "utility.user-select", + "utility.vertical-align", + "utility.visibility", + "utility.white-space", + "utility.width", + "utility.width-ext", + "utility.will-change", + "utility.word-break", + "utility.z-index" + ] + }, + "packages": { + "larena": { + "owner": "simai/larena-ui", + "provides": [ + "smart.admin-menu", + "smart.data-view", + "smart.data-view-composite", + "smart.property-view" + ] + } + }, + "recipe_closure": { + "recipe.admin.collection": [ + "component.avatars", + "component.badges", + "component.buttons", + "component.checkbox", + "component.close", + "component.context-menu", + "component.country-code", + "component.datepicker", + "component.dot", + "component.dropdown", + "component.featured-icon", + "component.icon-buttons", + "component.icons", + "component.inputs", + "component.modal", + "component.pagination", + "component.radio", + "component.range-slider", + "component.spinner", + "component.tabs", + "component.tags", + "smart.avatar", + "smart.badges", + "smart.buttons", + "smart.checkbox", + "smart.close", + "smart.color", + "smart.context-menu", + "smart.country-code", + "smart.datepicker", + "smart.dropdown", + "smart.empty-state", + "smart.icon-buttons", + "smart.icons", + "smart.inputs", + "smart.list-item", + "smart.modal", + "smart.pagination", + "smart.radio", + "smart.range-slider", + "smart.resizer", + "smart.sortable", + "smart.spinner", + "smart.tabs", + "smart.tags", + "utility.backdrop-filter-blur", + "utility.display", + "utility.flex-direction", + "utility.gap", + "utility.overflow", + "utility.pointer-events", + "utility.sr-only", + "utility.text-align", + "utility.width" + ] + }, + "recipe_packages": { + "recipe.admin.collection": { + "larena": [ + "smart.data-view" + ] + } + }, + "safe_to_suggest": [ + "component.avatars", + "component.buttons", + "component.checkbox", + "component.close", + "component.context-menu", + "component.datepicker", + "component.dot", + "component.dropdown", + "component.icon-buttons", + "component.icons", + "component.inputs", + "component.pagination", + "component.spinner", + "component.tabs", + "component.tags", + "recipe.admin.collection", + "smart.buttons", + "smart.checkbox", + "smart.close", + "smart.context-menu", + "smart.datepicker", + "smart.dropdown", + "smart.icon-buttons", + "smart.icons", + "smart.inputs", + "smart.pagination", + "smart.spinner", + "smart.tabs", + "smart.tags", + "utility.display", + "utility.flex-direction", + "utility.gap", + "utility.overflow", + "utility.pointer-events", + "utility.text-align", + "utility.width" + ] + }, + "nonclaims": { + "all_items_ready": false, + "full_compatibility": false, + "production_ready": false + }, + "schema_id": "simai.framework.contract-registry", + "schema_version": 1, + "source_manifests": [ + { + "hash_mode": "canonical-json-v1", + "kind": "component", + "owner": "simai/ui", + "path": "contracts/owners/component.manifest.json", + "sha256": "6f56579e73b6235cef416ec0a60d1704022603fcb03745021433a5cdab1859aa" + }, + { + "hash_mode": "canonical-json-v1", + "kind": "recipe", + "owner": "larena/layout", + "path": "contracts/owners/recipe.manifest.json", + "sha256": "715443b12c80966e337af4fb9ec28e2cb37c767c5fcaaa7966fd6f63b3ca2458" + }, + { + "file_sha256": "135f1b66f10b4a017dbe1d66defa56ec0d87470d1b6220c6e311313f9de6a889", + "hash_mode": "canonical-json-v1", + "kind": "smart-component", + "owner": "simai/ui", + "path": "contracts/owners/smart-component.manifest.json", + "sha256": "55dcb5b4cf2e4cc9f26728e9b0a0b7f216f04027a2729ac4207b6548bf1971c5" + }, + { + "hash_mode": "canonical-json-v1", + "kind": "utility", + "owner": "simai/ui", + "path": "contracts/owners/utility.manifest.json", + "sha256": "d4a975dd69b0067ef64dafb97e654982594795702ae8be1f38d98bfc88c16a17" + } + ] +} diff --git a/contracts/framework/smart/buttons/smart.manifest.json b/contracts/framework/smart/buttons/smart.manifest.json new file mode 100644 index 0000000..02b4648 --- /dev/null +++ b/contracts/framework/smart/buttons/smart.manifest.json @@ -0,0 +1,542 @@ +{ + "schema_version": 2, + "id": "smart.buttons", + "version": "1.0.0", + "title": "Buttons", + "summary": "A native button with Framework presentation: size, appearance, colour role or status, optional start and end icons, spacing and radius. loading sets aria-busy and disables it against repeated activation.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "buttons" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-button", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "smart.icons" + ], + "public_parts": [], + "declarative": { + "standard": "simai.composition.document.v1", + "type": "smart.buttons", + "mode": "leaf", + "profiles": [ + "ui-layout" + ], + "props": [ + "template", + "size", + "appearance", + "spacing", + "scheme", + "status", + "text", + "icon", + "icon-position", + "loading", + "disabled", + "native-type", + "aria-label" + ], + "presentation": { + "views": [ + "default" + ], + "presets": [], + "modifiers": [] + }, + "slots": {}, + "renderer": { + "kind": "custom-element", + "name": "sf-button" + }, + "assets": [ + "smart/buttons" + ] + } + }, + "inputs": { + "type": "object", + "properties": { + "template": { + "type": "string", + "default": "default", + "description": "Template variant name for SfBaseElement external templates." + }, + "size": { + "type": "string", + "default": "1", + "description": "Button size token.", + "enum": [ + "1/3", + "1/2", + "1", + "2", + "3" + ] + }, + "appearance": { + "type": "string", + "default": "default", + "description": "How the button looks. Surface reads the neutral alpha ramp: a faint fill and a border. ghost is the link appearance under its old name (compat until 2026-12-01).", + "enum": [ + "default", + "tonal", + "outline", + "link", + "surface", + "ghost" + ] + }, + "scheme": { + "type": "string", + "default": "primary", + "description": "Which colour family the control takes. What the control is about is the status axis; a status set there wins over this.", + "enum": [ + "primary", + "secondary", + "on-surface" + ] + }, + "status": { + "type": "string", + "default": "", + "description": "What the control is about, in the shared status vocabulary. The only one a control paints today is `error`, the destructive one: a control that deletes, discards or cannot be undone.", + "enum": [ + "", + "error" + ] + }, + "text-position": { + "type": "string", + "default": "center" + }, + "text": { + "type": "string", + "default": "", + "description": "Visible button text when no text slot is provided." + }, + "segment": { + "type": "string", + "default": "" + }, + "icon": { + "type": "string", + "default": "", + "description": "Single icon name shortcut.", + "examples": [ + "home", + "settings", + "search", + "edit", + "check", + "close" + ] + }, + "icon-start": { + "type": "string", + "default": "", + "description": "Logical start icon name.", + "examples": [ + "home", + "settings", + "search", + "edit", + "check", + "close" + ] + }, + "icon-end": { + "type": "string", + "default": "", + "description": "Logical end icon name.", + "examples": [ + "home", + "settings", + "search", + "edit", + "check", + "close" + ] + }, + "icon-left": { + "type": "string", + "default": "", + "description": "Compatibility alias for icon-start.", + "examples": [ + "home", + "settings", + "search", + "edit", + "check", + "close" + ] + }, + "icon-right": { + "type": "string", + "default": "", + "description": "Compatibility alias for icon-end.", + "examples": [ + "home", + "settings", + "search", + "edit", + "check", + "close" + ] + }, + "icon-position": { + "type": "string", + "default": "start", + "description": "Placement for the single icon shortcut.", + "enum": [ + "start", + "end" + ] + }, + "spacing": { + "type": "string", + "default": "normal", + "description": "Semantic internal spacing profile.", + "enum": [ + "compact", + "normal", + "comfortable", + "spacious" + ] + }, + "tightness": { + "type": "string", + "default": "", + "description": "Compatibility alias for spacing.", + "enum": [ + "", + "low", + "high", + "highest" + ] + }, + "radius": { + "type": "string", + "default": "", + "description": "Border radius modifier.", + "enum": [ + "", + "default", + "square", + "rounded" + ] + }, + "root-class": { + "type": "string", + "default": "", + "description": "Extra classes applied to the inner button element." + }, + "loading": { + "type": "boolean", + "default": false, + "description": "Loading state flag." + }, + "disabled": { + "type": "boolean", + "default": false, + "description": "Disabled state flag." + }, + "native-type": { + "type": "string", + "default": "button", + "description": "Native button type attribute.", + "enum": [ + "button", + "submit", + "reset" + ] + }, + "aria-label": { + "type": "string", + "default": "", + "description": "Accessible label for icon-only or custom buttons." + }, + "type": { + "type": "string", + "default": "default", + "description": "Legacy name for appearance, still honoured. See contracts/public-api-axes.json.", + "enum": [ + "default", + "tonal", + "outline", + "link", + "surface", + "ghost" + ] + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": {}, + "methods": { + "onClick": { + "summary": "Adds a listener for click on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onFocus": { + "summary": "Adds a listener for focusin on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onBlur": { + "summary": "Adds a listener for focusout on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onMouseEnter": { + "summary": "Adds a listener for mouseenter on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onMouseLeave": { + "summary": "Adds a listener for mouseleave on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setDisabled": { + "summary": "Sets the disabled attribute when nextValue is truthy and removes it otherwise. Returns the element.", + "arguments": [ + { + "name": "nextValue", + "type": "boolean", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": {}, + "state": { + "machines": {}, + "visual_states": [ + "default" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": null, + "accessible_name": "recommended", + "keyboard": [ + "Tab" + ], + "focus": "Keep visible focus on the active control." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/buttons/index.js", + "sha256": "ad27494ae2b17bc277130f72835a2c60476fddcb3fe00f624cb46984b11a8851" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/buttons/js/buttons.js", + "sha256": "b36b0e1eb2098737665ec868915cd3756c5b37863f0d5b69995c3a1f37074873" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-button when the interface needs the buttons behavior.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/checkbox/smart.manifest.json b/contracts/framework/smart/checkbox/smart.manifest.json new file mode 100644 index 0000000..73399e0 --- /dev/null +++ b/contracts/framework/smart/checkbox/smart.manifest.json @@ -0,0 +1,427 @@ +{ + "schema_version": 2, + "id": "smart.checkbox", + "version": "1.0.0", + "title": "Checkbox", + "summary": "A native checkbox with a label, Framework presentation and checked, indeterminate and disabled states kept in step between the host attributes and the inner input.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "checkbox" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-checkbox", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "size": { + "type": "string", + "default": "1", + "description": "Checkbox size token.", + "enum": [ + "1/2", + "1", + "2" + ] + }, + "label": { + "type": "string", + "default": "" + }, + "description": { + "type": "string", + "default": "" + }, + "help": { + "type": "string", + "default": "" + }, + "position": { + "type": "string", + "default": "start", + "description": "Logical placement of the indicator relative to its text.", + "enum": [ + "start", + "end" + ] + }, + "root-class": { + "type": "string", + "default": "" + }, + "checked": { + "type": "boolean", + "default": false + }, + "disabled": { + "type": "boolean", + "default": false + }, + "indeterminate": { + "type": "boolean", + "default": false, + "description": "Mixed visual state for a checkbox that summarizes related options." + }, + "name": { + "type": "string", + "default": "" + }, + "value": { + "type": "string", + "default": "" + }, + "error": { + "type": "boolean", + "default": false, + "description": "Invalid state; the native input publishes aria-invalid." + }, + "aria-label": { + "type": "string", + "default": "", + "description": "Accessible name for a checkbox rendered without a visible label." + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": { + "checkbox_states": { + "type": "string", + "enum": [ + "unchecked", + "checked", + "mixed", + "disabled", + "invalid" + ] + } + }, + "methods": { + "getInputElement": { + "summary": "Returns the inner native checkbox input, or null before render.", + "arguments": [], + "returns": { + "type": [ + "object", + "null" + ], + "description": "The HTMLInputElement." + } + }, + "isChecked": { + "summary": "Return the current native checked state.", + "arguments": [], + "returns": { + "type": [ + "boolean" + ] + } + }, + "setChecked": { + "summary": "Sets the checked state on the host attribute and the inner input through setState(). Returns the element.", + "arguments": [ + { + "name": "nextValue", + "type": [ + "boolean", + "string" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setIndeterminate": { + "summary": "Sets the indeterminate state on the host attribute and the inner input through setState(). Returns the element.", + "arguments": [ + { + "name": "nextValue", + "type": [ + "boolean", + "string" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setDisabled": { + "summary": "Sets the disabled state on the host attribute and the inner input through setState(). Returns the element.", + "arguments": [ + { + "name": "nextValue", + "type": [ + "boolean", + "string" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setBooleanStateAttribute": { + "summary": "Adds the named host attribute as an empty attribute when value is truthy, removes it otherwise.", + "arguments": [ + { + "name": "name", + "type": "string", + "required": true + }, + { + "name": "value", + "type": "boolean", + "required": true + } + ], + "returns": { + "type": "null", + "description": "Returns nothing." + } + }, + "setState": { + "summary": "Applies checked, indeterminate and disabled to both the host attribute and the inner input; any other keys go to the base setState as host attributes. Returns the element.", + "arguments": [ + { + "name": "nextState", + "type": "object", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onChange": { + "summary": "Adds a listener for change on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onFocus": { + "summary": "Adds a listener for focusin on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onBlur": { + "summary": "Adds a listener for focusout on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": { + "change": { + "summary": "The checked state changed; the native event bubbles from the inner checkbox, which is its target. It carries no detail.", + "payload": { + "type": "null", + "description": "A native Event: there is no detail." + }, + "canonical": true + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default", + "selected", + "conflict", + "disabled", + "error" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": null, + "accessible_name": "required", + "keyboard": [ + "Tab", + "Space" + ], + "focus": "Keep visible focus on the active control." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/checkbox/index.js", + "sha256": "ad100903e76b4820a13943151fb748b60d4f9670c6d4007064de00b6beeb1f4a" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/checkbox/js/checkbox.js", + "sha256": "3f73e02733e52eb94fc2c6c292748c276698a3329cd47ac1c0d3cd9978422d83" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-checkbox when the interface needs the checkbox behavior.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/close/smart.manifest.json b/contracts/framework/smart/close/smart.manifest.json new file mode 100644 index 0000000..f0bc45c --- /dev/null +++ b/contracts/framework/smart/close/smart.manifest.json @@ -0,0 +1,185 @@ +{ + "schema_version": 2, + "id": "smart.close", + "version": "1.0.0", + "title": "Close", + "summary": "The decorative cross glyph of a close action, sized on the control ladder. It is aria-hidden and never focusable; the containing native button owns the action and its name.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "close" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-close", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "size": { + "type": "string", + "default": "1/3", + "description": "Decorative close-glyph size token.", + "enum": [ + "1/4", + "1/3", + "1/2", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "root-class": { + "type": "string", + "default": "" + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": {}, + "methods": {}, + "events": {}, + "state": { + "machines": {}, + "visual_states": [ + "default" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "none; generated glyph is aria-hidden", + "accessible_name": "internal", + "keyboard": [], + "focus": "Close is decorative and never enters the tab order. The containing native button owns focus." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/close/index.js", + "sha256": "875cd8ef7b5fe9ccbfba204889206d0959ff390c415a9e1d1d7e4961761b4799" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/close/js/close.js", + "sha256": "2df0d31a6acd4ec1b432c2f29667cd4d57da14a5acf17bfc7567859e7b34cb18" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-close only as the decorative cross glyph inside a host-owned close action.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not make sf-close focusable or use it as the action owner" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/context-menu/smart.manifest.json b/contracts/framework/smart/context-menu/smart.manifest.json new file mode 100644 index 0000000..cf82b11 --- /dev/null +++ b/contracts/framework/smart/context-menu/smart.manifest.json @@ -0,0 +1,594 @@ +{ + "schema_version": 2, + "id": "smart.context-menu", + "version": "1.3.0", + "title": "Context Menu", + "summary": "The Framework's action menu: data entries with icon, caption, value, shortcut, check, submenu, separator and heading, opened by openFor() into the top layer, anchored, with keyboard, typeahead and focus return. A host may still render its own items and own the lifecycle.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "context-menu" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-context-menu", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.context-menu", + "smart.buttons" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "required": [ + "aria-label" + ], + "properties": { + "template": { + "type": "string", + "default": "default" + }, + "position": { + "type": "string", + "default": "", + "enum": [ + "", + "inline-start", + "inline-start-top", + "inline-start-bottom", + "inline-end", + "inline-end-top", + "inline-end-bottom", + "top", + "top-inline-start", + "top-inline-end", + "bottom", + "bottom-inline-start", + "bottom-inline-end", + "start", + "end", + "top-start", + "top-end", + "bottom-start", + "bottom-end", + "left", + "left-top", + "left-bottom", + "right", + "right-top", + "right-bottom", + "top-left", + "top-center", + "top-right", + "bottom-left", + "bottom-center", + "bottom-right", + "left-start", + "left-end", + "right-start", + "right-end", + "inline-start-start", + "inline-start-end", + "inline-end-start", + "inline-end-end" + ], + "description": "Deprecated: a menu has no tail since 1.3.0 (owner, 2026-10-12); the value is kept for its class and draws nothing." + }, + "tooltip": { + "type": "boolean", + "default": true, + "description": "Deprecated: a menu has no tail since 1.3.0 (owner, 2026-10-12); the value is kept for its class and draws nothing." + }, + "text": { + "type": "string", + "default": "" + }, + "aria-label": { + "type": "string", + "default": "" + }, + "items": { + "type": "array", + "default": [], + "items": { + "type": "object" + } + }, + "role": { + "type": "string", + "default": "menu" + }, + "content-class": { + "type": "string", + "default": "" + }, + "root-class": { + "type": "string", + "default": "" + }, + "entries": { + "type": "array", + "default": [], + "items": { + "type": "object" + }, + "description": "The menu as data (set as a property, or JSON in the attribute). See item_contract. When present, it replaces items and the content slot." + }, + "popup": { + "type": "boolean", + "default": false, + "description": "Not drawn until opened through openFor(). A menu without it is drawn in place, as before." + }, + "search": { + "type": "object", + "default": null, + "description": "{placeholder, empty, remote}: a search field above the rows (set as a property). Local by default; with remote: true the menu raises sf-context-menu-search {query} and shows the entries the host sets. A submenu entry passes it with `search`." + }, + "size": { + "type": "string", + "enum": [ + "1/2", + "1" + ], + "default": "1/2", + "description": "The menu's size: rows as tall as a field of that size (32px at 1/2, 40px at 1), its text, insets, search and footer. A submenu takes its parent's size." + }, + "width": { + "type": "string", + "default": "content", + "description": "How wide openFor() opens the menu: content (its longest line, between --sf-context-menu--min-inline-size and --sf-context-menu--max-inline-size), trigger (exactly the control that opened it; a long line ends in an ellipsis) or a CSS length. openFor(anchor, {width}) overrides it." + }, + "tabs": { + "type": [ + "string", + "array" + ], + "default": "", + "description": "A panel with tabs: labels separated by |, or [{id, label}] as a property. The head (tabs and the close button) and the footer never scroll, the body does, and the panel keeps a fixed width (a ladder step, or width) whatever a tab holds." + }, + "active-tab": { + "type": "string", + "default": "", + "description": "The chosen tab's id or index; the host renders that tab's rows into the content slot." + }, + "closable": { + "type": "boolean", + "default": false, + "description": "A close button at the end of the panel's head." + } + }, + "additionalProperties": false + }, + "item_contract": { + "summary": "One entry of `entries`.", + "kinds": { + "item": { + "fields": { + "id": "string, returned in sf-context-menu-select", + "text": "string, the label", + "icon": "string, a Material Symbols name", + "caption": "string, a second line under the label", + "value": "string, read-only value at the row's end", + "shortcut": "string, shown at the row's end", + "kind": "'check' | 'radio' for a checkable row", + "checked": "boolean", + "danger": "boolean, a destructive action", + "disabled": "boolean", + "current": "boolean, the place the person is", + "href": "string, a link row", + "submenu": "entries, opened beside the row", + "keepOpen": "boolean, a choice does not close the menu", + "lang": "string, the language the label is written in", + "search": "{placeholder, empty}, a field above the submenu that narrows its rows by label, caption and keywords", + "keywords": "string, extra words a search matches", + "avatar": "string, a picture URL drawn in the lead (a site's logo, a person)", + "initials": "string, drawn in the lead when there is no picture" + } + }, + "separator": { + "fields": { + "type": "'separator'" + } + }, + "heading": { + "fields": { + "type": "'heading'", + "text": "string, names the items under it" + } + }, + "header": { + "fields": { + "type": "'header'", + "text": "string, the name", + "caption": "string or string[], the lines under it", + "avatar": "string, a picture URL", + "initials": "string, drawn without a picture (from the name by default)" + } + }, + "choice": { + "fields": { + "type": "'choice'", + "id": "string, reported as group", + "text": "string, the group's name", + "options": "[{id, text, icon, checked, disabled}], side by side; a choice is marked at once and the menu stays open unless keepOpen is false" + } + }, + "note": { + "fields": { + "type": "'note'", + "text": "string, a line of explanation" + } + } + } + }, + "contracts": {}, + "methods": { + "focus": { + "summary": "Focus the current available item. A host that renders the menu itself waits for rendering and owns opening and dismissal.", + "arguments": [ + { + "name": "options", + "schema": { + "type": "object" + }, + "required": false + } + ], + "returns": { + "type": "null" + } + }, + "openFor": { + "summary": "Open beside an element: top layer, anchored by SF.Position with flip and shift, focus on the first item (or 'last', or 'none'). The menu then owns its lifecycle: Escape, Tab, a press outside and a choice close it and return the focus -- to where it was, or to the anchor's own control when it was nowhere.", + "arguments": [ + { + "name": "anchor", + "type": "Element", + "required": true + }, + { + "name": "options", + "schema": { + "type": "object", + "properties": { + "side": { + "type": "string", + "default": "block-end" + }, + "align": { + "type": "string", + "default": "start" + }, + "focus": { + "type": "string", + "enum": [ + "first", + "last", + "none" + ], + "default": "first" + } + } + }, + "required": false + } + ], + "returns": { + "type": "Promise", + "description": "Resolves once the menu is rendered and open: whether it opened." + } + }, + "toggleFor": { + "summary": "Close when already open for this anchor, otherwise openFor().", + "arguments": [ + { + "name": "anchor", + "type": "Element", + "required": true + }, + { + "name": "options", + "schema": { + "type": "object" + }, + "required": false + } + ], + "returns": { + "type": "Promise", + "description": "Resolves to whether the menu is open afterwards." + } + }, + "close": { + "summary": "Close this menu and any submenu.", + "arguments": [ + { + "name": "options", + "schema": { + "type": "object", + "properties": { + "restoreFocus": { + "type": "boolean", + "default": true + } + } + }, + "required": false + } + ], + "returns": { + "type": "boolean", + "description": "Whether it was open." + } + }, + "chooseTab": { + "summary": "Choose a tab by index and emit sf-context-menu-tab.", + "arguments": [ + { + "name": "index", + "schema": { + "type": "number" + } + } + ], + "returns": { + "type": "object" + } + }, + "requestClose": { + "summary": "Close an owned menu; for a menu its host placed, emit sf-context-menu-close for the host to close it.", + "arguments": [], + "returns": { + "type": "boolean" + } + } + }, + "events": { + "sf-context-menu-select": { + "summary": "An entry was chosen, at any depth. Cancel it to keep the menu open.", + "payload": { + "type": "object", + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "entry": { + "type": "object" + }, + "checked": { + "type": [ + "boolean", + "null" + ], + "description": "The state a check or radio row asks for; null for a plain item." + }, + "group": { + "type": [ + "string", + "null" + ], + "description": "The choice row's id when an option of it was chosen." + } + } + } + }, + "sf-context-menu-open": { + "summary": "Opened through openFor(). Bubbles and is composed; carries no detail.", + "payload": { + "type": "null", + "description": "detail is null." + } + }, + "sf-context-menu-close": { + "summary": "A menu opened through openFor() was closed. Bubbles and is composed; carries no detail.", + "payload": { + "type": "null", + "description": "detail is null." + } + }, + "sf-context-menu-search": { + "summary": "The query of a search the host answers (search.remote).", + "payload": { + "type": "object", + "properties": { + "query": { + "type": "string" + } + } + } + }, + "sf-context-menu-tab": { + "summary": "A tab of the panel was chosen; the host shows its rows.", + "payload": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "index": { + "type": "number" + } + } + } + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "menu", + "accessible_name": "required", + "keyboard": [ + "ArrowDown", + "ArrowUp", + "Home", + "End", + "ArrowRight", + "ArrowLeft", + "Enter", + "Space", + "Escape", + "Tab", + "typeahead" + ], + "focus": "Rows rendered from entries carry menuitem, menuitemcheckbox or menuitemradio with aria-checked, and aria-haspopup/aria-expanded for a submenu; one roving tab stop. Opened through openFor(): the anchor gets aria-haspopup=menu and aria-expanded; Escape closes one level and returns the focus to its row or the anchor; Tab closes the whole chain; a letter moves to the next item it starts. A host that renders the menu itself owns opening, Escape/Tab dismissal and focus return, as before. A header and a note are text. The options of a choice row are menuitemradio in a group, walked by the side arrows. A searchable menu opens on its field, which keeps the letters and the side arrows; ArrowDown goes on to the rows." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile", + "semantic-surface-radius", + "unclipped-tail-with-scrollable-content", + "logical-position-aliases", + "forced-colors-boundary" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [ + { + "path": "position", + "since": "1.3.0", + "replacement": "openFor(anchor, {side, align}) places the menu; no tail is drawn" + }, + { + "path": "tooltip", + "since": "1.3.0", + "replacement": "none: a menu has no tail" + } + ], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/context-menu/index.js", + "sha256": "9bd28543965d1f8a3a5a738d02a1e4e8228a7194b3142352ef270e30978cc9d8" + }, + { + "path": "src/smart/context-menu/js/templates/default.js", + "sha256": "8a828417d54fa993641434e9086f240bc8d24505ee54ef4e093019aa437c09fb" + }, + { + "path": "src/component/context-menu/scss/_css__context_menu.scss", + "sha256": "ef0c1029e819428e9f79afeff408bdd3fd9600fe7d0946503ceac7d0c047b702" + }, + { + "path": "src/component/context-menu/scss/_css__context_menu_custom.scss", + "sha256": "6863bb9ab9d56ce051ae8ea26b72ec58185fab1848d110c13ceadee83fc817ad" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/context-menu/js/context-menu.js", + "sha256": "35d99046348af776c3273085fb93a488e6097023d64b65245d34e6334579d3c8" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-context-menu for every action menu: give it entries and open it with openFor(anchor). It opens below and start-aligned by default, with no tail, in the top layer, on the profile menu's surface. A profile menu is one: a header for the person, a choice row for the theme, a submenu with search for the language.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not hand-make a menu of divs and buttons: the row geometry, roles, keyboard and focus return are this component's", + "Do not ask for a tail: position and tooltip are deprecated and draw nothing" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/datepicker/smart.manifest.json b/contracts/framework/smart/datepicker/smart.manifest.json new file mode 100644 index 0000000..015be2e --- /dev/null +++ b/contracts/framework/smart/datepicker/smart.manifest.json @@ -0,0 +1,616 @@ +{ + "schema_version": 2, + "id": "smart.datepicker", + "version": "1.0.0", + "title": "Datepicker", + "summary": "Accessible date and date-range picker with popup and inline presentation, calendar navigation and host-owned values.", + "kind": "composite", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "calendar", + "date", + "datepicker", + "form", + "range" + ], + "capabilities": [ + "date-selection", + "date-range", + "keyboard-navigation", + "popup", + "inline", + "theme", + "responsive" + ], + "custom_element": "sf-datepicker", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.datepicker", + "smart.inputs", + "smart.buttons", + "smart.icon-buttons", + "smart.icons" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "template": { + "type": "string", + "default": "default", + "description": "Which template draws it." + }, + "value": { + "type": "string", + "default": "", + "description": "The ISO date (yyyy-mm-dd). As a property, [start, end] for a range; the attribute is the same as date." + }, + "date": { + "type": "string", + "default": "", + "description": "The ISO date (yyyy-mm-dd) chosen; value is read when date is absent." + }, + "start-value": { + "type": "string", + "default": "", + "description": "Range only: the ISO start date." + }, + "end-value": { + "type": "string", + "default": "", + "description": "Range only: the ISO end date." + }, + "max-date": { + "type": "string", + "default": "", + "description": "The latest ISO date that can be chosen; later days are disabled." + }, + "min-date": { + "type": "string", + "default": "", + "description": "The earliest ISO date that can be chosen; earlier days are disabled." + }, + "range": { + "type": "boolean", + "default": false, + "description": "Pick a start and an end instead of one date." + }, + "month": { + "type": "number", + "default": null, + "description": "The month shown when the panel opens, 0-11; defaults to the chosen date's month, else the current one." + }, + "year": { + "type": "number", + "default": null, + "description": "The year shown when the panel opens; defaults to the chosen date's year, else the current one." + }, + "context": { + "type": "string", + "default": "", + "description": "Which grid the panel opens on: days (empty), month or year.", + "enum": [ + "", + "month", + "year" + ] + }, + "week-start": { + "type": "number", + "description": "The first day of the week, 0 Sunday to 6 Saturday (1 Monday). Without the attribute it follows the page's language (ru: Monday, en-US: Sunday, ar-EG: Saturday).", + "default": null + }, + "locale": { + "type": "string", + "default": "", + "description": "The language of month and day names; defaults to the page language." + }, + "format": { + "type": "string", + "default": "DD.MM.YYYY", + "description": "How the date is shown in the field, e.g. DD.MM.YYYY. The value stays ISO." + }, + "root-class": { + "type": "string", + "default": "", + "description": "Classes added to the component's root." + }, + "close-on-select": { + "type": "boolean", + "default": true, + "description": "Close the panel once a date (or a range end) is chosen." + }, + "input": { + "type": "boolean", + "default": true, + "description": "Draw the text field; without it only the panel is drawn." + }, + "open": { + "type": "boolean", + "default": false, + "description": "Whether the panel is open." + }, + "portal": { + "type": "boolean", + "default": true, + "description": "Draw the panel at the end of the document so no clipping ancestor cuts it." + }, + "input-type": { + "type": "string", + "default": "bordered", + "description": "The field's appearance (bordered by default), as on sf-inputs." + }, + "size": { + "type": "string", + "default": "1", + "enum": [ + "1/2", + "1", + "2" + ], + "description": "Form size of the field." + }, + "input-size": { + "type": "string", + "default": "1", + "enum": [ + "1/2", + "1", + "2" + ], + "description": "Legacy name for size, still honoured; size wins when both are set. See contracts/public-api-axes.json." + }, + "input-name": { + "type": "string", + "default": "", + "description": "The form field name of the value; wins over name." + }, + "placeholder": { + "type": "string", + "default": "", + "description": "The field's placeholder text." + }, + "label": { + "type": "string", + "default": "", + "description": "The field's visible label." + }, + "disabled": { + "type": "boolean", + "default": false, + "description": "Disable the field and the panel." + }, + "required": { + "type": "boolean", + "default": false, + "description": "Mark the field required in its form." + }, + "icon-start": { + "type": "string", + "default": "calendar_today", + "description": "The icon at the start of the field; the canonical name for left-icon." + }, + "left-icon": { + "type": "string", + "default": "calendar_today", + "description": "Legacy name for icon-start, still honoured; icon-start wins when both are set." + }, + "input-root-class": { + "type": "string", + "default": "", + "description": "Classes added to the field's root." + }, + "mask": { + "type": "boolean", + "default": false, + "description": "Mask what can be typed in the field to the format." + }, + "mask-pattern": { + "type": "string", + "default": "00.00.0000", + "description": "Input mask; when not set it is derived from format, so the default format DD.MM.YYYY gives 00.00.0000." + }, + "mask-lazy": { + "type": "boolean", + "default": false, + "description": "Show the mask's placeholder characters only as they are typed." + }, + "mask-placeholder-char": { + "type": "string", + "default": "_", + "description": "The character that stands for a position not yet typed." + }, + "mask-options": { + "type": "string", + "default": "", + "description": "Further mask options as JSON, passed to the field's mask." + }, + "name": { + "type": "string", + "default": "", + "description": "The form field name of the value. input-name is the same and wins when both are set." + }, + "presets": { + "type": [ + "string", + "array" + ], + "default": "", + "description": "Range only: quick ranges beside the grid. Built-in ids, comma separated (today, yesterday, last-7-days, last-30-days, this-week, this-month, last-month), or as a property [{id, label, relative} | {id, label, range: [from, to]}]. Clamped to min-date and max-date; a range with nothing left is disabled." + }, + "preset": { + "type": "string", + "default": "", + "description": "The chosen quick range's id. Set by a host it wins over start-value and end-value, and a relative one is resolved against today in the person's time zone when drawn; nothing is emitted for it." + } + }, + "additionalProperties": false + }, + "item_contract": { + "value_format": "ISO date strings are stored in YYYY-MM-DD form; format controls only the visible field value.", + "range_value": "Range mode exposes start-value and end-value and restarts the range after a completed selection.", + "host_owned": [ + "validation beyond min-date and max-date", + "persistence", + "timezone and domain-date interpretation" + ] + }, + "contracts": { + "change_detail": { + "type": "object", + "required": [ + "value", + "range", + "format" + ], + "properties": { + "value": { + "type": [ + "string", + "array" + ], + "description": "The ISO date (yyyy-mm-dd), or [start, end] for a range; \"\" when cleared." + }, + "range": { + "type": "boolean", + "description": "Whether the field picks a range." + }, + "format": { + "type": "string", + "description": "The display format." + }, + "formattedValue": { + "type": "string", + "description": "The value as shown, in format." + }, + "date": { + "type": "string", + "description": "The ISO date; for a range, the ISO 8601 interval start/end (the start alone until the end is chosen)." + }, + "isoValue": { + "type": "string", + "description": "The same as date: the ISO date, or for a range the interval start/end." + }, + "startValue": { + "type": "string", + "description": "Range only: the ISO start." + }, + "endValue": { + "type": "string", + "description": "Range only: the ISO end." + }, + "startIsoValue": { + "type": "string", + "description": "Range only: the ISO start." + }, + "endIsoValue": { + "type": "string", + "description": "Range only: the ISO end." + }, + "formattedStartValue": { + "type": "string", + "description": "Range only: the start as shown." + }, + "formattedEndValue": { + "type": "string", + "description": "Range only: the end as shown." + }, + "preset": { + "type": [ + "object", + "null" + ], + "description": "Range only: the quick range chosen, {id, relative} or {id}; null for a range picked on the grid." + } + } + } + }, + "methods": { + "setContext": { + "summary": "Open the day, month or year calendar context.", + "arguments": [ + { + "name": "context", + "schema": { + "type": "string", + "enum": [ + "", + "month", + "year" + ] + } + } + ], + "returns": { + "type": "object" + } + }, + "openPanel": { + "summary": "Open the popup; optionally move focus into the calendar.", + "arguments": [ + { + "name": "options", + "schema": { + "type": "object" + } + } + ], + "returns": { + "type": "object" + } + }, + "closePanel": { + "summary": "Close the popup; optionally restore focus to the field.", + "arguments": [ + { + "name": "options", + "schema": { + "type": "object" + } + } + ], + "returns": { + "type": "object" + } + }, + "togglePanel": { + "summary": "Toggle the popup without changing the selected value.", + "arguments": [], + "returns": { + "type": "object" + } + }, + "choosePreset": { + "summary": "Choose a quick range: set its dates, show the month it ends in and emit change once.", + "arguments": [ + { + "name": "item", + "schema": { + "type": "object" + } + } + ], + "returns": { + "type": "object" + } + }, + "chooseCustomRange": { + "summary": "Let go of the quick range and move focus to the grid.", + "arguments": [], + "returns": { + "type": "object" + } + } + }, + "events": { + "change": { + "summary": "A date or range endpoint was selected; dispatched on the host. The name to bind.", + "payload": { + "$ref": "#/contracts/change_detail" + }, + "canonical": true + }, + "sf-datepicker-change": { + "summary": "Legacy name for change, still emitted with the same detail; bind change.", + "payload": { + "$ref": "#/contracts/change_detail" + }, + "alias_of": "change" + }, + "sf-change": { + "summary": "Legacy name for change, still emitted with the same detail; bind change.", + "payload": { + "$ref": "#/contracts/change_detail" + }, + "alias_of": "change" + } + }, + "state": { + "machines": { + "panel": [ + "closed", + "open-below", + "open-above" + ], + "context": [ + "day", + "month", + "year" + ], + "selection": [ + "empty", + "single", + "range-start", + "range-complete" + ] + }, + "visual_states": [ + "default", + "open", + "selected", + "disabled" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source source and machine manifest", + "data": "host", + "effects": "component", + "forbidden_client_responsibilities": [ + "timezone policy", + "business-day validation", + "persistence", + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "dialog in popup mode; group in inline mode", + "accessible_name": "required", + "keyboard": [ + "Tab", + "Shift+Tab", + "Enter", + "Space", + "Escape", + "ArrowLeft", + "ArrowRight", + "ArrowUp", + "ArrowDown", + "Home", + "End", + "PageUp", + "PageDown" + ], + "focus": "ArrowDown opens the popup and moves focus to the active day. Only one day is in the tab order. Escape closes the popup and restores focus to the field. RTL reverses physical horizontal arrows while preserving chronological movement." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop-popup", + "mobile-popup", + "inline", + "visual-viewport-bounded-overlay" + ], + "skeleton": { + "shape": "block", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "accepted", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke", + "keyboard-navigation", + "browser-matrix", + "visual-viewport" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/datepicker/index.js", + "sha256": "f071d812c2310ea8823d59b022f638fde21605e1a9b16f7145f6cb8f7ef13fe3" + }, + { + "path": "src/smart/datepicker/js/templates/default.js", + "sha256": "8da2241fcdeb43d58665da972b99d1531ae806fca1f66a18dee2fa4f47f5cfbe" + }, + { + "path": "src/smart/datepicker/rule.js", + "sha256": "6f6faf9f2d3838d2001f257cefc870cce8213c1a5258df029f5a0df5b218a469" + }, + { + "path": "src/smart/datepicker/docs/smart-datepicker-guide.md", + "sha256": "2a4d3b83d364e9d147250f8e58fa3926577245e74266ca26957e55801beabeb6" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/datepicker/js/datepicker.js", + "sha256": "80bc56876462d4f6dcf357fe4b0f7fe777c7d6d164576af8565c07570132be91" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-datepicker for a single date or date range that benefits from calendar navigation. Use a plain input when free-form entry is the primary task.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not use color as the only selected or disabled signal", + "Do not encode timezone or business-date rules in the visual component", + "Do not move host data or access decisions into the component" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/dropdown/smart.manifest.json b/contracts/framework/smart/dropdown/smart.manifest.json new file mode 100644 index 0000000..c5a02ba --- /dev/null +++ b/contracts/framework/smart/dropdown/smart.manifest.json @@ -0,0 +1,374 @@ +{ + "schema_version": 2, + "id": "smart.dropdown", + "version": "1.2.0", + "title": "Dropdown", + "summary": "Accessible single or multiple selection control with searchable options and optional portal projection.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "dropdown" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-dropdown", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.dropdown", + "smart.list-item", + "smart.inputs", + "smart.icon-buttons" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "appearance": { + "type": "string", + "default": "outlined", + "enum": [ + "filled", + "outlined" + ], + "description": "How the dropdown looks: a filled field or an outlined one." + }, + "aria-label": { + "type": "string", + "default": "" + }, + "columns": { + "type": "string", + "default": "6", + "description": "How many options a row holds in the grid layout. Ignored in a list." + }, + "disabled": { + "type": "boolean", + "default": false + }, + "label": { + "type": "string", + "default": "" + }, + "layout": { + "type": "string", + "default": "list", + "enum": [ + "list", + "grid" + ], + "description": "How the options are laid out. A list is one option a row; a grid puts several in a row, which is the only way a hundred glyphs can be looked at -- a column of them is a column nobody scrolls to the end of. In a grid an option shows its picture and keeps its text as the name a search reads and a pointer sees." + }, + "mode": { + "type": "string", + "default": "select", + "enum": [ + "tag", + "select" + ] + }, + "multiple": { + "type": "boolean", + "default": false, + "description": "Allow several values while preserving their serialized selection order. Tag mode is multiple by default." + }, + "name": { + "type": "string", + "default": "", + "description": "Native form field name for the selected machine value." + }, + "options": { + "type": "array", + "description": "Options given as data instead of as sf-list-item children: [{text, value, type?, size?, icon?, selected?, disabled?, colorClass?, avatarImageUrl?, avatarTitle?, ariaLabel?, group?}]. A string or a number is taken as both the label and the value. A parent that renders this dropdown from a template passes its options this way, because capturing child elements means removing them, and the parent can then no longer put a changed list back. Options carrying the same `group`, one after another, are drawn under one heading, so a long list says where each stretch of it comes from instead of repeating that in every row.", + "default": [] + }, + "placeholder": { + "type": "string", + "default": "" + }, + "portal": { + "type": "boolean", + "default": true, + "description": "Anchor the popup with the shared Framework positioning (SF.Position): native top layer, flip, shift and viewport-limited height. On by default; portal=\"false\" keeps the in-flow list." + }, + "required": { + "type": "boolean", + "default": false + }, + "search": { + "type": "boolean", + "default": true + }, + "search-placeholder": { + "type": "string", + "default": "", + "description": "Empty: the text of the page's language (\"Search\" in English)." + }, + "size": { + "type": "string", + "default": "1", + "enum": [ + "1/2", + "1", + "2" + ] + }, + "template": { + "type": "string", + "default": "default" + }, + "type": { + "type": "string", + "default": "outlined", + "description": "Legacy name for appearance, still honoured. See contracts/public-api-axes.json.", + "enum": [ + "filled", + "outlined" + ] + }, + "value": { + "type": "string", + "default": "", + "description": "Selected machine value, or a comma-separated list of values for multiple selection." + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": { + "change_detail": { + "type": "object", + "required": [ + "value", + "values", + "multiple" + ], + "properties": { + "value": { + "type": "string", + "description": "The value of the item chosen or cleared; \"\" when none." + }, + "label": { + "type": "string", + "description": "Its visible text." + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Every selected value after the change." + }, + "item": { + "description": "The chosen sf-list-item, or null." + }, + "root": { + "description": "The emitting sf-dropdown." + }, + "multiple": { + "type": "boolean", + "description": "Whether several values can be selected." + } + } + } + }, + "methods": { + "openDropdown": { + "summary": "Opens the option list unless the control is disabled or already open. Returns the element.", + "arguments": [], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "closeDropdown": { + "summary": "Closes the option list and clears the search text. Returns the element.", + "arguments": [], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "toggleDropdown": { + "summary": "Closes the list when open, opens it otherwise. Returns the element.", + "arguments": [], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": { + "change": { + "summary": "The selection changed; dispatched on the host. The name to bind.", + "payload": { + "$ref": "#/contracts/change_detail" + }, + "canonical": true + }, + "sf-dropdown:change": { + "summary": "Legacy name for change, still emitted with the same detail; bind change.", + "payload": { + "$ref": "#/contracts/change_detail" + }, + "alias_of": "change" + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default", + "open", + "selected", + "disabled" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "button with listbox popup", + "accessible_name": "required", + "keyboard": [ + "Tab", + "ArrowDown", + "ArrowUp", + "Home", + "End", + "Enter", + "Space", + "Escape" + ], + "focus": "The toggle is the primary Tab stop. Arrow keys open and move through available options; Home and End move within the list; Enter or Space selects; Escape closes and restores the toggle; Tab closes and continues native traversal. The searchbox keeps native text-editing Home and End behavior." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [ + { + "from": "1.0.0", + "to": "1.1.0", + "changes": [ + "portal is on by default: the list is positioned by SF.Position (Floating UI) in the native top layer, flips above near the bottom and stays inside the viewport.", + "portal=\"false\" keeps the previous in-flow list." + ] + } + ] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/dropdown/index.js", + "sha256": "c8a9e75654ce20b4a37f7301fc0fe435444b1340b9539f1e1544e3485f0b86e6" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/dropdown/js/dropdown.js", + "sha256": "3265735b5514c67f932f78cf67022bc9db1affc76703fc9034bc095c3b11c007" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-dropdown when a form needs one or several values from a concealed option set. Use direct sf-list-item children with stable machine values and visible labels. Use portal only when an ancestor clips the popup.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not use the visible label as the submitted value when a stable machine identifier exists", + "Do not make decorative checkbox, avatar or icon content independently focusable inside an option" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/icon-buttons/smart.manifest.json b/contracts/framework/smart/icon-buttons/smart.manifest.json new file mode 100644 index 0000000..2b2607b --- /dev/null +++ b/contracts/framework/smart/icon-buttons/smart.manifest.json @@ -0,0 +1,526 @@ +{ + "schema_version": 2, + "id": "smart.icon-buttons", + "version": "1.0.0", + "title": "Icon Buttons", + "summary": "Native icon-only action with token geometry, accessible naming and shared loading semantics.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "icon-buttons" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-icon-button", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.icon-buttons", + "smart.icons", + "smart.close" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "template": { + "type": "string", + "default": "default", + "description": "Template variant name for SfBaseElement external templates." + }, + "kind": { + "type": "string", + "default": "icon", + "enum": [ + "icon", + "close" + ], + "description": "What the icon button is: an ordinary icon action or a close control." + }, + "size": { + "type": "string", + "default": "1", + "description": "Icon button size token.", + "enum": [ + "1/3", + "1/2", + "1", + "2", + "3" + ] + }, + "appearance": { + "type": "string", + "default": "default", + "description": "How the icon button looks. Surface and ghost read the neutral alpha ramp: surface keeps a faint fill and a border, ghost keeps nothing until it is hovered or focused.", + "enum": [ + "default", + "tonal", + "outline", + "link", + "surface", + "ghost" + ] + }, + "scheme": { + "type": "string", + "default": "primary", + "description": "Which colour family the control takes. What the control is about is the status axis; a status set there wins over this.", + "enum": [ + "primary", + "secondary", + "on-surface" + ] + }, + "status": { + "type": "string", + "default": "", + "description": "What the control is about, in the shared status vocabulary. The only one a control paints today is `error`, the destructive one: a control that deletes, discards or cannot be undone.", + "enum": [ + "", + "error" + ] + }, + "segment": { + "type": "string", + "default": "", + "description": "Joined-control position owned by Button Group composition.", + "enum": [ + "", + "start", + "middle", + "end" + ] + }, + "icon": { + "type": "string", + "default": "add", + "description": "Material icon name." + }, + "filled": { + "type": "boolean", + "default": false, + "description": "Use the filled glyph axis for the standard icon variant." + }, + "spacing": { + "type": "string", + "default": "normal", + "description": "Semantic internal spacing profile.", + "enum": [ + "compact", + "normal", + "comfortable", + "spacious" + ] + }, + "tightness": { + "type": "string", + "default": "", + "description": "Compatibility alias for spacing.", + "enum": [ + "", + "low", + "high", + "highest" + ] + }, + "radius": { + "type": "string", + "default": "", + "description": "Border radius modifier.", + "enum": [ + "", + "default", + "square", + "rounded" + ] + }, + "root-class": { + "type": "string", + "default": "", + "description": "Extra classes applied to the inner icon button element." + }, + "loading": { + "type": "boolean", + "default": false, + "description": "Loading state flag." + }, + "disabled": { + "type": "boolean", + "default": false, + "description": "Disabled state flag." + }, + "native-type": { + "type": "string", + "default": "button", + "description": "Native button type attribute.", + "enum": [ + "button", + "submit", + "reset" + ] + }, + "aria-label": { + "type": "string", + "default": "", + "description": "Accessible label." + }, + "variant": { + "type": "string", + "default": "icon", + "description": "Legacy name for kind, still honoured. See contracts/public-api-axes.json.", + "enum": [ + "icon", + "close" + ] + }, + "type": { + "type": "string", + "default": "default", + "description": "Legacy name for appearance, still honoured. See contracts/public-api-axes.json.", + "enum": [ + "default", + "tonal", + "outline", + "link", + "surface", + "ghost" + ] + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": { + "visual_pairings": { + "type": "array", + "items": { + "type": "object" + }, + "examples": [ + [ + { + "type": "default", + "schemes": [ + "primary", + "on-surface" + ] + }, + { + "type": "tonal", + "schemes": [ + "secondary", + "on-surface" + ] + }, + { + "type": "outline", + "schemes": [ + "primary", + "on-surface" + ] + }, + { + "type": "link", + "schemes": [ + "primary", + "on-surface" + ] + } + ] + ] + }, + "interaction_states": { + "type": "string", + "enum": [ + "hover", + "active" + ] + } + }, + "methods": { + "setButtonAttributes": { + "summary": "Passes the object to setState() as buttonAttributes; the built-in template does not read it, so it only reaches an external project template. Returns the element.", + "arguments": [ + { + "name": "attributes", + "type": "object", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onClick": { + "summary": "Adds a listener for click on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onFocus": { + "summary": "Adds a listener for focusin on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onBlur": { + "summary": "Adds a listener for focusout on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onMouseEnter": { + "summary": "Adds a listener for mouseenter on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onMouseLeave": { + "summary": "Adds a listener for mouseleave on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setDisabled": { + "summary": "Sets the disabled attribute when nextValue is truthy and removes it otherwise. Returns the element.", + "arguments": [ + { + "name": "nextValue", + "type": "boolean", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": {}, + "state": { + "machines": {}, + "visual_states": [ + "default", + "active", + "loading", + "disabled" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "button", + "accessible_name": "required", + "keyboard": [ + "Tab", + "Enter", + "Space" + ], + "focus": "The inner native button is the only focus owner. Pointer activation does not show the ring; keyboard focus uses focus-visible, with an inset ring inside joined controls." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/icon-buttons/index.js", + "sha256": "449ab27541c1105b2ab4380d71491851b3b698c10f4fd20df0308497e321bc66" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/icon-buttons/js/icon-buttons.js", + "sha256": "3b982e120ef4246f6bb412eb25640e3bff11435a5cd103bb255b6f81336a1fca" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-icon-button for a compact action that is unambiguous from one familiar icon and has a concise accessible name.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not omit aria-label when no visible text names the action", + "Do not use the large-surface radius as a normal control variation", + "Do not keep a loading action enabled" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/icons/smart.manifest.json b/contracts/framework/smart/icons/smart.manifest.json new file mode 100644 index 0000000..33a94e3 --- /dev/null +++ b/contracts/framework/smart/icons/smart.manifest.json @@ -0,0 +1,246 @@ +{ + "schema_version": 2, + "id": "smart.icons", + "version": "1.0.0", + "title": "Icons", + "summary": "Semantic Material Symbol wrapper with exact Loader tracking, accessible decorative or informative modes and token-owned geometry.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "icons" + ], + "capabilities": [ + "render", + "accessible-name", + "icon-families", + "variable-axes", + "dynamic-subset", + "theme", + "responsive" + ], + "custom_element": "sf-icon", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.icons" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "icon": { + "type": "string", + "default": "" + }, + "loaded": { + "type": "boolean", + "default": false + }, + "filled": { + "type": "boolean", + "default": false + }, + "weight": { + "type": "number", + "default": 400 + }, + "size": { + "type": "string", + "default": "", + "enum": [ + "", + "1/4", + "1/3", + "1/2", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "type": { + "type": "string", + "default": "", + "enum": [ + "", + "outlined", + "rounded", + "sharp", + "shape" + ] + }, + "grade": { + "type": "number", + "default": 0, + "minimum": -50, + "maximum": 200 + }, + "optical-size": { + "type": "number", + "default": 24, + "minimum": 20, + "maximum": 48 + }, + "label": { + "type": "string", + "default": "" + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": {}, + "methods": {}, + "events": {}, + "state": { + "machines": {}, + "visual_states": [ + "default" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "img when label is present; hidden when decorative", + "accessible_name": "recommended", + "keyboard": [], + "focus": "The icon is not interactive and never enters the tab order. Name the containing control instead." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile", + "inherited current color", + "pre-upgrade reserved size" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/icons/index.js", + "sha256": "2175a88c28458443ad2747277bd90f4711c3a6faa3a27a91db8b1bffbdb60237" + }, + { + "path": "src/smart/icons/js/templates/default.js", + "sha256": "68041e468e8ff38811bba22bf7f7bc7af60a4377df00693ea3293d2bb4a3d67e" + }, + { + "path": "src/smart/icons/rule.js", + "sha256": "4e2b11a90c6908dcea0fe1dc54e944521e8505512f988b6b1cf9cfc5f7844564" + }, + { + "path": "src/smart/icons/docs.md", + "sha256": "3c0dd58b7aee111b6e89130b491b01b53a809d95c784e3f2f19986e557fc07fe" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/icons/js/icons.js", + "sha256": "5b4ec21457f8a7cad79b8854ee99facb917fadca00b08a01efd3f87b8627e782" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-icon for a Material Symbol that must participate in the Framework Loader and token scale. Omit label when adjacent text or a named control already conveys the meaning; provide a concise label only for an informative standalone symbol.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not make the icon focusable or use it as a control", + "Do not label a decorative icon inside an already named control", + "Do not use loaded as an authoring switch" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/inputs/smart.manifest.json b/contracts/framework/smart/inputs/smart.manifest.json new file mode 100644 index 0000000..31502f8 --- /dev/null +++ b/contracts/framework/smart/inputs/smart.manifest.json @@ -0,0 +1,533 @@ +{ + "schema_version": 2, + "id": "smart.inputs", + "version": "1.1.0", + "title": "Inputs", + "summary": "A native single-line form control with Framework presentation, validation messaging and optional mask integration.", + "kind": "smart", + "reuse_mode": "both", + "lifecycle": "experimental", + "tags": [ + "inputs" + ], + "capabilities": [ + "render", + "theme", + "responsive" + ], + "custom_element": "sf-input", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.inputs", + "smart.icons" + ], + "public_parts": [ + "native-input", + "label", + "field", + "hint", + "leading", + "trailing" + ] + }, + "inputs": { + "type": "object", + "properties": { + "size": { + "type": "string", + "default": "1", + "enum": [ + "1/2", + "1", + "2" + ] + }, + "appearance": { + "type": "string", + "default": "bordered", + "enum": [ + "bordered", + "filled", + "hidden" + ], + "description": "How the field looks: a bordered box, a filled one, or hidden." + }, + "label": { + "type": "string", + "default": "" + }, + "required": { + "type": "boolean", + "default": false + }, + "placeholder": { + "type": "string", + "default": "" + }, + "input-type": { + "type": "string", + "default": "text", + "enum": [ + "text", + "email", + "password", + "search", + "tel", + "url" + ] + }, + "autocomplete": { + "type": "string", + "default": "" + }, + "inputmode": { + "type": "string", + "default": "", + "enum": [ + "", + "none", + "text", + "tel", + "url", + "email", + "numeric", + "decimal", + "search" + ] + }, + "minlength": { + "type": "string", + "default": "" + }, + "maxlength": { + "type": "string", + "default": "" + }, + "pattern": { + "type": "string", + "default": "" + }, + "hint": { + "type": "string", + "default": "" + }, + "value": { + "type": "string", + "default": "" + }, + "default-value": { + "type": "string", + "default": "" + }, + "name": { + "type": "string", + "default": "" + }, + "icon-start": { + "type": "string", + "default": null + }, + "text-end": { + "type": "string", + "default": null + }, + "left-icon": { + "type": "string", + "default": "" + }, + "right-text": { + "type": "string", + "default": "" + }, + "hint-icon": { + "type": "string", + "default": "" + }, + "root-class": { + "type": "string", + "default": "" + }, + "disabled": { + "type": "boolean", + "default": false + }, + "readonly": { + "type": "boolean", + "default": false + }, + "error": { + "type": "boolean", + "default": false + }, + "invalid": { + "type": "boolean", + "default": false + }, + "error-message": { + "type": "string", + "default": "" + }, + "mask": { + "type": "boolean", + "default": false + }, + "mask-pattern": { + "type": "string", + "default": "" + }, + "mask-lazy": { + "type": "string", + "default": "" + }, + "mask-placeholder-char": { + "type": "string", + "default": "" + }, + "mask-options": { + "type": "string", + "default": "" + }, + "type": { + "type": "string", + "default": "bordered", + "description": "Legacy name for appearance, still honoured. See contracts/public-api-axes.json.", + "enum": [ + "bordered", + "filled", + "hidden" + ] + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": { + "state_owner": { + "const": "native_input" + }, + "value_owner": { + "const": "native_input" + }, + "form_owner": { + "const": "native_form" + }, + "reset": { + "const": "native_form_reset" + }, + "mask_owner": { + "const": "optional_sf_mask_adapter" + }, + "field_states": { + "type": "string", + "enum": [ + "empty", + "filled", + "hover", + "focus-visible", + "readonly", + "disabled", + "invalid" + ] + } + }, + "methods": { + "getInputElement": { + "summary": "Returns the inner native input, or null before render.", + "arguments": [], + "returns": { + "type": [ + "object", + "null" + ], + "description": "The HTMLInputElement." + } + }, + "onInput": { + "summary": "Adds a listener for input on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onChange": { + "summary": "Adds a listener for change on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onKeyUp": { + "summary": "Adds a listener for keyup on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onKeyDown": { + "summary": "Adds a listener for keydown on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onFocus": { + "summary": "Adds a listener for focusin on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onBlur": { + "summary": "Adds a listener for focusout on the host. Returns the element.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": [ + "object", + "boolean" + ], + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": { + "change": { + "summary": "The value was committed; the native event bubbles from the inner input, which is its target. It carries no detail.", + "payload": { + "type": "null", + "description": "A native Event: there is no detail." + }, + "canonical": true + }, + "input": { + "summary": "The value changed while typing; the native event bubbles from the inner input, which is its target. It carries no detail.", + "payload": { + "type": "null", + "description": "A native Event: there is no detail." + } + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default", + "active", + "disabled", + "error" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "textbox", + "accessible_name": "required", + "keyboard": [ + "Tab", + "native text editing" + ], + "focus": "Keep visible focus on the active control." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "block", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/inputs/index.js", + "sha256": "12feabb54f97fd3dec9095a120c1d3dd71cf9fa5b4f2d50df018ece64b9daf07" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/inputs/js/inputs.js", + "sha256": "f4e15c290d31743d4d8b745ebd9ffb08c40ea713c2ae1961f1667e80b5a2571c" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-input for a single-line text, email, password, search, telephone or URL value that must participate in a native form.", + "do_not": [ + "Do not use Input for multiline text, numeric steppers, selects or date selection", + "Do not use the hidden presentation for visible interactive controls", + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/pagination/smart.manifest.json b/contracts/framework/smart/pagination/smart.manifest.json new file mode 100644 index 0000000..cf4408d --- /dev/null +++ b/contracts/framework/smart/pagination/smart.manifest.json @@ -0,0 +1,919 @@ +{ + "schema_version": 2, + "id": "smart.pagination", + "version": "1.0.1", + "title": "Pagination", + "summary": "Source-driven navigation for a collection split into numbered pages.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "pagination" + ], + "capabilities": [ + "render", + "interaction", + "keyboard", + "theme", + "responsive" + ], + "custom_element": "sf-pagination", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "smart.buttons", + "smart.checkbox", + "smart.dropdown", + "smart.icon-buttons", + "smart.inputs", + "smart.list-item", + "smart.spinner" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "template": { + "type": "string", + "default": "default", + "description": "Template name." + }, + "top": { + "type": "boolean", + "default": true, + "description": "Show the compatible show-more section." + }, + "middle": { + "type": "boolean", + "default": true, + "description": "Show page navigation and collection summary." + }, + "bottom": { + "type": "boolean", + "default": true, + "description": "Allow the compatible batch-action section." + }, + "top-class": { + "type": "string", + "default": "", + "description": "Framework utility classes for the show-more section." + }, + "main-class": { + "type": "string", + "default": "", + "description": "Framework utility classes for the navigation section." + }, + "bottom-class": { + "type": "string", + "default": "", + "description": "Framework utility classes for the batch-action section." + }, + "aria-label": { + "type": "string", + "default": "", + "description": "Accessible name of the navigation landmark. Empty: the text of the page's language (\"Result pages\" in English)." + }, + "pages-label": { + "type": "string", + "default": "", + "description": "Visible label before page controls. Empty: the text of the page's language (\"Pages:\" in English)." + }, + "page-label": { + "type": "string", + "default": "", + "description": "Accessible prefix for a numbered page action. Empty: the text of the page's language (\"Page\" in English)." + }, + "previous-label": { + "type": "string", + "default": "", + "description": "Accessible name of the previous-page action. Empty: the text of the page's language (\"Previous page\" in English)." + }, + "next-label": { + "type": "string", + "default": "", + "description": "Accessible name of the next-page action. Empty: the text of the page's language (\"Next page\" in English)." + }, + "last-label": { + "type": "string", + "default": "", + "description": "Visible label of the compatible last-page action. Empty: the text of the page's language (\"Last\" in English)." + }, + "total-label": { + "type": "string", + "default": "", + "description": "Visible label for the total item count. Empty: the text of the page's language (\"Total:\" in English)." + }, + "selected-label": { + "type": "string", + "default": "", + "description": "Visible label for the selected item count. Empty: the text of the page's language (\"Selected:\" in English)." + }, + "selected-count": { + "type": "integer", + "default": 0, + "minimum": 0, + "description": "Selected item count, clamped between zero and total." + }, + "show-more-text": { + "type": "string", + "default": "", + "description": "Label of the compatible show-more action. Empty: the text of the page's language (\"Show more\" in English)." + }, + "current": { + "type": "integer", + "minimum": 1, + "default": 1, + "description": "Current one-based page number." + }, + "total": { + "type": "integer", + "minimum": 0, + "default": 10, + "description": "Non-negative total item count." + }, + "page-size": { + "type": "integer", + "minimum": 1, + "default": 10, + "description": "Positive number of items per page." + }, + "page-sizes": { + "type": "string", + "default": "10,20,30,40", + "description": "Comma-separated positive page-size choices." + }, + "show-page-size": { + "type": "boolean", + "default": true, + "description": "Show the page-size selector for a non-empty collection." + }, + "page-size-label": { + "type": "string", + "default": "", + "description": "Visible and accessible label of the page-size selector. Empty: the text of the page's language (\"Per page:\" in English)." + }, + "show-actions": { + "type": "boolean", + "default": true, + "description": "Show batch actions when actions are supplied." + }, + "actions": { + "type": "string", + "default": "", + "description": "Pipe-separated compatible batch-action definitions." + }, + "action": { + "type": "string", + "default": "", + "description": "Selected batch-action value." + }, + "action-apply-text": { + "type": "string", + "default": "", + "description": "Label of the batch-action apply button. Empty: the text of the page's language (\"Apply\" in English)." + }, + "show-action-for-all": { + "type": "boolean", + "default": false, + "description": "Show the compatible all-items toggle." + }, + "action-for-all": { + "type": "boolean", + "default": false, + "description": "Current all-items toggle value." + }, + "action-for-all-label": { + "type": "string", + "default": "", + "description": "Label of the all-items toggle. Empty: the text of the page's language (\"For all\" in English)." + }, + "actions-label": { + "type": "string", + "default": "", + "description": "Accessible name of the batch-action selector. Empty: the text of the page's language (\"Action for the selected records\" in English)." + }, + "action-choose-label": { + "type": "string", + "default": "", + "description": "Placeholder of the batch-action selector, shown until an action is chosen. Empty: the text of the page's language (\"Choose an action\" in English)." + }, + "actions-region-label": { + "type": "string", + "default": "", + "description": "Accessible name of the panel that appears while rows are marked. Empty: the text of the page's language (\"Actions for the selected\" in English)." + }, + "clear-selection-label": { + "type": "string", + "default": "", + "description": "Accessible name and tooltip of the control that drops the selection. Empty: the text of the page's language (\"Clear the selection\" in English)." + }, + "count-known": { + "type": "boolean", + "default": true, + "description": "Whether the number of records is known. A host that does not count every answer sets it false, and the view offers the number instead of showing it." + }, + "can-count": { + "type": "boolean", + "default": false, + "description": "Whether the host can count on request. Without it the view offers nothing and asks for nothing." + }, + "counting": { + "type": "boolean", + "default": false, + "description": "A count is on its way; the view shows a short wait in place of the number." + }, + "has-next": { + "type": "boolean", + "default": false, + "description": "Whether a further page exists. It is what moves forward and Show more when no total was sent." + }, + "show-count-label": { + "type": "string", + "default": "", + "description": "Text of the control that asks the host for the number. Empty: the text of the page's language (\"Show the number\" in English)." + }, + "counting-label": { + "type": "string", + "default": "", + "description": "Accessible name of the short wait shown while the count is on its way. Empty: the text of the page's language (\"Counting\" in English)." + }, + "first-label": { + "type": "string", + "default": "", + "description": "Accessible name and tooltip of the control that goes to the first page. Empty: the text of the page's language (\"First\" in English)." + }, + "page-field-label": { + "type": "string", + "default": "", + "description": "Label of the field that takes a page number. Empty: the text of the page's language (\"Page:\" in English)." + }, + "show-more-busy": { + "type": "boolean", + "default": false, + "description": "Mark the Show more control as working while the host fetches the next portion; it is disabled and shows a loader." + }, + "size": { + "type": "string", + "default": "1", + "enum": [ + "1/2", + "1" + ], + "description": "The step of the size ladder its fields, buttons, labels and page numbers take: 1, or the dense 1/2 of an admin." + } + }, + "additionalProperties": false + }, + "item_contract": { + "page": "Positive one-based page number bounded by total and page-size.", + "ellipsis": "Non-interactive indicator for omitted pages." + }, + "contracts": { + "navigation": { + "const": "The visible root is a named nav; page actions are native buttons because the component emits state events instead of owning URLs." + }, + "current": { + "const": "Exactly one rendered page exposes aria-current=page when total is greater than zero." + }, + "empty": { + "const": "A zero-sized collection renders no page controls and emits no page-change." + }, + "responsive": { + "const": "A long desktop range keeps edge pages and static ellipses; a narrow range keeps the current page, adjacent pages and directional actions on one line." + }, + "composition": { + "const": "Show-more, page-size and batch-action sections remain compatible optional compositions; data loading and host actions stay outside the component." + } + }, + "methods": { + "getTopSection": { + "summary": "Returns the top section element (.sf-pagination-top), or null when it is not rendered.", + "arguments": [], + "returns": { + "type": [ + "object", + "null" + ] + } + }, + "getMainSection": { + "summary": "Returns the main section element (.sf-pagination-main), or null when it is not rendered.", + "arguments": [], + "returns": { + "type": [ + "object", + "null" + ] + } + }, + "getBottomSection": { + "summary": "Returns the bottom section element (.sf-pagination-bottom), or null when it is not rendered.", + "arguments": [], + "returns": { + "type": [ + "object", + "null" + ] + } + }, + "goToPage": { + "summary": "Moves to a page: the number is parsed as an integer and clamped to 1..pageCount when the count is known (only to at least 1 when it is not). Emits sf-page-change when the page actually changes; does nothing when the total is a known zero.", + "arguments": [ + { + "name": "page", + "type": "number|string", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "showMore": { + "summary": "Emits sf-show-more with the current paging and the given item; performs no request and changes no state.", + "arguments": [ + { + "name": "item", + "type": "object", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setPageSize": { + "summary": "Sets a positive page size, keeps the current page within the new page count and emits sf-page-size-change. A non-positive, non-numeric or unchanged size is ignored.", + "arguments": [ + { + "name": "size", + "type": "number|string", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setAction": { + "summary": "Selects a batch action by value (an empty value clears the choice) and emits sf-action-change when it differs from the current one.", + "arguments": [ + { + "name": "action", + "type": "string", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setActionForAll": { + "summary": "Sets whether the batch action applies to every record under the filter and emits sf-action-for-all-change. Turning it on also requests the count (sf-count-request with reason action-for-all) when the count is not yet known.", + "arguments": [ + { + "name": "value", + "type": "boolean", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setState": { + "summary": "Writes each key as its kebab-case attribute: false, null, undefined or an empty string removes the attribute, true sets it empty, anything else is stringified.", + "arguments": [ + { + "name": "nextState", + "type": "object", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onPageChange": { + "summary": "Adds a listener for sf-page-change; the handler is called with (current, detail, event). Ignores a non-function handler.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": "object|boolean", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onShowMore": { + "summary": "Adds a listener for sf-show-more; the handler is called with (detail, event). Ignores a non-function handler.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": "object|boolean", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": { + "sf-action-apply": { + "summary": "Runtime event sf-action-apply.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "action": { + "type": "string" + }, + "actionForAll": { + "type": "boolean" + }, + "current": { + "type": "number" + }, + "total": { + "type": "number" + }, + "pageSize": { + "type": "number" + }, + "pageCount": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "component", + "tagName", + "template", + "action", + "actionForAll", + "current", + "total", + "pageSize", + "pageCount" + ] + } + }, + "sf-action-change": { + "summary": "Runtime event sf-action-change.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "previous": { + "type": "string" + }, + "action": { + "type": "string" + } + }, + "required": [ + "component", + "tagName", + "template", + "previous", + "action" + ] + } + }, + "sf-action-for-all-change": { + "summary": "Runtime event sf-action-for-all-change.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "previous": { + "type": "boolean" + }, + "actionForAll": { + "type": "boolean" + } + }, + "required": [ + "component", + "tagName", + "template", + "previous", + "actionForAll" + ] + } + }, + "sf-count-request": { + "summary": "Runtime event sf-count-request.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "reason": { + "type": "string", + "enum": [ + "total", + "last-page", + "action-for-all" + ] + }, + "current": { + "type": "number" + }, + "pageSize": { + "type": "number" + } + }, + "required": [ + "component", + "tagName", + "template", + "reason", + "current", + "pageSize" + ] + } + }, + "sf-page-change": { + "summary": "Runtime event sf-page-change.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "previous": { + "type": "number" + }, + "current": { + "type": "number" + }, + "total": { + "type": "number" + }, + "pageCount": { + "type": [ + "number", + "null" + ] + }, + "pageSize": { + "type": "number" + } + }, + "required": [ + "component", + "tagName", + "template", + "previous", + "current", + "total", + "pageCount", + "pageSize" + ] + } + }, + "sf-page-size-change": { + "summary": "Runtime event sf-page-size-change.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "previous": { + "type": "number" + }, + "pageSize": { + "type": "number" + }, + "current": { + "type": "number" + }, + "total": { + "type": "number" + }, + "pageCount": { + "type": "number" + } + }, + "required": [ + "component", + "tagName", + "template", + "previous", + "pageSize", + "current", + "total", + "pageCount" + ] + } + }, + "sf-selection-clear": { + "summary": "Runtime event sf-selection-clear.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "selectedCount": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "component", + "tagName", + "template", + "selectedCount", + "total" + ] + } + }, + "sf-show-more": { + "summary": "Runtime event sf-show-more.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "current": { + "type": "number" + }, + "total": { + "type": "number" + }, + "pageSize": { + "type": "number" + }, + "pageCount": { + "type": [ + "number", + "null" + ] + }, + "hasNext": { + "type": "boolean" + }, + "item": { + "type": [ + "object", + "null" + ], + "description": "What showMore was called with; the built-in button passes its click target." + } + }, + "required": [ + "component", + "tagName", + "template", + "current", + "total", + "pageSize", + "pageCount", + "hasNext", + "item" + ] + } + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default", + "selected", + "disabled", + "empty" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "navigation", + "accessible_name": "required", + "keyboard": [ + "Tab" + ], + "focus": "Tab reaches only enabled native actions. Focus uses the shared keyboard-only focus-visible treatment and remains visible in forced colors; omitted pages are not focusable." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "block", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "accepted", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke", + "owner-contract", + "browser-matrix", + "documentation-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [ + { + "from": "1.0.0", + "to": "1.0.1", + "changes": [ + "Fix: the action-for-all checkbox follows the checkbox state (change) instead of toggling on click, so clicking its label no longer toggles twice and leaves it off." + ] + } + ] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/pagination/index.js", + "sha256": "5bd5a0bb2a26c582d436f25d0cc428017bbc20370a614a0a8bafcf74c9f43a34" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/pagination/js/pagination.js", + "sha256": "f278711748fa4c0c84a0d91d425fe76aa2ab2a71af9f69c1090e611e39cc5766" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-pagination for a collection divided into numbered pages when the host owns data loading and reacts to pagination events.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not use Pagination for semantic steps or short content that can be shown at once", + "Do not make an ellipsis interactive or put the pagination row on multiple lines", + "Do not treat the optional batch-action section as the core pagination contract" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/spinner/smart.manifest.json b/contracts/framework/smart/spinner/smart.manifest.json new file mode 100644 index 0000000..d0fa9e2 --- /dev/null +++ b/contracts/framework/smart/spinner/smart.manifest.json @@ -0,0 +1,289 @@ +{ + "schema_version": 2, + "id": "smart.spinner", + "version": "1.0.0", + "title": "Spinner", + "summary": "Indeterminate waiting indicator with arc or dots presentation, optional polite status announcement and Framework-owned motion.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "spinner" + ], + "capabilities": [ + "render", + "theme", + "responsive", + "loading-status", + "reduced-motion" + ], + "custom_element": "sf-spinner", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.spinner" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "size": { + "type": "string", + "default": "1", + "enum": [ + "1/2", + "1", + "2", + "3" + ] + }, + "width": { + "type": "string", + "default": "" + }, + "height": { + "type": "string", + "default": "" + }, + "label": { + "type": "string", + "default": "", + "description": "Empty: the text of the page's language (\"Loading...\" in English)." + }, + "kind": { + "type": "string", + "default": "arc", + "enum": [ + "arc", + "dots" + ], + "description": "What the spinner is: an arc or a row of dots." + }, + "dots": { + "type": "string", + "default": "16", + "pattern": "^(?:[3-9]|[12][0-9]|3[0-2])$" + }, + "filled": { + "type": "string", + "default": "6", + "pattern": "^(?:[1-9]|[12][0-9]|3[0-2])$" + }, + "stroke-width": { + "type": "string", + "default": "" + }, + "dot-radius": { + "type": "string", + "default": "" + }, + "infinite": { + "type": "boolean", + "default": false + }, + "announce": { + "type": "boolean", + "default": false + }, + "direction": { + "type": "string", + "default": "clockwise", + "enum": [ + "clockwise", + "counterclockwise" + ] + }, + "root-class": { + "type": "string", + "default": "" + }, + "variant": { + "type": "string", + "default": "arc", + "description": "Legacy name for kind, still honoured. See contracts/public-api-axes.json.", + "enum": [ + "arc", + "dots" + ] + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": {}, + "methods": { + "getSpinnerRoot": { + "summary": "Returns the inner spinner root (.sf-loader-container), or null before render.", + "arguments": [], + "returns": { + "type": [ + "object", + "null" + ] + } + }, + "refreshSpinner": { + "summary": "Re-renders the bound spinner root from its current configuration; does nothing before it is bound.", + "arguments": [], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": {}, + "state": { + "machines": { + "waiting": [ + "active", + "complete" + ] + }, + "visual_states": [ + "default", + "active" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "host", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention", + "setting or clearing aria-busy on the containing region", + "inventing completion, error or timeout messages" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "status when announce is true and label is non-empty; otherwise no widget role", + "accessible_name": "recommended", + "keyboard": [], + "focus": "Spinner is not interactive and never enters the focus order." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/spinner/index.js", + "sha256": "ea495501984dbf3f7fcc054cc9004384d0185a621f897c53f4a75401ea49c401" + }, + { + "path": "src/smart/spinner/js/templates/default.js", + "sha256": "80a5edb0cd519ba7429c7c47a368d48b705a375cbe333467a12f6e4bb537c335" + }, + { + "path": "src/smart/spinner/rule.js", + "sha256": "d313ccac9d906fbb9f767a4a67beefa9a4e249b2bbc102cd6cfee312fab81648" + }, + { + "path": "src/smart/spinner/docs/docs.md", + "sha256": "7619ab4a661769084f4f072290ab17bf730dfa6a4690847c33c60e96d674101a" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/spinner/js/spinner.js", + "sha256": "27bff04ab12cfdf875143737f258e64b3e98f0ed12501ee8c158dd1d857080d8" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-spinner for a bounded waiting state whose progress cannot be expressed as a meaningful percentage.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not use Spinner when determinate Progress or content-matched Skeleton is more accurate", + "Do not make Spinner focusable", + "Do not omit the containing region's aria-busy state", + "Do not announce an empty or non-localized label" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/tabs/smart.manifest.json b/contracts/framework/smart/tabs/smart.manifest.json new file mode 100644 index 0000000..95d3fd9 --- /dev/null +++ b/contracts/framework/smart/tabs/smart.manifest.json @@ -0,0 +1,449 @@ +{ + "schema_version": 2, + "id": "smart.tabs", + "version": "1.0.0", + "title": "Tabs", + "summary": "A tab list that shows one local panel at a time, with text or icon tabs given as attributes, slots or data, roving keyboard focus and linked tab panels.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "tabs" + ], + "capabilities": [ + "render", + "interaction", + "keyboard", + "theme", + "responsive" + ], + "custom_element": "sf-tabs", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.tabs", + "smart.buttons", + "smart.icon-buttons" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "template": { + "type": "string", + "default": "default" + }, + "type": { + "type": "string", + "default": null + }, + "size": { + "type": "string", + "default": "1" + }, + "variant": { + "type": "string", + "default": "buttons" + }, + "scheme": { + "type": "string", + "default": "default", + "description": "Built-in button appearance: default, outline or link. Historical name retained; this is not a semantic color selector. Custom templates may interpret it separately." + }, + "top-position": { + "type": "string", + "default": "start" + }, + "active-index": { + "type": "number", + "default": 0 + }, + "items": { + "type": "string", + "default": [], + "description": "An item (set with setItems) may carry key (a stable id for the settings; the index otherwise), icon, count (a small counter after the label), href (the tab is a link: activating it goes to the address; aria-current=page on the active one) and pinned (never hidden, fixed in the settings)." + }, + "root-class": { + "type": "string", + "default": "" + }, + "top-class": { + "type": "string", + "default": "" + }, + "panel-class": { + "type": "string", + "default": "" + }, + "overflow": { + "type": "string", + "enum": [ + "scroll", + "wrap", + "more" + ], + "default": "scroll", + "description": "What the tabs do when they do not fit: scroll (the row scrolls), wrap (rows wrap), or more (the tabs that do not fit go into a trailing «Ещё (n)» menu; the active one always stays)." + }, + "configurable": { + "type": "boolean", + "default": false, + "description": "A gear at the end of the tabs («Настроить вкладки») opens the standard menu with the tabs as a sortable list, a visibility checkbox per tab (pinned tabs fixed) and «Сбросить» in its footer. The choice is the host's: sf-tabs-settings-change {order, hidden}, sf-tabs-settings-reset, setSettings({order, hidden})." + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": {}, + "methods": { + "getData": { + "summary": "Returns the data set with setData: {tabs, panels, ...}; {tabs: [], panels: []} when none was set.", + "arguments": [], + "returns": { + "type": "object" + } + }, + "setData": { + "summary": "Merges data into the current data (a function receives the current data and returns the next) and re-renders. tabs or items become tab items; panels or content become panels. A non-object is ignored.", + "arguments": [ + { + "name": "data", + "type": "object|function", + "required": true + }, + { + "name": "reason", + "type": "string", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setItems": { + "summary": "Replaces the tabs in the data (a function receives the current tabs) and re-renders.", + "arguments": [ + { + "name": "items", + "type": "array|function", + "required": true + }, + { + "name": "reason", + "type": "string", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setPanels": { + "summary": "Replaces the panels in the data (a function receives the current panels) and re-renders.", + "arguments": [ + { + "name": "panels", + "type": "array|function", + "required": true + }, + { + "name": "reason", + "type": "string", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setState": { + "summary": "Writes each key as its kebab-case attribute; an array (items) is serialised as label::flags entries joined by |. false, null, undefined or empty removes the attribute, true sets it empty.", + "arguments": [ + { + "name": "nextState", + "type": "object", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "goTo": { + "summary": "Activates the tab at index (an index out of range means 0); does nothing for a disabled or the active tab. Sets active-index and emits sf-tab-change.", + "arguments": [ + { + "name": "index", + "type": "number|string", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "onTabChange": { + "summary": "Adds a listener for sf-tab-change; the handler is called with (current, detail, event). Ignores a non-function handler.", + "arguments": [ + { + "name": "handler", + "type": "function", + "required": true + }, + { + "name": "options", + "type": "object|boolean", + "required": false + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + }, + "setSettings": { + "summary": "Applies the person's stored arrangement: {order: [keys], hidden: [keys]}. A key the items no longer have is ignored; an item the order does not name follows in its declared place, visible; a pinned tab is never hidden; the active tab is shown in place even when hidden.", + "arguments": [ + { + "name": "settings", + "type": "object", + "required": true + } + ], + "returns": { + "type": "object", + "description": "The element, for chaining." + } + } + }, + "events": { + "sf-tab-change": { + "summary": "Runtime event sf-tab-change.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The emitting element." + }, + "tagName": { + "type": "string" + }, + "template": { + "type": "string" + }, + "previous": { + "type": "number" + }, + "current": { + "type": "number" + }, + "item": { + "type": "object", + "description": "A normalised tab item: label plus what was given (disabled, icon, component and so on)." + }, + "items": { + "type": "array", + "items": { + "type": "object", + "description": "A normalised tab item: label plus what was given (disabled, icon, component and so on)." + } + } + }, + "required": [ + "component", + "tagName", + "template", + "previous", + "current", + "item", + "items" + ] + } + }, + "sf-tabs-settings-change": { + "summary": "The person ordered or showed/hid a tab in the settings; applied at once. The host keeps it and gives it back with setSettings.", + "payload": { + "type": "object", + "required": [ + "order", + "hidden" + ], + "properties": { + "order": { + "type": "array", + "items": { + "type": "string" + } + }, + "hidden": { + "type": "array", + "items": { + "type": "string" + } + }, + "reason": { + "type": "string", + "enum": [ + "order", + "visibility" + ] + } + } + } + }, + "sf-tabs-settings-reset": { + "summary": "The person asked for the declared order back; the component shows it until the host answers with setSettings.", + "payload": { + "type": "object", + "properties": {} + } + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": "tablist", + "accessible_name": "required", + "keyboard": [ + "Tab", + "ArrowLeft", + "ArrowRight", + "ArrowUp", + "ArrowDown", + "Home", + "End", + "Enter", + "Space" + ], + "focus": "Built-in text/icon tabs use one enabled native tab stop and linked panels. Navigation arrows follow orientation and RTL, skip disabled tabs, wrap, focus and activate. Perpendicular arrows and nested widget keys remain local. A custom tab component descriptor is presentation-only: its named wrapper remains the single tab stop and the rendered Smart visual is inert." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "block", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "described", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/tabs/index.js", + "sha256": "1175346be415afaad1376b91a7ef116da89f3e0f4fbbb8b8595f61fd28f78352" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/tabs/js/tabs.js", + "sha256": "cc8c1f2b5bc452c8c567399255b11073ebfd38a9f500804100953d91b3df6d5d" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-tabs when the interface needs the tabs behavior.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/smart/tags/smart.manifest.json b/contracts/framework/smart/tags/smart.manifest.json new file mode 100644 index 0000000..fd33356 --- /dev/null +++ b/contracts/framework/smart/tags/smart.manifest.json @@ -0,0 +1,429 @@ +{ + "schema_version": 2, + "id": "smart.tags", + "version": "1.1.0", + "title": "Tags", + "summary": "Compact static, selectable and removable labels with one explicit interaction owner.", + "kind": "smart", + "reuse_mode": "whole", + "lifecycle": "experimental", + "tags": [ + "tags" + ], + "capabilities": [ + "render", + "theme", + "responsive", + "interaction", + "accessibility" + ], + "custom_element": "sf-tag", + "templates": [ + "default" + ], + "exported_parts": [], + "composition": { + "uses": [ + "component.avatars", + "component.dot", + "smart.icon-buttons", + "component.tags" + ], + "public_parts": [] + }, + "inputs": { + "type": "object", + "properties": { + "template": { + "type": "string", + "default": "default", + "description": "Template name." + }, + "kind": { + "type": "string", + "default": "checkbox", + "description": "What the tag carries: a checkbox, an icon, a colour, an avatar, or nothing but its label. The compatibility input quantity is still accepted and means default.", + "enum": [ + "checkbox", + "icon", + "default", + "color", + "avatar" + ] + }, + "status": { + "type": "string", + "default": "", + "description": "What the tag reports, in the shared status vocabulary. Leave it empty for a tag that reports nothing.", + "enum": [ + "", + "info", + "success", + "warning", + "error" + ] + }, + "appearance": { + "type": "string", + "default": "default", + "enum": [ + "default", + "surface", + "ghost" + ], + "description": "Visual appearance, read from the neutral alpha ramp and separate from type: surface keeps a faint fill and a boundary, ghost keeps nothing until it is hovered. Only the neutral types take it, because a status tag carries its meaning in its colour." + }, + "size": { + "type": "string", + "default": "1/2", + "enum": [ + "1/3", + "1/2", + "1", + "2", + "3" + ], + "description": "Framework size token: sets the label text and the default spacing." + }, + "line": { + "type": "string", + "default": "", + "enum": [ + "", + "1/2", + "1", + "2" + ], + "description": "Takes the text line of this form size as an inline tag one size down, for a table cell, so the row keeps its control height. Overrides size and inline." + }, + "spacing": { + "type": "string", + "default": "normal", + "enum": [ + "compact", + "normal", + "comfortable", + "spacious" + ], + "description": "Block padding of a free-standing tag, with the names the buttons use." + }, + "inline": { + "type": "boolean", + "default": false, + "description": "Sit on the text line of another control: no block padding, a flush label, and a remove button the height of the line. The host may publish --sf-tag--line." + }, + "text": { + "type": "string", + "default": "", + "description": "Visible tag label." + }, + "count": { + "type": "string", + "default": "", + "description": "Optional count shown with the default tag." + }, + "icon": { + "type": "string", + "default": "", + "description": "Decorative Framework icon name." + }, + "color-class": { + "type": "string", + "default": "", + "description": "Framework semantic background utility for the color marker." + }, + "avatar-image-url": { + "type": "string", + "default": "", + "description": "Avatar image URL; the visible text remains the accessible label." + }, + "avatar-text": { + "type": "string", + "default": "", + "description": "Avatar initials fallback." + }, + "root-class": { + "type": "string", + "default": "", + "description": "Framework utility classes for the visible root." + }, + "avatar-status": { + "type": "string", + "default": "", + "description": "Reserved avatar status value for compatible templates." + }, + "active": { + "type": "boolean", + "default": false, + "description": "Selected state of a checkbox tag." + }, + "disabled": { + "type": "boolean", + "default": false, + "description": "Disable interactive toggle and close actions." + }, + "closable": { + "type": "boolean", + "default": false, + "description": "Show a separate remove action; icon, color and avatar tags enable it by default, a checkbox tag only when it is set." + }, + "interactive": { + "type": "boolean", + "default": false, + "description": "Render the label as a button next to the remove action, for tags that open something (for example a filter chip menu); ignored for checkbox tags." + }, + "aria-label": { + "type": "string", + "default": "", + "description": "Optional accessible name override for a selectable tag." + }, + "close-label": { + "type": "string", + "default": "", + "description": "Accessible name of the remove action. Defaults to Remove, or Удалить on a Russian page." + }, + "type": { + "type": "string", + "default": "checkbox", + "description": "Legacy name that answered both questions from one list: a content word reaches kind, a status word reaches status. See contracts/public-api-axes.json.", + "enum": [ + "checkbox", + "icon", + "default", + "color", + "avatar", + "info", + "success", + "warning", + "error" + ] + } + }, + "additionalProperties": false + }, + "item_contract": {}, + "contracts": { + "static": { + "const": "Default, icon, color, avatar and status tags are labels without an action role or Tab stop." + }, + "selection": { + "const": "Checkbox tags render one native toggle button and expose active through aria-pressed." + }, + "removal": { + "const": "A removable value keeps its surface static and exposes one separately named close action." + }, + "events": { + "const": "A successful toggle emits one change event; a successful removal emits one close event. Disabled controls emit neither." + }, + "presentation": { + "const": "Tag geometry uses semantic UI, typography, role-color and motion tokens; static tags do not gain action hover affordance." + } + }, + "methods": { + "onToggle": { + "summary": "Toggle an enabled checkbox tag and emit its new active state.", + "arguments": [], + "returns": { + "type": [ + "object", + "boolean", + "null" + ] + } + }, + "onClose": { + "summary": "Emit removal intent for an enabled closable tag.", + "arguments": [], + "returns": { + "type": [ + "object", + "boolean", + "null" + ] + } + } + }, + "events": { + "change": { + "summary": "The active state of a checkbox tag changed.", + "payload": { + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "component": { + "type": "object", + "description": "The sf-tag element." + } + }, + "required": [ + "active", + "component" + ] + }, + "canonical": true + }, + "close": { + "summary": "Removal was requested from the separately named close action.", + "payload": { + "type": "object", + "properties": { + "component": { + "type": "object", + "description": "The sf-tag element; the host removes it." + } + }, + "required": [ + "component" + ] + } + } + }, + "state": { + "machines": {}, + "visual_states": [ + "default", + "active", + "disabled" + ] + }, + "persistence": { + "mode": "none", + "source_of_truth": "component", + "network_owner": "none", + "revision_field": null + }, + "ownership": { + "source": "simai/ui-source", + "data": "fixture", + "effects": "component", + "forbidden_client_responsibilities": [ + "backend access decisions", + "host route invention" + ] + }, + "security": { + "permissions_owner": "none", + "untrusted_inputs": [ + "props", + "children" + ], + "network_policy": "deny" + }, + "accessibility": { + "role": null, + "accessible_name": "required", + "keyboard": [ + "Tab", + "Enter", + "Space" + ], + "focus": "Only native toggle and close actions enter Tab order. Focus is keyboard-visible, geometry-stable and forced-colors-safe." + }, + "presentation": { + "themes": [ + "light", + "dark" + ], + "locales": [ + "ru", + "en" + ], + "responsive": [ + "desktop", + "mobile" + ], + "skeleton": { + "shape": "none", + "while_loading": "none" + } + }, + "adapter": { + "kind": "generic", + "protocol": "simai.smart-studio-adapter.v1", + "module": null + }, + "artifacts": { + "fixtures": [ + "studio.fixture.json" + ], + "scenarios": [ + "studio.scenario.json" + ] + }, + "readiness": { + "level": "accepted", + "required_checks": [ + "manifest", + "fixture", + "runtime-upgrade", + "scenario-smoke", + "owner-contract", + "browser-matrix", + "documentation-smoke" + ] + }, + "compatibility": { + "contract_schema": { + "id": "https://simai.io/contracts/smart-component-manifest.v2.schema.json", + "version": 2 + }, + "runtime_pair": { + "ui_revision": "094f3d549aa7921d2d7f8773972c73711dd6a72e", + "ui_smart_revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c" + }, + "aliases": [], + "deprecations": [], + "replacement": null, + "migrations": [ + { + "from": "1.0.0", + "to": "1.1.0", + "changes": [ + "Add interactive: the label becomes a native button beside the separate remove action, so the tag is reachable by Tab and opens with Enter or Space.", + "Without interactive the markup is unchanged." + ] + } + ] + }, + "provenance": { + "source_repository": "simai/ui-source", + "source_revision": "d73527c92056a684b5f34a46ec7315e1ded9be19", + "source_artifacts": [ + { + "path": "src/smart/tags/index.js", + "sha256": "284858a1f409efe1fab3c9e4ca19a707baaa155774d797aa02864314f92a7ead" + } + ], + "generated_runtime": [ + { + "repository": "simai/ui-smart", + "revision": "856fb5d751fad1c76104c32515f4c1869dd75b6c", + "path": "smart/tags/js/tags.js", + "sha256": "6686beccecc39ddeac5be946313bf542665d6b8cc58dca1457ca5048ad1d3ba2" + } + ] + }, + "ai_guidance": { + "use_when": "Use sf-tag for a compact category, filter, selected value or status with an explicit static, toggle or remove owner.", + "do_not": [ + "Do not copy generated ui-smart code", + "Do not move host data or access decisions into the component", + "Do not make a static tag focusable", + "Do not nest a toggle and remove action in one tag surface" + ], + "required_reads": [ + "inputs", + "methods", + "events", + "ownership", + "provenance" + ], + "minimal_example": "", + "owner_commands": [ + "npm run contract:verify", + "npm test" + ] + } +} diff --git a/contracts/framework/utility/display/default/css/default.css b/contracts/framework/utility/display/default/css/default.css new file mode 100644 index 0000000..04d701c --- /dev/null +++ b/contracts/framework/utility/display/default/css/default.css @@ -0,0 +1,68 @@ +@layer sf.utilities { + .block { + display: block; + } + .inline-block { + display: inline-block; + } + .inline { + display: inline; + } + .flex { + display: flex; + } + .inline-flex { + display: inline-flex; + } + .table { + display: table; + } + .display-table { + display: table; + } + .inline-table { + display: inline-table; + } + .table-caption { + display: table-caption; + } + .table-cell { + display: table-cell; + } + .table-column { + display: table-column; + } + .table-column-group { + display: table-column-group; + } + .table-footer-group { + display: table-footer-group; + } + .table-header-group { + display: table-header-group; + } + .table-row-group { + display: table-row-group; + } + .table-row { + display: table-row; + } + .flow-root { + display: flow-root; + } + .grid { + display: grid; + } + .inline-grid { + display: inline-grid; + } + .content { + display: contents; + } + .list-item { + display: list-item; + } + .hidden { + display: none; + } +} diff --git a/contracts/framework/utility/display/lg/css/lg.css b/contracts/framework/utility/display/lg/css/lg.css new file mode 100644 index 0000000..9231f8e --- /dev/null +++ b/contracts/framework/utility/display/lg/css/lg.css @@ -0,0 +1,70 @@ +@layer sf.utilities { + @media (min-width: 60rem) { + .lg\:block { + display: block; + } + .lg\:inline-block { + display: inline-block; + } + .lg\:inline { + display: inline; + } + .lg\:flex { + display: flex; + } + .lg\:inline-flex { + display: inline-flex; + } + .lg\:table { + display: table; + } + .lg\:display-table { + display: table; + } + .lg\:inline-table { + display: inline-table; + } + .lg\:table-caption { + display: table-caption; + } + .lg\:table-cell { + display: table-cell; + } + .lg\:table-column { + display: table-column; + } + .lg\:table-column-group { + display: table-column-group; + } + .lg\:table-footer-group { + display: table-footer-group; + } + .lg\:table-header-group { + display: table-header-group; + } + .lg\:table-row-group { + display: table-row-group; + } + .lg\:table-row { + display: table-row; + } + .lg\:flow-root { + display: flow-root; + } + .lg\:grid { + display: grid; + } + .lg\:inline-grid { + display: inline-grid; + } + .lg\:content { + display: contents; + } + .lg\:list-item { + display: list-item; + } + .lg\:hidden { + display: none; + } + } +} diff --git a/contracts/framework/utility/display/md/css/md.css b/contracts/framework/utility/display/md/css/md.css new file mode 100644 index 0000000..091a34f --- /dev/null +++ b/contracts/framework/utility/display/md/css/md.css @@ -0,0 +1,70 @@ +@layer sf.utilities { + @media (min-width: 44rem) { + .md\:block { + display: block; + } + .md\:inline-block { + display: inline-block; + } + .md\:inline { + display: inline; + } + .md\:flex { + display: flex; + } + .md\:inline-flex { + display: inline-flex; + } + .md\:table { + display: table; + } + .md\:display-table { + display: table; + } + .md\:inline-table { + display: inline-table; + } + .md\:table-caption { + display: table-caption; + } + .md\:table-cell { + display: table-cell; + } + .md\:table-column { + display: table-column; + } + .md\:table-column-group { + display: table-column-group; + } + .md\:table-footer-group { + display: table-footer-group; + } + .md\:table-header-group { + display: table-header-group; + } + .md\:table-row-group { + display: table-row-group; + } + .md\:table-row { + display: table-row; + } + .md\:flow-root { + display: flow-root; + } + .md\:grid { + display: grid; + } + .md\:inline-grid { + display: inline-grid; + } + .md\:content { + display: contents; + } + .md\:list-item { + display: list-item; + } + .md\:hidden { + display: none; + } + } +} diff --git a/contracts/framework/utility/display/sm/css/sm.css b/contracts/framework/utility/display/sm/css/sm.css new file mode 100644 index 0000000..5abfdf9 --- /dev/null +++ b/contracts/framework/utility/display/sm/css/sm.css @@ -0,0 +1,70 @@ +@layer sf.utilities { + @media (min-width: 32rem) { + .sm\:block { + display: block; + } + .sm\:inline-block { + display: inline-block; + } + .sm\:inline { + display: inline; + } + .sm\:flex { + display: flex; + } + .sm\:inline-flex { + display: inline-flex; + } + .sm\:table { + display: table; + } + .sm\:display-table { + display: table; + } + .sm\:inline-table { + display: inline-table; + } + .sm\:table-caption { + display: table-caption; + } + .sm\:table-cell { + display: table-cell; + } + .sm\:table-column { + display: table-column; + } + .sm\:table-column-group { + display: table-column-group; + } + .sm\:table-footer-group { + display: table-footer-group; + } + .sm\:table-header-group { + display: table-header-group; + } + .sm\:table-row-group { + display: table-row-group; + } + .sm\:table-row { + display: table-row; + } + .sm\:flow-root { + display: flow-root; + } + .sm\:grid { + display: grid; + } + .sm\:inline-grid { + display: inline-grid; + } + .sm\:content { + display: contents; + } + .sm\:list-item { + display: list-item; + } + .sm\:hidden { + display: none; + } + } +} diff --git a/contracts/framework/utility/display/xl/css/xl.css b/contracts/framework/utility/display/xl/css/xl.css new file mode 100644 index 0000000..6e335ef --- /dev/null +++ b/contracts/framework/utility/display/xl/css/xl.css @@ -0,0 +1,70 @@ +@layer sf.utilities { + @media (min-width: 72rem) { + .xl\:block { + display: block; + } + .xl\:inline-block { + display: inline-block; + } + .xl\:inline { + display: inline; + } + .xl\:flex { + display: flex; + } + .xl\:inline-flex { + display: inline-flex; + } + .xl\:table { + display: table; + } + .xl\:display-table { + display: table; + } + .xl\:inline-table { + display: inline-table; + } + .xl\:table-caption { + display: table-caption; + } + .xl\:table-cell { + display: table-cell; + } + .xl\:table-column { + display: table-column; + } + .xl\:table-column-group { + display: table-column-group; + } + .xl\:table-footer-group { + display: table-footer-group; + } + .xl\:table-header-group { + display: table-header-group; + } + .xl\:table-row-group { + display: table-row-group; + } + .xl\:table-row { + display: table-row; + } + .xl\:flow-root { + display: flow-root; + } + .xl\:grid { + display: grid; + } + .xl\:inline-grid { + display: inline-grid; + } + .xl\:content { + display: contents; + } + .xl\:list-item { + display: list-item; + } + .xl\:hidden { + display: none; + } + } +} diff --git a/contracts/framework/utility/display/xxl/css/xxl.css b/contracts/framework/utility/display/xxl/css/xxl.css new file mode 100644 index 0000000..65cfa63 --- /dev/null +++ b/contracts/framework/utility/display/xxl/css/xxl.css @@ -0,0 +1,70 @@ +@layer sf.utilities { + @media (min-width: 80rem) { + .xxl\:block { + display: block; + } + .xxl\:inline-block { + display: inline-block; + } + .xxl\:inline { + display: inline; + } + .xxl\:flex { + display: flex; + } + .xxl\:inline-flex { + display: inline-flex; + } + .xxl\:table { + display: table; + } + .xxl\:display-table { + display: table; + } + .xxl\:inline-table { + display: inline-table; + } + .xxl\:table-caption { + display: table-caption; + } + .xxl\:table-cell { + display: table-cell; + } + .xxl\:table-column { + display: table-column; + } + .xxl\:table-column-group { + display: table-column-group; + } + .xxl\:table-footer-group { + display: table-footer-group; + } + .xxl\:table-header-group { + display: table-header-group; + } + .xxl\:table-row-group { + display: table-row-group; + } + .xxl\:table-row { + display: table-row; + } + .xxl\:flow-root { + display: flow-root; + } + .xxl\:grid { + display: grid; + } + .xxl\:inline-grid { + display: inline-grid; + } + .xxl\:content { + display: contents; + } + .xxl\:list-item { + display: list-item; + } + .xxl\:hidden { + display: none; + } + } +} diff --git a/contracts/framework/utility/flex-direction/default/css/default.css b/contracts/framework/utility/flex-direction/default/css/default.css new file mode 100644 index 0000000..7d01a25 --- /dev/null +++ b/contracts/framework/utility/flex-direction/default/css/default.css @@ -0,0 +1,14 @@ +@layer sf.utilities { + .flex-row { + flex-direction: row; + } + .flex-col { + flex-direction: column; + } + .flex-row-reverse { + flex-direction: row-reverse; + } + .flex-col-reverse { + flex-direction: column-reverse; + } +} diff --git a/contracts/framework/utility/flex-direction/lg/css/lg.css b/contracts/framework/utility/flex-direction/lg/css/lg.css new file mode 100644 index 0000000..651ce5e --- /dev/null +++ b/contracts/framework/utility/flex-direction/lg/css/lg.css @@ -0,0 +1,16 @@ +@layer sf.utilities { + @media (min-width: 60rem) { + .lg\:flex-row { + flex-direction: row; + } + .lg\:flex-col { + flex-direction: column; + } + .lg\:flex-row-reverse { + flex-direction: row-reverse; + } + .lg\:flex-col-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/contracts/framework/utility/flex-direction/md/css/md.css b/contracts/framework/utility/flex-direction/md/css/md.css new file mode 100644 index 0000000..9cc6056 --- /dev/null +++ b/contracts/framework/utility/flex-direction/md/css/md.css @@ -0,0 +1,16 @@ +@layer sf.utilities { + @media (min-width: 44rem) { + .md\:flex-row { + flex-direction: row; + } + .md\:flex-col { + flex-direction: column; + } + .md\:flex-row-reverse { + flex-direction: row-reverse; + } + .md\:flex-col-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/contracts/framework/utility/flex-direction/sm/css/sm.css b/contracts/framework/utility/flex-direction/sm/css/sm.css new file mode 100644 index 0000000..27a1e49 --- /dev/null +++ b/contracts/framework/utility/flex-direction/sm/css/sm.css @@ -0,0 +1,16 @@ +@layer sf.utilities { + @media (min-width: 32rem) { + .sm\:flex-row { + flex-direction: row; + } + .sm\:flex-col { + flex-direction: column; + } + .sm\:flex-row-reverse { + flex-direction: row-reverse; + } + .sm\:flex-col-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/contracts/framework/utility/flex-direction/xl/css/xl.css b/contracts/framework/utility/flex-direction/xl/css/xl.css new file mode 100644 index 0000000..d39d28a --- /dev/null +++ b/contracts/framework/utility/flex-direction/xl/css/xl.css @@ -0,0 +1,16 @@ +@layer sf.utilities { + @media (min-width: 72rem) { + .xl\:flex-row { + flex-direction: row; + } + .xl\:flex-col { + flex-direction: column; + } + .xl\:flex-row-reverse { + flex-direction: row-reverse; + } + .xl\:flex-col-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/contracts/framework/utility/flex-direction/xxl/css/xxl.css b/contracts/framework/utility/flex-direction/xxl/css/xxl.css new file mode 100644 index 0000000..7da8c34 --- /dev/null +++ b/contracts/framework/utility/flex-direction/xxl/css/xxl.css @@ -0,0 +1,16 @@ +@layer sf.utilities { + @media (min-width: 80rem) { + .xxl\:flex-row { + flex-direction: row; + } + .xxl\:flex-col { + flex-direction: column; + } + .xxl\:flex-row-reverse { + flex-direction: row-reverse; + } + .xxl\:flex-col-reverse { + flex-direction: column-reverse; + } + } +} diff --git a/contracts/framework/utility/gap/default/css/default.css b/contracts/framework/utility/gap/default/css/default.css new file mode 100644 index 0000000..9e1f6de --- /dev/null +++ b/contracts/framework/utility/gap/default/css/default.css @@ -0,0 +1,194 @@ +@layer sf.utilities { + .gap-0, + .g-0 { + gap: var(--sf-space-0); + } + .gap-1\/4, + .g-1\/4 { + gap: var(--sf-space-1\/4); + } + .gap-1\/3, + .g-1\/3 { + gap: var(--sf-space-1\/3); + } + .gap-1\/2, + .g-1\/2 { + gap: var(--sf-space-1\/2); + } + .gap-1, + .g-1 { + gap: var(--sf-space-1); + } + .gap-2, + .g-2 { + gap: var(--sf-space-2); + } + .gap-3, + .g-3 { + gap: var(--sf-space-3); + } + .gap-4, + .g-4 { + gap: var(--sf-space-4); + } + .gap-5, + .g-5 { + gap: var(--sf-space-5); + } + .gap-6, + .g-6 { + gap: var(--sf-space-6); + } + .gap-7, + .g-7 { + gap: var(--sf-space-7); + } + .gap-8, + .g-8 { + gap: var(--sf-space-8); + } + .col-gap-0, + .gap-x-0, + .g-x-0 { + -webkit-column-gap: var(--sf-space-0); + -moz-column-gap: var(--sf-space-0); + column-gap: var(--sf-space-0); + } + .row-gap-0, + .gap-y-0, + .g-y-0 { + row-gap: var(--sf-space-0); + } + .col-gap-1\/4, + .gap-x-1\/4, + .g-x-1\/4 { + -webkit-column-gap: var(--sf-space-1\/4); + -moz-column-gap: var(--sf-space-1\/4); + column-gap: var(--sf-space-1\/4); + } + .row-gap-1\/4, + .gap-y-1\/4, + .g-y-1\/4 { + row-gap: var(--sf-space-1\/4); + } + .col-gap-1\/3, + .gap-x-1\/3, + .g-x-1\/3 { + -webkit-column-gap: var(--sf-space-1\/3); + -moz-column-gap: var(--sf-space-1\/3); + column-gap: var(--sf-space-1\/3); + } + .row-gap-1\/3, + .gap-y-1\/3, + .g-y-1\/3 { + row-gap: var(--sf-space-1\/3); + } + .col-gap-1\/2, + .gap-x-1\/2, + .g-x-1\/2 { + -webkit-column-gap: var(--sf-space-1\/2); + -moz-column-gap: var(--sf-space-1\/2); + column-gap: var(--sf-space-1\/2); + } + .row-gap-1\/2, + .gap-y-1\/2, + .g-y-1\/2 { + row-gap: var(--sf-space-1\/2); + } + .col-gap-1, + .gap-x-1, + .g-x-1 { + -webkit-column-gap: var(--sf-space-1); + -moz-column-gap: var(--sf-space-1); + column-gap: var(--sf-space-1); + } + .row-gap-1, + .gap-y-1, + .g-y-1 { + row-gap: var(--sf-space-1); + } + .col-gap-2, + .gap-x-2, + .g-x-2 { + -webkit-column-gap: var(--sf-space-2); + -moz-column-gap: var(--sf-space-2); + column-gap: var(--sf-space-2); + } + .row-gap-2, + .gap-y-2, + .g-y-2 { + row-gap: var(--sf-space-2); + } + .col-gap-3, + .gap-x-3, + .g-x-3 { + -webkit-column-gap: var(--sf-space-3); + -moz-column-gap: var(--sf-space-3); + column-gap: var(--sf-space-3); + } + .row-gap-3, + .gap-y-3, + .g-y-3 { + row-gap: var(--sf-space-3); + } + .col-gap-4, + .gap-x-4, + .g-x-4 { + -webkit-column-gap: var(--sf-space-4); + -moz-column-gap: var(--sf-space-4); + column-gap: var(--sf-space-4); + } + .row-gap-4, + .gap-y-4, + .g-y-4 { + row-gap: var(--sf-space-4); + } + .col-gap-5, + .gap-x-5, + .g-x-5 { + -webkit-column-gap: var(--sf-space-5); + -moz-column-gap: var(--sf-space-5); + column-gap: var(--sf-space-5); + } + .row-gap-5, + .gap-y-5, + .g-y-5 { + row-gap: var(--sf-space-5); + } + .col-gap-6, + .gap-x-6, + .g-x-6 { + -webkit-column-gap: var(--sf-space-6); + -moz-column-gap: var(--sf-space-6); + column-gap: var(--sf-space-6); + } + .row-gap-6, + .gap-y-6, + .g-y-6 { + row-gap: var(--sf-space-6); + } + .col-gap-7, + .gap-x-7, + .g-x-7 { + -webkit-column-gap: var(--sf-space-7); + -moz-column-gap: var(--sf-space-7); + column-gap: var(--sf-space-7); + } + .row-gap-7, + .gap-y-7, + .g-y-7 { + row-gap: var(--sf-space-7); + } + .col-gap-8, + .gap-x-8, + .g-x-8 { + -webkit-column-gap: var(--sf-space-8); + -moz-column-gap: var(--sf-space-8); + column-gap: var(--sf-space-8); + } + .row-gap-8, + .gap-y-8, + .g-y-8 { + row-gap: var(--sf-space-8); + } +} diff --git a/contracts/framework/utility/gap/lg/css/lg.css b/contracts/framework/utility/gap/lg/css/lg.css new file mode 100644 index 0000000..2dd6058 --- /dev/null +++ b/contracts/framework/utility/gap/lg/css/lg.css @@ -0,0 +1,196 @@ +@layer sf.utilities { + @media (min-width: 60rem) { + .lg\:gap-0, + .lg\:g-0 { + gap: var(--sf-space-0); + } + .lg\:gap-1\/4, + .lg\:g-1\/4 { + gap: var(--sf-space-1\/4); + } + .lg\:gap-1\/3, + .lg\:g-1\/3 { + gap: var(--sf-space-1\/3); + } + .lg\:gap-1\/2, + .lg\:g-1\/2 { + gap: var(--sf-space-1\/2); + } + .lg\:gap-1, + .lg\:g-1 { + gap: var(--sf-space-1); + } + .lg\:gap-2, + .lg\:g-2 { + gap: var(--sf-space-2); + } + .lg\:gap-3, + .lg\:g-3 { + gap: var(--sf-space-3); + } + .lg\:gap-4, + .lg\:g-4 { + gap: var(--sf-space-4); + } + .lg\:gap-5, + .lg\:g-5 { + gap: var(--sf-space-5); + } + .lg\:gap-6, + .lg\:g-6 { + gap: var(--sf-space-6); + } + .lg\:gap-7, + .lg\:g-7 { + gap: var(--sf-space-7); + } + .lg\:gap-8, + .lg\:g-8 { + gap: var(--sf-space-8); + } + .lg\:col-gap-0, + .lg\:gap-x-0, + .lg\:g-x-0 { + -webkit-column-gap: var(--sf-space-0); + -moz-column-gap: var(--sf-space-0); + column-gap: var(--sf-space-0); + } + .lg\:row-gap-0, + .lg\:gap-y-0, + .lg\:g-y-0 { + row-gap: var(--sf-space-0); + } + .lg\:col-gap-1\/4, + .lg\:gap-x-1\/4, + .lg\:g-x-1\/4 { + -webkit-column-gap: var(--sf-space-1\/4); + -moz-column-gap: var(--sf-space-1\/4); + column-gap: var(--sf-space-1\/4); + } + .lg\:row-gap-1\/4, + .lg\:gap-y-1\/4, + .lg\:g-y-1\/4 { + row-gap: var(--sf-space-1\/4); + } + .lg\:col-gap-1\/3, + .lg\:gap-x-1\/3, + .lg\:g-x-1\/3 { + -webkit-column-gap: var(--sf-space-1\/3); + -moz-column-gap: var(--sf-space-1\/3); + column-gap: var(--sf-space-1\/3); + } + .lg\:row-gap-1\/3, + .lg\:gap-y-1\/3, + .lg\:g-y-1\/3 { + row-gap: var(--sf-space-1\/3); + } + .lg\:col-gap-1\/2, + .lg\:gap-x-1\/2, + .lg\:g-x-1\/2 { + -webkit-column-gap: var(--sf-space-1\/2); + -moz-column-gap: var(--sf-space-1\/2); + column-gap: var(--sf-space-1\/2); + } + .lg\:row-gap-1\/2, + .lg\:gap-y-1\/2, + .lg\:g-y-1\/2 { + row-gap: var(--sf-space-1\/2); + } + .lg\:col-gap-1, + .lg\:gap-x-1, + .lg\:g-x-1 { + -webkit-column-gap: var(--sf-space-1); + -moz-column-gap: var(--sf-space-1); + column-gap: var(--sf-space-1); + } + .lg\:row-gap-1, + .lg\:gap-y-1, + .lg\:g-y-1 { + row-gap: var(--sf-space-1); + } + .lg\:col-gap-2, + .lg\:gap-x-2, + .lg\:g-x-2 { + -webkit-column-gap: var(--sf-space-2); + -moz-column-gap: var(--sf-space-2); + column-gap: var(--sf-space-2); + } + .lg\:row-gap-2, + .lg\:gap-y-2, + .lg\:g-y-2 { + row-gap: var(--sf-space-2); + } + .lg\:col-gap-3, + .lg\:gap-x-3, + .lg\:g-x-3 { + -webkit-column-gap: var(--sf-space-3); + -moz-column-gap: var(--sf-space-3); + column-gap: var(--sf-space-3); + } + .lg\:row-gap-3, + .lg\:gap-y-3, + .lg\:g-y-3 { + row-gap: var(--sf-space-3); + } + .lg\:col-gap-4, + .lg\:gap-x-4, + .lg\:g-x-4 { + -webkit-column-gap: var(--sf-space-4); + -moz-column-gap: var(--sf-space-4); + column-gap: var(--sf-space-4); + } + .lg\:row-gap-4, + .lg\:gap-y-4, + .lg\:g-y-4 { + row-gap: var(--sf-space-4); + } + .lg\:col-gap-5, + .lg\:gap-x-5, + .lg\:g-x-5 { + -webkit-column-gap: var(--sf-space-5); + -moz-column-gap: var(--sf-space-5); + column-gap: var(--sf-space-5); + } + .lg\:row-gap-5, + .lg\:gap-y-5, + .lg\:g-y-5 { + row-gap: var(--sf-space-5); + } + .lg\:col-gap-6, + .lg\:gap-x-6, + .lg\:g-x-6 { + -webkit-column-gap: var(--sf-space-6); + -moz-column-gap: var(--sf-space-6); + column-gap: var(--sf-space-6); + } + .lg\:row-gap-6, + .lg\:gap-y-6, + .lg\:g-y-6 { + row-gap: var(--sf-space-6); + } + .lg\:col-gap-7, + .lg\:gap-x-7, + .lg\:g-x-7 { + -webkit-column-gap: var(--sf-space-7); + -moz-column-gap: var(--sf-space-7); + column-gap: var(--sf-space-7); + } + .lg\:row-gap-7, + .lg\:gap-y-7, + .lg\:g-y-7 { + row-gap: var(--sf-space-7); + } + .lg\:col-gap-8, + .lg\:gap-x-8, + .lg\:g-x-8 { + -webkit-column-gap: var(--sf-space-8); + -moz-column-gap: var(--sf-space-8); + column-gap: var(--sf-space-8); + } + .lg\:row-gap-8, + .lg\:gap-y-8, + .lg\:g-y-8 { + row-gap: var(--sf-space-8); + } + } +} diff --git a/contracts/framework/utility/gap/md/css/md.css b/contracts/framework/utility/gap/md/css/md.css new file mode 100644 index 0000000..99a9c80 --- /dev/null +++ b/contracts/framework/utility/gap/md/css/md.css @@ -0,0 +1,196 @@ +@layer sf.utilities { + @media (min-width: 44rem) { + .md\:gap-0, + .md\:g-0 { + gap: var(--sf-space-0); + } + .md\:gap-1\/4, + .md\:g-1\/4 { + gap: var(--sf-space-1\/4); + } + .md\:gap-1\/3, + .md\:g-1\/3 { + gap: var(--sf-space-1\/3); + } + .md\:gap-1\/2, + .md\:g-1\/2 { + gap: var(--sf-space-1\/2); + } + .md\:gap-1, + .md\:g-1 { + gap: var(--sf-space-1); + } + .md\:gap-2, + .md\:g-2 { + gap: var(--sf-space-2); + } + .md\:gap-3, + .md\:g-3 { + gap: var(--sf-space-3); + } + .md\:gap-4, + .md\:g-4 { + gap: var(--sf-space-4); + } + .md\:gap-5, + .md\:g-5 { + gap: var(--sf-space-5); + } + .md\:gap-6, + .md\:g-6 { + gap: var(--sf-space-6); + } + .md\:gap-7, + .md\:g-7 { + gap: var(--sf-space-7); + } + .md\:gap-8, + .md\:g-8 { + gap: var(--sf-space-8); + } + .md\:col-gap-0, + .md\:gap-x-0, + .md\:g-x-0 { + -webkit-column-gap: var(--sf-space-0); + -moz-column-gap: var(--sf-space-0); + column-gap: var(--sf-space-0); + } + .md\:row-gap-0, + .md\:gap-y-0, + .md\:g-y-0 { + row-gap: var(--sf-space-0); + } + .md\:col-gap-1\/4, + .md\:gap-x-1\/4, + .md\:g-x-1\/4 { + -webkit-column-gap: var(--sf-space-1\/4); + -moz-column-gap: var(--sf-space-1\/4); + column-gap: var(--sf-space-1\/4); + } + .md\:row-gap-1\/4, + .md\:gap-y-1\/4, + .md\:g-y-1\/4 { + row-gap: var(--sf-space-1\/4); + } + .md\:col-gap-1\/3, + .md\:gap-x-1\/3, + .md\:g-x-1\/3 { + -webkit-column-gap: var(--sf-space-1\/3); + -moz-column-gap: var(--sf-space-1\/3); + column-gap: var(--sf-space-1\/3); + } + .md\:row-gap-1\/3, + .md\:gap-y-1\/3, + .md\:g-y-1\/3 { + row-gap: var(--sf-space-1\/3); + } + .md\:col-gap-1\/2, + .md\:gap-x-1\/2, + .md\:g-x-1\/2 { + -webkit-column-gap: var(--sf-space-1\/2); + -moz-column-gap: var(--sf-space-1\/2); + column-gap: var(--sf-space-1\/2); + } + .md\:row-gap-1\/2, + .md\:gap-y-1\/2, + .md\:g-y-1\/2 { + row-gap: var(--sf-space-1\/2); + } + .md\:col-gap-1, + .md\:gap-x-1, + .md\:g-x-1 { + -webkit-column-gap: var(--sf-space-1); + -moz-column-gap: var(--sf-space-1); + column-gap: var(--sf-space-1); + } + .md\:row-gap-1, + .md\:gap-y-1, + .md\:g-y-1 { + row-gap: var(--sf-space-1); + } + .md\:col-gap-2, + .md\:gap-x-2, + .md\:g-x-2 { + -webkit-column-gap: var(--sf-space-2); + -moz-column-gap: var(--sf-space-2); + column-gap: var(--sf-space-2); + } + .md\:row-gap-2, + .md\:gap-y-2, + .md\:g-y-2 { + row-gap: var(--sf-space-2); + } + .md\:col-gap-3, + .md\:gap-x-3, + .md\:g-x-3 { + -webkit-column-gap: var(--sf-space-3); + -moz-column-gap: var(--sf-space-3); + column-gap: var(--sf-space-3); + } + .md\:row-gap-3, + .md\:gap-y-3, + .md\:g-y-3 { + row-gap: var(--sf-space-3); + } + .md\:col-gap-4, + .md\:gap-x-4, + .md\:g-x-4 { + -webkit-column-gap: var(--sf-space-4); + -moz-column-gap: var(--sf-space-4); + column-gap: var(--sf-space-4); + } + .md\:row-gap-4, + .md\:gap-y-4, + .md\:g-y-4 { + row-gap: var(--sf-space-4); + } + .md\:col-gap-5, + .md\:gap-x-5, + .md\:g-x-5 { + -webkit-column-gap: var(--sf-space-5); + -moz-column-gap: var(--sf-space-5); + column-gap: var(--sf-space-5); + } + .md\:row-gap-5, + .md\:gap-y-5, + .md\:g-y-5 { + row-gap: var(--sf-space-5); + } + .md\:col-gap-6, + .md\:gap-x-6, + .md\:g-x-6 { + -webkit-column-gap: var(--sf-space-6); + -moz-column-gap: var(--sf-space-6); + column-gap: var(--sf-space-6); + } + .md\:row-gap-6, + .md\:gap-y-6, + .md\:g-y-6 { + row-gap: var(--sf-space-6); + } + .md\:col-gap-7, + .md\:gap-x-7, + .md\:g-x-7 { + -webkit-column-gap: var(--sf-space-7); + -moz-column-gap: var(--sf-space-7); + column-gap: var(--sf-space-7); + } + .md\:row-gap-7, + .md\:gap-y-7, + .md\:g-y-7 { + row-gap: var(--sf-space-7); + } + .md\:col-gap-8, + .md\:gap-x-8, + .md\:g-x-8 { + -webkit-column-gap: var(--sf-space-8); + -moz-column-gap: var(--sf-space-8); + column-gap: var(--sf-space-8); + } + .md\:row-gap-8, + .md\:gap-y-8, + .md\:g-y-8 { + row-gap: var(--sf-space-8); + } + } +} diff --git a/contracts/framework/utility/gap/sm/css/sm.css b/contracts/framework/utility/gap/sm/css/sm.css new file mode 100644 index 0000000..885e464 --- /dev/null +++ b/contracts/framework/utility/gap/sm/css/sm.css @@ -0,0 +1,196 @@ +@layer sf.utilities { + @media (min-width: 32rem) { + .sm\:gap-0, + .sm\:g-0 { + gap: var(--sf-space-0); + } + .sm\:gap-1\/4, + .sm\:g-1\/4 { + gap: var(--sf-space-1\/4); + } + .sm\:gap-1\/3, + .sm\:g-1\/3 { + gap: var(--sf-space-1\/3); + } + .sm\:gap-1\/2, + .sm\:g-1\/2 { + gap: var(--sf-space-1\/2); + } + .sm\:gap-1, + .sm\:g-1 { + gap: var(--sf-space-1); + } + .sm\:gap-2, + .sm\:g-2 { + gap: var(--sf-space-2); + } + .sm\:gap-3, + .sm\:g-3 { + gap: var(--sf-space-3); + } + .sm\:gap-4, + .sm\:g-4 { + gap: var(--sf-space-4); + } + .sm\:gap-5, + .sm\:g-5 { + gap: var(--sf-space-5); + } + .sm\:gap-6, + .sm\:g-6 { + gap: var(--sf-space-6); + } + .sm\:gap-7, + .sm\:g-7 { + gap: var(--sf-space-7); + } + .sm\:gap-8, + .sm\:g-8 { + gap: var(--sf-space-8); + } + .sm\:col-gap-0, + .sm\:gap-x-0, + .sm\:g-x-0 { + -webkit-column-gap: var(--sf-space-0); + -moz-column-gap: var(--sf-space-0); + column-gap: var(--sf-space-0); + } + .sm\:row-gap-0, + .sm\:gap-y-0, + .sm\:g-y-0 { + row-gap: var(--sf-space-0); + } + .sm\:col-gap-1\/4, + .sm\:gap-x-1\/4, + .sm\:g-x-1\/4 { + -webkit-column-gap: var(--sf-space-1\/4); + -moz-column-gap: var(--sf-space-1\/4); + column-gap: var(--sf-space-1\/4); + } + .sm\:row-gap-1\/4, + .sm\:gap-y-1\/4, + .sm\:g-y-1\/4 { + row-gap: var(--sf-space-1\/4); + } + .sm\:col-gap-1\/3, + .sm\:gap-x-1\/3, + .sm\:g-x-1\/3 { + -webkit-column-gap: var(--sf-space-1\/3); + -moz-column-gap: var(--sf-space-1\/3); + column-gap: var(--sf-space-1\/3); + } + .sm\:row-gap-1\/3, + .sm\:gap-y-1\/3, + .sm\:g-y-1\/3 { + row-gap: var(--sf-space-1\/3); + } + .sm\:col-gap-1\/2, + .sm\:gap-x-1\/2, + .sm\:g-x-1\/2 { + -webkit-column-gap: var(--sf-space-1\/2); + -moz-column-gap: var(--sf-space-1\/2); + column-gap: var(--sf-space-1\/2); + } + .sm\:row-gap-1\/2, + .sm\:gap-y-1\/2, + .sm\:g-y-1\/2 { + row-gap: var(--sf-space-1\/2); + } + .sm\:col-gap-1, + .sm\:gap-x-1, + .sm\:g-x-1 { + -webkit-column-gap: var(--sf-space-1); + -moz-column-gap: var(--sf-space-1); + column-gap: var(--sf-space-1); + } + .sm\:row-gap-1, + .sm\:gap-y-1, + .sm\:g-y-1 { + row-gap: var(--sf-space-1); + } + .sm\:col-gap-2, + .sm\:gap-x-2, + .sm\:g-x-2 { + -webkit-column-gap: var(--sf-space-2); + -moz-column-gap: var(--sf-space-2); + column-gap: var(--sf-space-2); + } + .sm\:row-gap-2, + .sm\:gap-y-2, + .sm\:g-y-2 { + row-gap: var(--sf-space-2); + } + .sm\:col-gap-3, + .sm\:gap-x-3, + .sm\:g-x-3 { + -webkit-column-gap: var(--sf-space-3); + -moz-column-gap: var(--sf-space-3); + column-gap: var(--sf-space-3); + } + .sm\:row-gap-3, + .sm\:gap-y-3, + .sm\:g-y-3 { + row-gap: var(--sf-space-3); + } + .sm\:col-gap-4, + .sm\:gap-x-4, + .sm\:g-x-4 { + -webkit-column-gap: var(--sf-space-4); + -moz-column-gap: var(--sf-space-4); + column-gap: var(--sf-space-4); + } + .sm\:row-gap-4, + .sm\:gap-y-4, + .sm\:g-y-4 { + row-gap: var(--sf-space-4); + } + .sm\:col-gap-5, + .sm\:gap-x-5, + .sm\:g-x-5 { + -webkit-column-gap: var(--sf-space-5); + -moz-column-gap: var(--sf-space-5); + column-gap: var(--sf-space-5); + } + .sm\:row-gap-5, + .sm\:gap-y-5, + .sm\:g-y-5 { + row-gap: var(--sf-space-5); + } + .sm\:col-gap-6, + .sm\:gap-x-6, + .sm\:g-x-6 { + -webkit-column-gap: var(--sf-space-6); + -moz-column-gap: var(--sf-space-6); + column-gap: var(--sf-space-6); + } + .sm\:row-gap-6, + .sm\:gap-y-6, + .sm\:g-y-6 { + row-gap: var(--sf-space-6); + } + .sm\:col-gap-7, + .sm\:gap-x-7, + .sm\:g-x-7 { + -webkit-column-gap: var(--sf-space-7); + -moz-column-gap: var(--sf-space-7); + column-gap: var(--sf-space-7); + } + .sm\:row-gap-7, + .sm\:gap-y-7, + .sm\:g-y-7 { + row-gap: var(--sf-space-7); + } + .sm\:col-gap-8, + .sm\:gap-x-8, + .sm\:g-x-8 { + -webkit-column-gap: var(--sf-space-8); + -moz-column-gap: var(--sf-space-8); + column-gap: var(--sf-space-8); + } + .sm\:row-gap-8, + .sm\:gap-y-8, + .sm\:g-y-8 { + row-gap: var(--sf-space-8); + } + } +} diff --git a/contracts/framework/utility/gap/xl/css/xl.css b/contracts/framework/utility/gap/xl/css/xl.css new file mode 100644 index 0000000..58b9bb6 --- /dev/null +++ b/contracts/framework/utility/gap/xl/css/xl.css @@ -0,0 +1,196 @@ +@layer sf.utilities { + @media (min-width: 72rem) { + .xl\:gap-0, + .xl\:g-0 { + gap: var(--sf-space-0); + } + .xl\:gap-1\/4, + .xl\:g-1\/4 { + gap: var(--sf-space-1\/4); + } + .xl\:gap-1\/3, + .xl\:g-1\/3 { + gap: var(--sf-space-1\/3); + } + .xl\:gap-1\/2, + .xl\:g-1\/2 { + gap: var(--sf-space-1\/2); + } + .xl\:gap-1, + .xl\:g-1 { + gap: var(--sf-space-1); + } + .xl\:gap-2, + .xl\:g-2 { + gap: var(--sf-space-2); + } + .xl\:gap-3, + .xl\:g-3 { + gap: var(--sf-space-3); + } + .xl\:gap-4, + .xl\:g-4 { + gap: var(--sf-space-4); + } + .xl\:gap-5, + .xl\:g-5 { + gap: var(--sf-space-5); + } + .xl\:gap-6, + .xl\:g-6 { + gap: var(--sf-space-6); + } + .xl\:gap-7, + .xl\:g-7 { + gap: var(--sf-space-7); + } + .xl\:gap-8, + .xl\:g-8 { + gap: var(--sf-space-8); + } + .xl\:col-gap-0, + .xl\:gap-x-0, + .xl\:g-x-0 { + -webkit-column-gap: var(--sf-space-0); + -moz-column-gap: var(--sf-space-0); + column-gap: var(--sf-space-0); + } + .xl\:row-gap-0, + .xl\:gap-y-0, + .xl\:g-y-0 { + row-gap: var(--sf-space-0); + } + .xl\:col-gap-1\/4, + .xl\:gap-x-1\/4, + .xl\:g-x-1\/4 { + -webkit-column-gap: var(--sf-space-1\/4); + -moz-column-gap: var(--sf-space-1\/4); + column-gap: var(--sf-space-1\/4); + } + .xl\:row-gap-1\/4, + .xl\:gap-y-1\/4, + .xl\:g-y-1\/4 { + row-gap: var(--sf-space-1\/4); + } + .xl\:col-gap-1\/3, + .xl\:gap-x-1\/3, + .xl\:g-x-1\/3 { + -webkit-column-gap: var(--sf-space-1\/3); + -moz-column-gap: var(--sf-space-1\/3); + column-gap: var(--sf-space-1\/3); + } + .xl\:row-gap-1\/3, + .xl\:gap-y-1\/3, + .xl\:g-y-1\/3 { + row-gap: var(--sf-space-1\/3); + } + .xl\:col-gap-1\/2, + .xl\:gap-x-1\/2, + .xl\:g-x-1\/2 { + -webkit-column-gap: var(--sf-space-1\/2); + -moz-column-gap: var(--sf-space-1\/2); + column-gap: var(--sf-space-1\/2); + } + .xl\:row-gap-1\/2, + .xl\:gap-y-1\/2, + .xl\:g-y-1\/2 { + row-gap: var(--sf-space-1\/2); + } + .xl\:col-gap-1, + .xl\:gap-x-1, + .xl\:g-x-1 { + -webkit-column-gap: var(--sf-space-1); + -moz-column-gap: var(--sf-space-1); + column-gap: var(--sf-space-1); + } + .xl\:row-gap-1, + .xl\:gap-y-1, + .xl\:g-y-1 { + row-gap: var(--sf-space-1); + } + .xl\:col-gap-2, + .xl\:gap-x-2, + .xl\:g-x-2 { + -webkit-column-gap: var(--sf-space-2); + -moz-column-gap: var(--sf-space-2); + column-gap: var(--sf-space-2); + } + .xl\:row-gap-2, + .xl\:gap-y-2, + .xl\:g-y-2 { + row-gap: var(--sf-space-2); + } + .xl\:col-gap-3, + .xl\:gap-x-3, + .xl\:g-x-3 { + -webkit-column-gap: var(--sf-space-3); + -moz-column-gap: var(--sf-space-3); + column-gap: var(--sf-space-3); + } + .xl\:row-gap-3, + .xl\:gap-y-3, + .xl\:g-y-3 { + row-gap: var(--sf-space-3); + } + .xl\:col-gap-4, + .xl\:gap-x-4, + .xl\:g-x-4 { + -webkit-column-gap: var(--sf-space-4); + -moz-column-gap: var(--sf-space-4); + column-gap: var(--sf-space-4); + } + .xl\:row-gap-4, + .xl\:gap-y-4, + .xl\:g-y-4 { + row-gap: var(--sf-space-4); + } + .xl\:col-gap-5, + .xl\:gap-x-5, + .xl\:g-x-5 { + -webkit-column-gap: var(--sf-space-5); + -moz-column-gap: var(--sf-space-5); + column-gap: var(--sf-space-5); + } + .xl\:row-gap-5, + .xl\:gap-y-5, + .xl\:g-y-5 { + row-gap: var(--sf-space-5); + } + .xl\:col-gap-6, + .xl\:gap-x-6, + .xl\:g-x-6 { + -webkit-column-gap: var(--sf-space-6); + -moz-column-gap: var(--sf-space-6); + column-gap: var(--sf-space-6); + } + .xl\:row-gap-6, + .xl\:gap-y-6, + .xl\:g-y-6 { + row-gap: var(--sf-space-6); + } + .xl\:col-gap-7, + .xl\:gap-x-7, + .xl\:g-x-7 { + -webkit-column-gap: var(--sf-space-7); + -moz-column-gap: var(--sf-space-7); + column-gap: var(--sf-space-7); + } + .xl\:row-gap-7, + .xl\:gap-y-7, + .xl\:g-y-7 { + row-gap: var(--sf-space-7); + } + .xl\:col-gap-8, + .xl\:gap-x-8, + .xl\:g-x-8 { + -webkit-column-gap: var(--sf-space-8); + -moz-column-gap: var(--sf-space-8); + column-gap: var(--sf-space-8); + } + .xl\:row-gap-8, + .xl\:gap-y-8, + .xl\:g-y-8 { + row-gap: var(--sf-space-8); + } + } +} diff --git a/contracts/framework/utility/gap/xxl/css/xxl.css b/contracts/framework/utility/gap/xxl/css/xxl.css new file mode 100644 index 0000000..4f08310 --- /dev/null +++ b/contracts/framework/utility/gap/xxl/css/xxl.css @@ -0,0 +1,196 @@ +@layer sf.utilities { + @media (min-width: 80rem) { + .xxl\:gap-0, + .xxl\:g-0 { + gap: var(--sf-space-0); + } + .xxl\:gap-1\/4, + .xxl\:g-1\/4 { + gap: var(--sf-space-1\/4); + } + .xxl\:gap-1\/3, + .xxl\:g-1\/3 { + gap: var(--sf-space-1\/3); + } + .xxl\:gap-1\/2, + .xxl\:g-1\/2 { + gap: var(--sf-space-1\/2); + } + .xxl\:gap-1, + .xxl\:g-1 { + gap: var(--sf-space-1); + } + .xxl\:gap-2, + .xxl\:g-2 { + gap: var(--sf-space-2); + } + .xxl\:gap-3, + .xxl\:g-3 { + gap: var(--sf-space-3); + } + .xxl\:gap-4, + .xxl\:g-4 { + gap: var(--sf-space-4); + } + .xxl\:gap-5, + .xxl\:g-5 { + gap: var(--sf-space-5); + } + .xxl\:gap-6, + .xxl\:g-6 { + gap: var(--sf-space-6); + } + .xxl\:gap-7, + .xxl\:g-7 { + gap: var(--sf-space-7); + } + .xxl\:gap-8, + .xxl\:g-8 { + gap: var(--sf-space-8); + } + .xxl\:col-gap-0, + .xxl\:gap-x-0, + .xxl\:g-x-0 { + -webkit-column-gap: var(--sf-space-0); + -moz-column-gap: var(--sf-space-0); + column-gap: var(--sf-space-0); + } + .xxl\:row-gap-0, + .xxl\:gap-y-0, + .xxl\:g-y-0 { + row-gap: var(--sf-space-0); + } + .xxl\:col-gap-1\/4, + .xxl\:gap-x-1\/4, + .xxl\:g-x-1\/4 { + -webkit-column-gap: var(--sf-space-1\/4); + -moz-column-gap: var(--sf-space-1\/4); + column-gap: var(--sf-space-1\/4); + } + .xxl\:row-gap-1\/4, + .xxl\:gap-y-1\/4, + .xxl\:g-y-1\/4 { + row-gap: var(--sf-space-1\/4); + } + .xxl\:col-gap-1\/3, + .xxl\:gap-x-1\/3, + .xxl\:g-x-1\/3 { + -webkit-column-gap: var(--sf-space-1\/3); + -moz-column-gap: var(--sf-space-1\/3); + column-gap: var(--sf-space-1\/3); + } + .xxl\:row-gap-1\/3, + .xxl\:gap-y-1\/3, + .xxl\:g-y-1\/3 { + row-gap: var(--sf-space-1\/3); + } + .xxl\:col-gap-1\/2, + .xxl\:gap-x-1\/2, + .xxl\:g-x-1\/2 { + -webkit-column-gap: var(--sf-space-1\/2); + -moz-column-gap: var(--sf-space-1\/2); + column-gap: var(--sf-space-1\/2); + } + .xxl\:row-gap-1\/2, + .xxl\:gap-y-1\/2, + .xxl\:g-y-1\/2 { + row-gap: var(--sf-space-1\/2); + } + .xxl\:col-gap-1, + .xxl\:gap-x-1, + .xxl\:g-x-1 { + -webkit-column-gap: var(--sf-space-1); + -moz-column-gap: var(--sf-space-1); + column-gap: var(--sf-space-1); + } + .xxl\:row-gap-1, + .xxl\:gap-y-1, + .xxl\:g-y-1 { + row-gap: var(--sf-space-1); + } + .xxl\:col-gap-2, + .xxl\:gap-x-2, + .xxl\:g-x-2 { + -webkit-column-gap: var(--sf-space-2); + -moz-column-gap: var(--sf-space-2); + column-gap: var(--sf-space-2); + } + .xxl\:row-gap-2, + .xxl\:gap-y-2, + .xxl\:g-y-2 { + row-gap: var(--sf-space-2); + } + .xxl\:col-gap-3, + .xxl\:gap-x-3, + .xxl\:g-x-3 { + -webkit-column-gap: var(--sf-space-3); + -moz-column-gap: var(--sf-space-3); + column-gap: var(--sf-space-3); + } + .xxl\:row-gap-3, + .xxl\:gap-y-3, + .xxl\:g-y-3 { + row-gap: var(--sf-space-3); + } + .xxl\:col-gap-4, + .xxl\:gap-x-4, + .xxl\:g-x-4 { + -webkit-column-gap: var(--sf-space-4); + -moz-column-gap: var(--sf-space-4); + column-gap: var(--sf-space-4); + } + .xxl\:row-gap-4, + .xxl\:gap-y-4, + .xxl\:g-y-4 { + row-gap: var(--sf-space-4); + } + .xxl\:col-gap-5, + .xxl\:gap-x-5, + .xxl\:g-x-5 { + -webkit-column-gap: var(--sf-space-5); + -moz-column-gap: var(--sf-space-5); + column-gap: var(--sf-space-5); + } + .xxl\:row-gap-5, + .xxl\:gap-y-5, + .xxl\:g-y-5 { + row-gap: var(--sf-space-5); + } + .xxl\:col-gap-6, + .xxl\:gap-x-6, + .xxl\:g-x-6 { + -webkit-column-gap: var(--sf-space-6); + -moz-column-gap: var(--sf-space-6); + column-gap: var(--sf-space-6); + } + .xxl\:row-gap-6, + .xxl\:gap-y-6, + .xxl\:g-y-6 { + row-gap: var(--sf-space-6); + } + .xxl\:col-gap-7, + .xxl\:gap-x-7, + .xxl\:g-x-7 { + -webkit-column-gap: var(--sf-space-7); + -moz-column-gap: var(--sf-space-7); + column-gap: var(--sf-space-7); + } + .xxl\:row-gap-7, + .xxl\:gap-y-7, + .xxl\:g-y-7 { + row-gap: var(--sf-space-7); + } + .xxl\:col-gap-8, + .xxl\:gap-x-8, + .xxl\:g-x-8 { + -webkit-column-gap: var(--sf-space-8); + -moz-column-gap: var(--sf-space-8); + column-gap: var(--sf-space-8); + } + .xxl\:row-gap-8, + .xxl\:gap-y-8, + .xxl\:g-y-8 { + row-gap: var(--sf-space-8); + } + } +} diff --git a/contracts/framework/utility/overflow/default/css/default.css b/contracts/framework/utility/overflow/default/css/default.css new file mode 100644 index 0000000..ff1ab95 --- /dev/null +++ b/contracts/framework/utility/overflow/default/css/default.css @@ -0,0 +1,38 @@ +@layer sf.utilities { + .overflow-auto { + overflow: auto; + } + .overflow-hidden { + overflow: hidden; + } + .overflow-visible { + overflow: visible; + } + .overflow-scroll { + overflow: scroll; + } + .overflow-x-auto { + overflow-x: auto; + } + .overflow-y-auto { + overflow-y: auto; + } + .overflow-x-hidden { + overflow-x: hidden; + } + .overflow-y-hidden { + overflow-y: hidden; + } + .overflow-x-visible { + overflow-x: visible; + } + .overflow-y-visible { + overflow-y: visible; + } + .overflow-x-scroll { + overflow-x: scroll; + } + .overflow-y-scroll { + overflow-y: scroll; + } +} diff --git a/contracts/framework/utility/overflow/lg/css/lg.css b/contracts/framework/utility/overflow/lg/css/lg.css new file mode 100644 index 0000000..2174a94 --- /dev/null +++ b/contracts/framework/utility/overflow/lg/css/lg.css @@ -0,0 +1,40 @@ +@layer sf.utilities { + @media (min-width: 60rem) { + .lg\:overflow-auto { + overflow: auto; + } + .lg\:overflow-hidden { + overflow: hidden; + } + .lg\:overflow-visible { + overflow: visible; + } + .lg\:overflow-scroll { + overflow: scroll; + } + .lg\:overflow-x-auto { + overflow-x: auto; + } + .lg\:overflow-y-auto { + overflow-y: auto; + } + .lg\:overflow-x-hidden { + overflow-x: hidden; + } + .lg\:overflow-y-hidden { + overflow-y: hidden; + } + .lg\:overflow-x-visible { + overflow-x: visible; + } + .lg\:overflow-y-visible { + overflow-y: visible; + } + .lg\:overflow-x-scroll { + overflow-x: scroll; + } + .lg\:overflow-y-scroll { + overflow-y: scroll; + } + } +} diff --git a/contracts/framework/utility/overflow/md/css/md.css b/contracts/framework/utility/overflow/md/css/md.css new file mode 100644 index 0000000..734cb32 --- /dev/null +++ b/contracts/framework/utility/overflow/md/css/md.css @@ -0,0 +1,40 @@ +@layer sf.utilities { + @media (min-width: 44rem) { + .md\:overflow-auto { + overflow: auto; + } + .md\:overflow-hidden { + overflow: hidden; + } + .md\:overflow-visible { + overflow: visible; + } + .md\:overflow-scroll { + overflow: scroll; + } + .md\:overflow-x-auto { + overflow-x: auto; + } + .md\:overflow-y-auto { + overflow-y: auto; + } + .md\:overflow-x-hidden { + overflow-x: hidden; + } + .md\:overflow-y-hidden { + overflow-y: hidden; + } + .md\:overflow-x-visible { + overflow-x: visible; + } + .md\:overflow-y-visible { + overflow-y: visible; + } + .md\:overflow-x-scroll { + overflow-x: scroll; + } + .md\:overflow-y-scroll { + overflow-y: scroll; + } + } +} diff --git a/contracts/framework/utility/overflow/sm/css/sm.css b/contracts/framework/utility/overflow/sm/css/sm.css new file mode 100644 index 0000000..723073e --- /dev/null +++ b/contracts/framework/utility/overflow/sm/css/sm.css @@ -0,0 +1,40 @@ +@layer sf.utilities { + @media (min-width: 32rem) { + .sm\:overflow-auto { + overflow: auto; + } + .sm\:overflow-hidden { + overflow: hidden; + } + .sm\:overflow-visible { + overflow: visible; + } + .sm\:overflow-scroll { + overflow: scroll; + } + .sm\:overflow-x-auto { + overflow-x: auto; + } + .sm\:overflow-y-auto { + overflow-y: auto; + } + .sm\:overflow-x-hidden { + overflow-x: hidden; + } + .sm\:overflow-y-hidden { + overflow-y: hidden; + } + .sm\:overflow-x-visible { + overflow-x: visible; + } + .sm\:overflow-y-visible { + overflow-y: visible; + } + .sm\:overflow-x-scroll { + overflow-x: scroll; + } + .sm\:overflow-y-scroll { + overflow-y: scroll; + } + } +} diff --git a/contracts/framework/utility/overflow/xl/css/xl.css b/contracts/framework/utility/overflow/xl/css/xl.css new file mode 100644 index 0000000..ab2d88c --- /dev/null +++ b/contracts/framework/utility/overflow/xl/css/xl.css @@ -0,0 +1,40 @@ +@layer sf.utilities { + @media (min-width: 72rem) { + .xl\:overflow-auto { + overflow: auto; + } + .xl\:overflow-hidden { + overflow: hidden; + } + .xl\:overflow-visible { + overflow: visible; + } + .xl\:overflow-scroll { + overflow: scroll; + } + .xl\:overflow-x-auto { + overflow-x: auto; + } + .xl\:overflow-y-auto { + overflow-y: auto; + } + .xl\:overflow-x-hidden { + overflow-x: hidden; + } + .xl\:overflow-y-hidden { + overflow-y: hidden; + } + .xl\:overflow-x-visible { + overflow-x: visible; + } + .xl\:overflow-y-visible { + overflow-y: visible; + } + .xl\:overflow-x-scroll { + overflow-x: scroll; + } + .xl\:overflow-y-scroll { + overflow-y: scroll; + } + } +} diff --git a/contracts/framework/utility/overflow/xxl/css/xxl.css b/contracts/framework/utility/overflow/xxl/css/xxl.css new file mode 100644 index 0000000..6c414fb --- /dev/null +++ b/contracts/framework/utility/overflow/xxl/css/xxl.css @@ -0,0 +1,40 @@ +@layer sf.utilities { + @media (min-width: 80rem) { + .xxl\:overflow-auto { + overflow: auto; + } + .xxl\:overflow-hidden { + overflow: hidden; + } + .xxl\:overflow-visible { + overflow: visible; + } + .xxl\:overflow-scroll { + overflow: scroll; + } + .xxl\:overflow-x-auto { + overflow-x: auto; + } + .xxl\:overflow-y-auto { + overflow-y: auto; + } + .xxl\:overflow-x-hidden { + overflow-x: hidden; + } + .xxl\:overflow-y-hidden { + overflow-y: hidden; + } + .xxl\:overflow-x-visible { + overflow-x: visible; + } + .xxl\:overflow-y-visible { + overflow-y: visible; + } + .xxl\:overflow-x-scroll { + overflow-x: scroll; + } + .xxl\:overflow-y-scroll { + overflow-y: scroll; + } + } +} diff --git a/contracts/framework/utility/pointer-events/default/css/default.css b/contracts/framework/utility/pointer-events/default/css/default.css new file mode 100644 index 0000000..28090d7 --- /dev/null +++ b/contracts/framework/utility/pointer-events/default/css/default.css @@ -0,0 +1,8 @@ +@layer sf.utilities { + .pointer-event-none { + pointer-events: none; + } + .pointer-event-auto { + pointer-events: auto; + } +} diff --git a/contracts/framework/utility/text-align/default/css/default.css b/contracts/framework/utility/text-align/default/css/default.css new file mode 100644 index 0000000..15ba0bf --- /dev/null +++ b/contracts/framework/utility/text-align/default/css/default.css @@ -0,0 +1,58 @@ +@layer sf.utilities { + _:-ms-input-placeholder, html:not([dir="rtl"]) .text-start { + text-align: left; + } + @supports not (text-align: start) { + html:not([dir="rtl"]) .text-start { + text-align: left; + } + } + .text-start:where(:dir(ltr)) { + text-align: left; + } + _:-ms-input-placeholder, [dir="rtl"] .text-start { + text-align: right; + } + @supports not (text-align: start) { + [dir="rtl"] .text-start { + text-align: right; + } + } + .text-start:where(:dir(rtl)) { + text-align: right; + } + .text-start { + text-align: start; + } + .text-center { + text-align: center; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .text-end { + text-align: right; + } + @supports not (text-align: end) { + html:not([dir="rtl"]) .text-end { + text-align: right; + } + } + .text-end:where(:dir(ltr)) { + text-align: right; + } + _:-ms-input-placeholder, [dir="rtl"] .text-end { + text-align: left; + } + @supports not (text-align: end) { + [dir="rtl"] .text-end { + text-align: left; + } + } + .text-end:where(:dir(rtl)) { + text-align: left; + } + .text-end { + text-align: end; + } + .text-justify { + text-align: justify; + } +} diff --git a/contracts/framework/utility/text-align/lg/css/lg.css b/contracts/framework/utility/text-align/lg/css/lg.css new file mode 100644 index 0000000..0af2af4 --- /dev/null +++ b/contracts/framework/utility/text-align/lg/css/lg.css @@ -0,0 +1,60 @@ +@layer sf.utilities { + @media (min-width: 60rem) { + _:-ms-input-placeholder, html:not([dir="rtl"]) .lg\:text-start { + text-align: left; + } + @supports not (text-align: start) { + html:not([dir="rtl"]) .lg\:text-start { + text-align: left; + } + } + .lg\:text-start:where(:dir(ltr)) { + text-align: left; + } + _:-ms-input-placeholder, [dir="rtl"] .lg\:text-start { + text-align: right; + } + @supports not (text-align: start) { + [dir="rtl"] .lg\:text-start { + text-align: right; + } + } + .lg\:text-start:where(:dir(rtl)) { + text-align: right; + } + .lg\:text-start { + text-align: start; + } + .lg\:text-center { + text-align: center; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .lg\:text-end { + text-align: right; + } + @supports not (text-align: end) { + html:not([dir="rtl"]) .lg\:text-end { + text-align: right; + } + } + .lg\:text-end:where(:dir(ltr)) { + text-align: right; + } + _:-ms-input-placeholder, [dir="rtl"] .lg\:text-end { + text-align: left; + } + @supports not (text-align: end) { + [dir="rtl"] .lg\:text-end { + text-align: left; + } + } + .lg\:text-end:where(:dir(rtl)) { + text-align: left; + } + .lg\:text-end { + text-align: end; + } + .lg\:text-justify { + text-align: justify; + } + } +} diff --git a/contracts/framework/utility/text-align/md/css/md.css b/contracts/framework/utility/text-align/md/css/md.css new file mode 100644 index 0000000..db76894 --- /dev/null +++ b/contracts/framework/utility/text-align/md/css/md.css @@ -0,0 +1,60 @@ +@layer sf.utilities { + @media (min-width: 44rem) { + _:-ms-input-placeholder, html:not([dir="rtl"]) .md\:text-start { + text-align: left; + } + @supports not (text-align: start) { + html:not([dir="rtl"]) .md\:text-start { + text-align: left; + } + } + .md\:text-start:where(:dir(ltr)) { + text-align: left; + } + _:-ms-input-placeholder, [dir="rtl"] .md\:text-start { + text-align: right; + } + @supports not (text-align: start) { + [dir="rtl"] .md\:text-start { + text-align: right; + } + } + .md\:text-start:where(:dir(rtl)) { + text-align: right; + } + .md\:text-start { + text-align: start; + } + .md\:text-center { + text-align: center; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .md\:text-end { + text-align: right; + } + @supports not (text-align: end) { + html:not([dir="rtl"]) .md\:text-end { + text-align: right; + } + } + .md\:text-end:where(:dir(ltr)) { + text-align: right; + } + _:-ms-input-placeholder, [dir="rtl"] .md\:text-end { + text-align: left; + } + @supports not (text-align: end) { + [dir="rtl"] .md\:text-end { + text-align: left; + } + } + .md\:text-end:where(:dir(rtl)) { + text-align: left; + } + .md\:text-end { + text-align: end; + } + .md\:text-justify { + text-align: justify; + } + } +} diff --git a/contracts/framework/utility/text-align/sm/css/sm.css b/contracts/framework/utility/text-align/sm/css/sm.css new file mode 100644 index 0000000..23e1d20 --- /dev/null +++ b/contracts/framework/utility/text-align/sm/css/sm.css @@ -0,0 +1,60 @@ +@layer sf.utilities { + @media (min-width: 32rem) { + _:-ms-input-placeholder, html:not([dir="rtl"]) .sm\:text-start { + text-align: left; + } + @supports not (text-align: start) { + html:not([dir="rtl"]) .sm\:text-start { + text-align: left; + } + } + .sm\:text-start:where(:dir(ltr)) { + text-align: left; + } + _:-ms-input-placeholder, [dir="rtl"] .sm\:text-start { + text-align: right; + } + @supports not (text-align: start) { + [dir="rtl"] .sm\:text-start { + text-align: right; + } + } + .sm\:text-start:where(:dir(rtl)) { + text-align: right; + } + .sm\:text-start { + text-align: start; + } + .sm\:text-center { + text-align: center; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .sm\:text-end { + text-align: right; + } + @supports not (text-align: end) { + html:not([dir="rtl"]) .sm\:text-end { + text-align: right; + } + } + .sm\:text-end:where(:dir(ltr)) { + text-align: right; + } + _:-ms-input-placeholder, [dir="rtl"] .sm\:text-end { + text-align: left; + } + @supports not (text-align: end) { + [dir="rtl"] .sm\:text-end { + text-align: left; + } + } + .sm\:text-end:where(:dir(rtl)) { + text-align: left; + } + .sm\:text-end { + text-align: end; + } + .sm\:text-justify { + text-align: justify; + } + } +} diff --git a/contracts/framework/utility/text-align/xl/css/xl.css b/contracts/framework/utility/text-align/xl/css/xl.css new file mode 100644 index 0000000..74482c3 --- /dev/null +++ b/contracts/framework/utility/text-align/xl/css/xl.css @@ -0,0 +1,60 @@ +@layer sf.utilities { + @media (min-width: 72rem) { + _:-ms-input-placeholder, html:not([dir="rtl"]) .xl\:text-start { + text-align: left; + } + @supports not (text-align: start) { + html:not([dir="rtl"]) .xl\:text-start { + text-align: left; + } + } + .xl\:text-start:where(:dir(ltr)) { + text-align: left; + } + _:-ms-input-placeholder, [dir="rtl"] .xl\:text-start { + text-align: right; + } + @supports not (text-align: start) { + [dir="rtl"] .xl\:text-start { + text-align: right; + } + } + .xl\:text-start:where(:dir(rtl)) { + text-align: right; + } + .xl\:text-start { + text-align: start; + } + .xl\:text-center { + text-align: center; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .xl\:text-end { + text-align: right; + } + @supports not (text-align: end) { + html:not([dir="rtl"]) .xl\:text-end { + text-align: right; + } + } + .xl\:text-end:where(:dir(ltr)) { + text-align: right; + } + _:-ms-input-placeholder, [dir="rtl"] .xl\:text-end { + text-align: left; + } + @supports not (text-align: end) { + [dir="rtl"] .xl\:text-end { + text-align: left; + } + } + .xl\:text-end:where(:dir(rtl)) { + text-align: left; + } + .xl\:text-end { + text-align: end; + } + .xl\:text-justify { + text-align: justify; + } + } +} diff --git a/contracts/framework/utility/text-align/xxl/css/xxl.css b/contracts/framework/utility/text-align/xxl/css/xxl.css new file mode 100644 index 0000000..66c7936 --- /dev/null +++ b/contracts/framework/utility/text-align/xxl/css/xxl.css @@ -0,0 +1,60 @@ +@layer sf.utilities { + @media (min-width: 80rem) { + _:-ms-input-placeholder, html:not([dir="rtl"]) .xxl\:text-start { + text-align: left; + } + @supports not (text-align: start) { + html:not([dir="rtl"]) .xxl\:text-start { + text-align: left; + } + } + .xxl\:text-start:where(:dir(ltr)) { + text-align: left; + } + _:-ms-input-placeholder, [dir="rtl"] .xxl\:text-start { + text-align: right; + } + @supports not (text-align: start) { + [dir="rtl"] .xxl\:text-start { + text-align: right; + } + } + .xxl\:text-start:where(:dir(rtl)) { + text-align: right; + } + .xxl\:text-start { + text-align: start; + } + .xxl\:text-center { + text-align: center; + } + _:-ms-input-placeholder, html:not([dir="rtl"]) .xxl\:text-end { + text-align: right; + } + @supports not (text-align: end) { + html:not([dir="rtl"]) .xxl\:text-end { + text-align: right; + } + } + .xxl\:text-end:where(:dir(ltr)) { + text-align: right; + } + _:-ms-input-placeholder, [dir="rtl"] .xxl\:text-end { + text-align: left; + } + @supports not (text-align: end) { + [dir="rtl"] .xxl\:text-end { + text-align: left; + } + } + .xxl\:text-end:where(:dir(rtl)) { + text-align: left; + } + .xxl\:text-end { + text-align: end; + } + .xxl\:text-justify { + text-align: justify; + } + } +} diff --git a/contracts/framework/utility/width/default/css/default.css b/contracts/framework/utility/width/default/css/default.css new file mode 100644 index 0000000..0fcfc9b --- /dev/null +++ b/contracts/framework/utility/width/default/css/default.css @@ -0,0 +1,122 @@ +@layer sf.utilities { + .w-auto { + width: auto; + } + .w-1\/1 { + width: 100%; + } + .w-1\/2 { + width: 50%; + } + .w-1\/3 { + width: 33.333333%; + } + .w-2\/3 { + width: 66.666667%; + } + .w-1\/4 { + width: 25%; + } + .w-2\/4 { + width: 50%; + } + .w-3\/4 { + width: 75%; + } + .w-1\/5 { + width: 20%; + } + .w-2\/5 { + width: 40%; + } + .w-3\/5 { + width: 60%; + } + .w-4\/5 { + width: 80%; + } + .w-1\/6 { + width: 16.666667%; + } + .w-2\/6 { + width: 33.333333%; + } + .w-3\/6 { + width: 50%; + } + .w-4\/6 { + width: 66.666667%; + } + .w-5\/6 { + width: 83.333333%; + } + .w-1\/12 { + width: 8.333333%; + } + .w-2\/12 { + width: 16.666667%; + } + .w-3\/12 { + width: 25%; + } + .w-4\/12 { + width: 33.333333%; + } + .w-5\/12 { + width: 41.666667%; + } + .w-6\/12 { + width: 50%; + } + .w-7\/12 { + width: 58.333333%; + } + .w-8\/12 { + width: 66.666667%; + } + .w-9\/12 { + width: 75%; + } + .w-10\/12 { + width: 83.333333%; + } + .w-11\/12 { + width: 91.666667%; + } + .w-full { + width: 100%; + } + .w-screen { + width: 100vw; + } + .w-screen-small { + width: var(--sf-viewport-width-small); + } + .w-screen-large { + width: var(--sf-viewport-width-large); + } + .w-screen-dynamic { + width: var(--sf-viewport-width-dynamic); + } + .w-min { + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; + } + .w-max { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } + .w-fit { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + } + .w-px { + width: 1px; + } + .w-0 { + width: 0; + } +} diff --git a/contracts/framework/utility/width/lg/css/lg.css b/contracts/framework/utility/width/lg/css/lg.css new file mode 100644 index 0000000..68a9bfe --- /dev/null +++ b/contracts/framework/utility/width/lg/css/lg.css @@ -0,0 +1,124 @@ +@layer sf.utilities { + @media (min-width: 60rem) { + .lg\:w-auto { + width: auto; + } + .lg\:w-1\/1 { + width: 100%; + } + .lg\:w-1\/2 { + width: 50%; + } + .lg\:w-1\/3 { + width: 33.333333%; + } + .lg\:w-2\/3 { + width: 66.666667%; + } + .lg\:w-1\/4 { + width: 25%; + } + .lg\:w-2\/4 { + width: 50%; + } + .lg\:w-3\/4 { + width: 75%; + } + .lg\:w-1\/5 { + width: 20%; + } + .lg\:w-2\/5 { + width: 40%; + } + .lg\:w-3\/5 { + width: 60%; + } + .lg\:w-4\/5 { + width: 80%; + } + .lg\:w-1\/6 { + width: 16.666667%; + } + .lg\:w-2\/6 { + width: 33.333333%; + } + .lg\:w-3\/6 { + width: 50%; + } + .lg\:w-4\/6 { + width: 66.666667%; + } + .lg\:w-5\/6 { + width: 83.333333%; + } + .lg\:w-1\/12 { + width: 8.333333%; + } + .lg\:w-2\/12 { + width: 16.666667%; + } + .lg\:w-3\/12 { + width: 25%; + } + .lg\:w-4\/12 { + width: 33.333333%; + } + .lg\:w-5\/12 { + width: 41.666667%; + } + .lg\:w-6\/12 { + width: 50%; + } + .lg\:w-7\/12 { + width: 58.333333%; + } + .lg\:w-8\/12 { + width: 66.666667%; + } + .lg\:w-9\/12 { + width: 75%; + } + .lg\:w-10\/12 { + width: 83.333333%; + } + .lg\:w-11\/12 { + width: 91.666667%; + } + .lg\:w-full { + width: 100%; + } + .lg\:w-screen { + width: 100vw; + } + .lg\:w-screen-small { + width: var(--sf-viewport-width-small); + } + .lg\:w-screen-large { + width: var(--sf-viewport-width-large); + } + .lg\:w-screen-dynamic { + width: var(--sf-viewport-width-dynamic); + } + .lg\:w-min { + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; + } + .lg\:w-max { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } + .lg\:w-fit { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + } + .lg\:w-px { + width: 1px; + } + .lg\:w-0 { + width: 0; + } + } +} diff --git a/contracts/framework/utility/width/md/css/md.css b/contracts/framework/utility/width/md/css/md.css new file mode 100644 index 0000000..baed3ea --- /dev/null +++ b/contracts/framework/utility/width/md/css/md.css @@ -0,0 +1,124 @@ +@layer sf.utilities { + @media (min-width: 44rem) { + .md\:w-auto { + width: auto; + } + .md\:w-1\/1 { + width: 100%; + } + .md\:w-1\/2 { + width: 50%; + } + .md\:w-1\/3 { + width: 33.333333%; + } + .md\:w-2\/3 { + width: 66.666667%; + } + .md\:w-1\/4 { + width: 25%; + } + .md\:w-2\/4 { + width: 50%; + } + .md\:w-3\/4 { + width: 75%; + } + .md\:w-1\/5 { + width: 20%; + } + .md\:w-2\/5 { + width: 40%; + } + .md\:w-3\/5 { + width: 60%; + } + .md\:w-4\/5 { + width: 80%; + } + .md\:w-1\/6 { + width: 16.666667%; + } + .md\:w-2\/6 { + width: 33.333333%; + } + .md\:w-3\/6 { + width: 50%; + } + .md\:w-4\/6 { + width: 66.666667%; + } + .md\:w-5\/6 { + width: 83.333333%; + } + .md\:w-1\/12 { + width: 8.333333%; + } + .md\:w-2\/12 { + width: 16.666667%; + } + .md\:w-3\/12 { + width: 25%; + } + .md\:w-4\/12 { + width: 33.333333%; + } + .md\:w-5\/12 { + width: 41.666667%; + } + .md\:w-6\/12 { + width: 50%; + } + .md\:w-7\/12 { + width: 58.333333%; + } + .md\:w-8\/12 { + width: 66.666667%; + } + .md\:w-9\/12 { + width: 75%; + } + .md\:w-10\/12 { + width: 83.333333%; + } + .md\:w-11\/12 { + width: 91.666667%; + } + .md\:w-full { + width: 100%; + } + .md\:w-screen { + width: 100vw; + } + .md\:w-screen-small { + width: var(--sf-viewport-width-small); + } + .md\:w-screen-large { + width: var(--sf-viewport-width-large); + } + .md\:w-screen-dynamic { + width: var(--sf-viewport-width-dynamic); + } + .md\:w-min { + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; + } + .md\:w-max { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } + .md\:w-fit { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + } + .md\:w-px { + width: 1px; + } + .md\:w-0 { + width: 0; + } + } +} diff --git a/contracts/framework/utility/width/sm/css/sm.css b/contracts/framework/utility/width/sm/css/sm.css new file mode 100644 index 0000000..3822b6e --- /dev/null +++ b/contracts/framework/utility/width/sm/css/sm.css @@ -0,0 +1,124 @@ +@layer sf.utilities { + @media (min-width: 32rem) { + .sm\:w-auto { + width: auto; + } + .sm\:w-1\/1 { + width: 100%; + } + .sm\:w-1\/2 { + width: 50%; + } + .sm\:w-1\/3 { + width: 33.333333%; + } + .sm\:w-2\/3 { + width: 66.666667%; + } + .sm\:w-1\/4 { + width: 25%; + } + .sm\:w-2\/4 { + width: 50%; + } + .sm\:w-3\/4 { + width: 75%; + } + .sm\:w-1\/5 { + width: 20%; + } + .sm\:w-2\/5 { + width: 40%; + } + .sm\:w-3\/5 { + width: 60%; + } + .sm\:w-4\/5 { + width: 80%; + } + .sm\:w-1\/6 { + width: 16.666667%; + } + .sm\:w-2\/6 { + width: 33.333333%; + } + .sm\:w-3\/6 { + width: 50%; + } + .sm\:w-4\/6 { + width: 66.666667%; + } + .sm\:w-5\/6 { + width: 83.333333%; + } + .sm\:w-1\/12 { + width: 8.333333%; + } + .sm\:w-2\/12 { + width: 16.666667%; + } + .sm\:w-3\/12 { + width: 25%; + } + .sm\:w-4\/12 { + width: 33.333333%; + } + .sm\:w-5\/12 { + width: 41.666667%; + } + .sm\:w-6\/12 { + width: 50%; + } + .sm\:w-7\/12 { + width: 58.333333%; + } + .sm\:w-8\/12 { + width: 66.666667%; + } + .sm\:w-9\/12 { + width: 75%; + } + .sm\:w-10\/12 { + width: 83.333333%; + } + .sm\:w-11\/12 { + width: 91.666667%; + } + .sm\:w-full { + width: 100%; + } + .sm\:w-screen { + width: 100vw; + } + .sm\:w-screen-small { + width: var(--sf-viewport-width-small); + } + .sm\:w-screen-large { + width: var(--sf-viewport-width-large); + } + .sm\:w-screen-dynamic { + width: var(--sf-viewport-width-dynamic); + } + .sm\:w-min { + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; + } + .sm\:w-max { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } + .sm\:w-fit { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + } + .sm\:w-px { + width: 1px; + } + .sm\:w-0 { + width: 0; + } + } +} diff --git a/contracts/framework/utility/width/xl/css/xl.css b/contracts/framework/utility/width/xl/css/xl.css new file mode 100644 index 0000000..507af7a --- /dev/null +++ b/contracts/framework/utility/width/xl/css/xl.css @@ -0,0 +1,124 @@ +@layer sf.utilities { + @media (min-width: 72rem) { + .xl\:w-auto { + width: auto; + } + .xl\:w-1\/1 { + width: 100%; + } + .xl\:w-1\/2 { + width: 50%; + } + .xl\:w-1\/3 { + width: 33.333333%; + } + .xl\:w-2\/3 { + width: 66.666667%; + } + .xl\:w-1\/4 { + width: 25%; + } + .xl\:w-2\/4 { + width: 50%; + } + .xl\:w-3\/4 { + width: 75%; + } + .xl\:w-1\/5 { + width: 20%; + } + .xl\:w-2\/5 { + width: 40%; + } + .xl\:w-3\/5 { + width: 60%; + } + .xl\:w-4\/5 { + width: 80%; + } + .xl\:w-1\/6 { + width: 16.666667%; + } + .xl\:w-2\/6 { + width: 33.333333%; + } + .xl\:w-3\/6 { + width: 50%; + } + .xl\:w-4\/6 { + width: 66.666667%; + } + .xl\:w-5\/6 { + width: 83.333333%; + } + .xl\:w-1\/12 { + width: 8.333333%; + } + .xl\:w-2\/12 { + width: 16.666667%; + } + .xl\:w-3\/12 { + width: 25%; + } + .xl\:w-4\/12 { + width: 33.333333%; + } + .xl\:w-5\/12 { + width: 41.666667%; + } + .xl\:w-6\/12 { + width: 50%; + } + .xl\:w-7\/12 { + width: 58.333333%; + } + .xl\:w-8\/12 { + width: 66.666667%; + } + .xl\:w-9\/12 { + width: 75%; + } + .xl\:w-10\/12 { + width: 83.333333%; + } + .xl\:w-11\/12 { + width: 91.666667%; + } + .xl\:w-full { + width: 100%; + } + .xl\:w-screen { + width: 100vw; + } + .xl\:w-screen-small { + width: var(--sf-viewport-width-small); + } + .xl\:w-screen-large { + width: var(--sf-viewport-width-large); + } + .xl\:w-screen-dynamic { + width: var(--sf-viewport-width-dynamic); + } + .xl\:w-min { + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; + } + .xl\:w-max { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } + .xl\:w-fit { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + } + .xl\:w-px { + width: 1px; + } + .xl\:w-0 { + width: 0; + } + } +} diff --git a/contracts/framework/utility/width/xxl/css/xxl.css b/contracts/framework/utility/width/xxl/css/xxl.css new file mode 100644 index 0000000..d255c79 --- /dev/null +++ b/contracts/framework/utility/width/xxl/css/xxl.css @@ -0,0 +1,124 @@ +@layer sf.utilities { + @media (min-width: 80rem) { + .xxl\:w-auto { + width: auto; + } + .xxl\:w-1\/1 { + width: 100%; + } + .xxl\:w-1\/2 { + width: 50%; + } + .xxl\:w-1\/3 { + width: 33.333333%; + } + .xxl\:w-2\/3 { + width: 66.666667%; + } + .xxl\:w-1\/4 { + width: 25%; + } + .xxl\:w-2\/4 { + width: 50%; + } + .xxl\:w-3\/4 { + width: 75%; + } + .xxl\:w-1\/5 { + width: 20%; + } + .xxl\:w-2\/5 { + width: 40%; + } + .xxl\:w-3\/5 { + width: 60%; + } + .xxl\:w-4\/5 { + width: 80%; + } + .xxl\:w-1\/6 { + width: 16.666667%; + } + .xxl\:w-2\/6 { + width: 33.333333%; + } + .xxl\:w-3\/6 { + width: 50%; + } + .xxl\:w-4\/6 { + width: 66.666667%; + } + .xxl\:w-5\/6 { + width: 83.333333%; + } + .xxl\:w-1\/12 { + width: 8.333333%; + } + .xxl\:w-2\/12 { + width: 16.666667%; + } + .xxl\:w-3\/12 { + width: 25%; + } + .xxl\:w-4\/12 { + width: 33.333333%; + } + .xxl\:w-5\/12 { + width: 41.666667%; + } + .xxl\:w-6\/12 { + width: 50%; + } + .xxl\:w-7\/12 { + width: 58.333333%; + } + .xxl\:w-8\/12 { + width: 66.666667%; + } + .xxl\:w-9\/12 { + width: 75%; + } + .xxl\:w-10\/12 { + width: 83.333333%; + } + .xxl\:w-11\/12 { + width: 91.666667%; + } + .xxl\:w-full { + width: 100%; + } + .xxl\:w-screen { + width: 100vw; + } + .xxl\:w-screen-small { + width: var(--sf-viewport-width-small); + } + .xxl\:w-screen-large { + width: var(--sf-viewport-width-large); + } + .xxl\:w-screen-dynamic { + width: var(--sf-viewport-width-dynamic); + } + .xxl\:w-min { + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; + } + .xxl\:w-max { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + } + .xxl\:w-fit { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + } + .xxl\:w-px { + width: 1px; + } + .xxl\:w-0 { + width: 0; + } + } +} diff --git a/src/registry/sf-autocomplete.json b/data/sf-autocomplete.json similarity index 99% rename from src/registry/sf-autocomplete.json rename to data/sf-autocomplete.json index 7802605..cfba485 100644 --- a/src/registry/sf-autocomplete.json +++ b/data/sf-autocomplete.json @@ -1,14 +1,14 @@ { "schemaVersion": "1.0.0", "registryId": "simai.sf-autocomplete", - "registryVersion": "1.1.0", + "registryVersion": "1.3.0", "source": { "contractId": "simai.vertical-sizing", - "contractVersion": "1.1.0", - "sha256": "333d78f0f3abe6f47c9caa1fc3c53c4d2894e122a922a400804383266cbd72f5", - "repository": "SIMAI/ui-loader", - "commit": "97b3df993a3250661a2d9e9db6500fad16b5b5cb", - "tree": "6cc9bda9aae2b5d86918d58c49c736af1708cf7e", + "contractVersion": "1.3.0", + "sha256": "b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45", + "repository": "simai/ui-source", + "commit": "1d26dd483201d24ad1af8419efc21b0d4a76a565", + "tree": "5b4d11c91ac0716e083554a9a358b0a9deaadab2", "path": "src/core/contracts/adaptive-sizing.v1.json" }, "modes": { diff --git a/data/sf-framework.json b/data/sf-framework.json new file mode 100644 index 0000000..2b8f698 --- /dev/null +++ b/data/sf-framework.json @@ -0,0 +1,2005 @@ +{ +"schemaVersion": "1.0.0", +"registryId": "simai.sf-framework", +"release": {"id":"ui-a9636b60d3e3","repository":"simai/ui","registryCommit":"442402e4b6185147d56d75b580721b8aca5050dc","coreCommit":"a9636b60d3e330edc2736b41f3791ebf8d1be391","smartCommit":"106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4","registrySha256":"63a23fd4d67a8d0314de8d8fc65f423bdebaae4260da61b82a77ecf8cfd90b13"}, +"desktopMinWidth": "60rem", +"tags": [ +{"tag":"sf-button","id":"smart.buttons","title":"Buttons","summary":"A native button with Framework presentation: size, appearance, colour role or status, optional start and end icons, spacing and radius. loading sets aria-busy and disables it against repeated activation.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"appearance","type":"string","default":"default","description":"How the button looks. Surface reads the neutral alpha ramp: a faint fill and a border. ghost is the link appearance under its old name (compat until 2026-12-01).","values":["default","tonal","outline","link","surface","ghost"],"examples":[],"deprecated":null},{"name":"aria-label","type":"string","default":"","description":"Accessible label for icon-only or custom buttons.","values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":"Disabled state flag.","values":[],"examples":[],"deprecated":null},{"name":"icon","type":"string","default":"","description":"Single icon name shortcut.","values":[],"examples":["home","settings","search","edit","check","close"],"deprecated":null},{"name":"icon-end","type":"string","default":"","description":"Logical end icon name.","values":[],"examples":["home","settings","search","edit","check","close"],"deprecated":null},{"name":"icon-left","type":"string","default":"","description":"Compatibility alias for icon-start.","values":[],"examples":["home","settings","search","edit","check","close"],"deprecated":null},{"name":"icon-position","type":"string","default":"start","description":"Placement for the single icon shortcut.","values":["start","end"],"examples":[],"deprecated":null},{"name":"icon-right","type":"string","default":"","description":"Compatibility alias for icon-end.","values":[],"examples":["home","settings","search","edit","check","close"],"deprecated":null},{"name":"icon-start","type":"string","default":"","description":"Logical start icon name.","values":[],"examples":["home","settings","search","edit","check","close"],"deprecated":null},{"name":"loading","type":"boolean","default":"false","description":"Loading state flag.","values":[],"examples":[],"deprecated":null},{"name":"native-type","type":"string","default":"button","description":"Native button type attribute.","values":["button","submit","reset"],"examples":[],"deprecated":null},{"name":"radius","type":"string","default":"","description":"Border radius modifier.","values":["default","square","rounded"],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":"Extra classes applied to the inner button element.","values":[],"examples":[],"deprecated":null},{"name":"scheme","type":"string","default":"primary","description":"Which colour family the control takes. What the control is about is the status axis; a status set there wins over this.","values":["primary","secondary","on-surface"],"examples":[],"deprecated":null},{"name":"segment","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":"Button size token.","values":["1/3","1/2","1","2","3"],"examples":[],"deprecated":null},{"name":"spacing","type":"string","default":"normal","description":"Semantic internal spacing profile.","values":["compact","normal","comfortable","spacious"],"examples":[],"deprecated":null},{"name":"status","type":"string","default":"","description":"What the control is about, in the shared status vocabulary. The only one a control paints today is `error`, the destructive one: a control that deletes, discards or cannot be undone.","values":["error"],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":"Template variant name for SfBaseElement external templates.","values":[],"examples":[],"deprecated":null},{"name":"text","type":"string","default":"","description":"Visible button text when no text slot is provided.","values":[],"examples":[],"deprecated":null},{"name":"text-position","type":"string","default":"center","description":null,"values":[],"examples":[],"deprecated":null},{"name":"tightness","type":"string","default":"","description":"Compatibility alias for spacing.","values":["low","high","highest"],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"default","description":"Legacy name for appearance, still honoured. See contracts/public-api-axes.json.","values":["default","tonal","outline","link","surface","ghost"],"examples":[],"deprecated":null}]}, +{"tag":"sf-checkbox","id":"smart.checkbox","title":"Checkbox","summary":"A native checkbox with a label, Framework presentation and checked, indeterminate and disabled states kept in step between the host attributes and the inner input.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"aria-label","type":"string","default":"","description":"Accessible name for a checkbox rendered without a visible label.","values":[],"examples":[],"deprecated":null},{"name":"checked","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"description","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"error","type":"boolean","default":"false","description":"Invalid state; the native input publishes aria-invalid.","values":[],"examples":[],"deprecated":null},{"name":"help","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"indeterminate","type":"boolean","default":"false","description":"Mixed visual state for a checkbox that summarizes related options.","values":[],"examples":[],"deprecated":null},{"name":"label","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"name","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"position","type":"string","default":"start","description":"Logical placement of the indicator relative to its text.","values":["start","end"],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":"Checkbox size token.","values":["1/2","1","2"],"examples":[],"deprecated":null},{"name":"value","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-close","id":"smart.close","title":"Close","summary":"The decorative cross glyph of a close action, sized on the control ladder. It is aria-hidden and never focusable; the containing native button owns the action and its name.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"root-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1/3","description":"Decorative close-glyph size token.","values":["1/4","1/3","1/2","1","2","3","4","5","6","7"],"examples":[],"deprecated":null}]}, +{"tag":"sf-context-menu","id":"smart.context-menu","title":"Context Menu","summary":"The Framework's action menu: data entries with icon, caption, value, shortcut, check, submenu, separator and heading, opened by openFor() into the top layer, anchored, with keyboard, typeahead and focus return. A host may still render its own items and own the lifecycle.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"active-tab","type":"string","default":"","description":"The chosen tab's id or index; the host renders that tab's rows into the content slot.","values":[],"examples":[],"deprecated":null},{"name":"aria-label","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"closable","type":"boolean","default":"false","description":"A close button at the end of the panel's head.","values":[],"examples":[],"deprecated":null},{"name":"content-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"entries","type":"array","default":"[]","description":"The menu as data (set as a property, or JSON in the attribute). See item_contract. When present, it replaces items and the content slot.","values":[],"examples":[],"deprecated":null},{"name":"items","type":"array","default":"[]","description":null,"values":[],"examples":[],"deprecated":null},{"name":"popup","type":"boolean","default":"false","description":"Not drawn until opened through openFor(). A menu without it is drawn in place, as before.","values":[],"examples":[],"deprecated":null},{"name":"position","type":"string","default":"","description":"Deprecated: a menu has no tail since 1.3.0 (owner, 2026-10-12); the value is kept for its class and draws nothing.","values":["inline-start","inline-start-top","inline-start-bottom","inline-end","inline-end-top","inline-end-bottom","top","top-inline-start","top-inline-end","bottom","bottom-inline-start","bottom-inline-end","start","end","top-start","top-end","bottom-start","bottom-end","left","left-top","left-bottom","right","right-top","right-bottom","top-left","top-center","top-right","bottom-left","bottom-center","bottom-right","left-start","left-end","right-start","right-end","inline-start-start","inline-start-end","inline-end-start","inline-end-end"],"examples":[],"deprecated":{"since":"1.3.0","replacement":"openFor(anchor, {side, align}) places the menu; no tail is drawn"}},{"name":"role","type":"string","default":"menu","description":null,"values":[],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"search","type":"object","default":"null","description":"{placeholder, empty, remote}: a search field above the rows (set as a property). Local by default; with remote: true the menu raises sf-context-menu-search {query} and shows the entries the host sets. A submenu entry passes it with `search`.","values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1/2","description":"The menu's size: rows as tall as a field of that size (32px at 1/2, 40px at 1), its text, insets, search and footer. A submenu takes its parent's size.","values":["1/2","1"],"examples":[],"deprecated":null},{"name":"tabs","type":"string | array","default":"","description":"A panel with tabs: labels separated by |, or [{id, label}] as a property. The head (tabs and the close button) and the footer never scroll, the body does, and the panel keeps a fixed width (a ladder step, or width) whatever a tab holds.","values":[],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":null,"values":[],"examples":[],"deprecated":null},{"name":"text","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"tooltip","type":"boolean","default":"true","description":"Deprecated: a menu has no tail since 1.3.0 (owner, 2026-10-12); the value is kept for its class and draws nothing.","values":[],"examples":[],"deprecated":{"since":"1.3.0","replacement":"none: a menu has no tail"}},{"name":"width","type":"string","default":"content","description":"How wide openFor() opens the menu: content (its longest line, between --sf-context-menu--min-inline-size and --sf-context-menu--max-inline-size), trigger (exactly the control that opened it; a long line ends in an ellipsis) or a CSS length. openFor(anchor, {width}) overrides it.","values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-datepicker","id":"smart.datepicker","title":"Datepicker","summary":"Accessible date and date-range picker with popup and inline presentation, calendar navigation and host-owned values.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"close-on-select","type":"boolean","default":"true","description":"Close the panel once a date (or a range end) is chosen.","values":[],"examples":[],"deprecated":null},{"name":"context","type":"string","default":"","description":"Which grid the panel opens on: days (empty), month or year.","values":["month","year"],"examples":[],"deprecated":null},{"name":"date","type":"string","default":"","description":"The ISO date (yyyy-mm-dd) chosen; value is read when date is absent.","values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":"Disable the field and the panel.","values":[],"examples":[],"deprecated":null},{"name":"end-value","type":"string","default":"","description":"Range only: the ISO end date.","values":[],"examples":[],"deprecated":null},{"name":"format","type":"string","default":"DD.MM.YYYY","description":"How the date is shown in the field, e.g. DD.MM.YYYY. The value stays ISO.","values":[],"examples":[],"deprecated":null},{"name":"icon-start","type":"string","default":"calendar_today","description":"The icon at the start of the field; the canonical name for left-icon.","values":[],"examples":[],"deprecated":null},{"name":"input","type":"boolean","default":"true","description":"Draw the text field; without it only the panel is drawn.","values":[],"examples":[],"deprecated":null},{"name":"input-name","type":"string","default":"","description":"The form field name of the value; wins over name.","values":[],"examples":[],"deprecated":null},{"name":"input-root-class","type":"string","default":"","description":"Classes added to the field's root.","values":[],"examples":[],"deprecated":null},{"name":"input-size","type":"string","default":"1","description":"Legacy name for size, still honoured; size wins when both are set. See contracts/public-api-axes.json.","values":["1/2","1","2"],"examples":[],"deprecated":null},{"name":"input-type","type":"string","default":"bordered","description":"The field's appearance (bordered by default), as on sf-inputs.","values":[],"examples":[],"deprecated":null},{"name":"label","type":"string","default":"","description":"The field's visible label.","values":[],"examples":[],"deprecated":null},{"name":"left-icon","type":"string","default":"calendar_today","description":"Legacy name for icon-start, still honoured; icon-start wins when both are set.","values":[],"examples":[],"deprecated":null},{"name":"locale","type":"string","default":"","description":"The language of month and day names; defaults to the page language.","values":[],"examples":[],"deprecated":null},{"name":"mask","type":"boolean","default":"false","description":"Mask what can be typed in the field to the format.","values":[],"examples":[],"deprecated":null},{"name":"mask-lazy","type":"boolean","default":"false","description":"Show the mask's placeholder characters only as they are typed.","values":[],"examples":[],"deprecated":null},{"name":"mask-options","type":"string","default":"","description":"Further mask options as JSON, passed to the field's mask.","values":[],"examples":[],"deprecated":null},{"name":"mask-pattern","type":"string","default":"00.00.0000","description":"Input mask; when not set it is derived from format, so the default format DD.MM.YYYY gives 00.00.0000.","values":[],"examples":[],"deprecated":null},{"name":"mask-placeholder-char","type":"string","default":"_","description":"The character that stands for a position not yet typed.","values":[],"examples":[],"deprecated":null},{"name":"max-date","type":"string","default":"","description":"The latest ISO date that can be chosen; later days are disabled.","values":[],"examples":[],"deprecated":null},{"name":"min-date","type":"string","default":"","description":"The earliest ISO date that can be chosen; earlier days are disabled.","values":[],"examples":[],"deprecated":null},{"name":"month","type":"number","default":"null","description":"The month shown when the panel opens, 0-11; defaults to the chosen date's month, else the current one.","values":[],"examples":[],"deprecated":null},{"name":"name","type":"string","default":"","description":"The form field name of the value. input-name is the same and wins when both are set.","values":[],"examples":[],"deprecated":null},{"name":"open","type":"boolean","default":"false","description":"Whether the panel is open.","values":[],"examples":[],"deprecated":null},{"name":"placeholder","type":"string","default":"","description":"The field's placeholder text.","values":[],"examples":[],"deprecated":null},{"name":"portal","type":"boolean","default":"true","description":"Draw the panel at the end of the document so no clipping ancestor cuts it.","values":[],"examples":[],"deprecated":null},{"name":"preset","type":"string","default":"","description":"The chosen quick range's id. Set by a host it wins over start-value and end-value, and a relative one is resolved against today in the person's time zone when drawn; nothing is emitted for it.","values":[],"examples":[],"deprecated":null},{"name":"presets","type":"string | array","default":"","description":"Range only: quick ranges beside the grid. Built-in ids, comma separated (today, yesterday, last-7-days, last-30-days, this-week, this-month, last-month), or as a property [{id, label, relative} | {id, label, range: [from, to]}]. Clamped to min-date and max-date; a range with nothing left is disabled.","values":[],"examples":[],"deprecated":null},{"name":"range","type":"boolean","default":"false","description":"Pick a start and an end instead of one date.","values":[],"examples":[],"deprecated":null},{"name":"required","type":"boolean","default":"false","description":"Mark the field required in its form.","values":[],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":"Classes added to the component's root.","values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":"Form size of the field.","values":["1/2","1","2"],"examples":[],"deprecated":null},{"name":"start-value","type":"string","default":"","description":"Range only: the ISO start date.","values":[],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":"Which template draws it.","values":[],"examples":[],"deprecated":null},{"name":"value","type":"string","default":"","description":"The ISO date (yyyy-mm-dd). As a property, [start, end] for a range; the attribute is the same as date.","values":[],"examples":[],"deprecated":null},{"name":"week-start","type":"number","default":"null","description":"The first day of the week, 0 Sunday to 6 Saturday (1 Monday). Without the attribute it follows the page's language (ru: Monday, en-US: Sunday, ar-EG: Saturday).","values":[],"examples":[],"deprecated":null},{"name":"year","type":"number","default":"null","description":"The year shown when the panel opens; defaults to the chosen date's year, else the current one.","values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-dropdown","id":"smart.dropdown","title":"Dropdown","summary":"Accessible single or multiple selection control with searchable options and optional portal projection.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"appearance","type":"string","default":"outlined","description":"How the dropdown looks: a filled field or an outlined one.","values":["filled","outlined"],"examples":[],"deprecated":null},{"name":"aria-label","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"columns","type":"string","default":"6","description":"How many options a row holds in the grid layout. Ignored in a list.","values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"label","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"layout","type":"string","default":"list","description":"How the options are laid out. A list is one option a row; a grid puts several in a row, which is the only way a hundred glyphs can be looked at -- a column of them is a column nobody scrolls to the end of. In a grid an option shows its picture and keeps its text as the name a search reads and a pointer sees.","values":["list","grid"],"examples":[],"deprecated":null},{"name":"mode","type":"string","default":"select","description":null,"values":["tag","select"],"examples":[],"deprecated":null},{"name":"multiple","type":"boolean","default":"false","description":"Allow several values while preserving their serialized selection order. Tag mode is multiple by default.","values":[],"examples":[],"deprecated":null},{"name":"name","type":"string","default":"","description":"Native form field name for the selected machine value.","values":[],"examples":[],"deprecated":null},{"name":"options","type":"array","default":"[]","description":"Options given as data instead of as sf-list-item children: [{text, value, type?, size?, icon?, selected?, disabled?, colorClass?, avatarImageUrl?, avatarTitle?, ariaLabel?, group?}]. A string or a number is taken as both the label and the value. A parent that renders this dropdown from a template passes its options this way, because capturing child elements means removing them, and the parent can then no longer put a changed list back. Options carrying the same `group`, one after another, are drawn under one heading, so a long list says where each stretch of it comes from instead of repeating that in every row.","values":[],"examples":[],"deprecated":null},{"name":"placeholder","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"portal","type":"boolean","default":"true","description":"Anchor the popup with the shared Framework positioning (SF.Position): native top layer, flip, shift and viewport-limited height. On by default; portal=\"false\" keeps the in-flow list.","values":[],"examples":[],"deprecated":null},{"name":"required","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"search","type":"boolean","default":"true","description":null,"values":[],"examples":[],"deprecated":null},{"name":"search-placeholder","type":"string","default":"","description":"Empty: the text of the page's language (\"Search\" in English).","values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":null,"values":["1/2","1","2"],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":null,"values":[],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"outlined","description":"Legacy name for appearance, still honoured. See contracts/public-api-axes.json.","values":["filled","outlined"],"examples":[],"deprecated":null},{"name":"value","type":"string","default":"","description":"Selected machine value, or a comma-separated list of values for multiple selection.","values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-icon","id":"smart.icons","title":"Icons","summary":"Semantic Material Symbol wrapper with exact Loader tracking, accessible decorative or informative modes and token-owned geometry.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"filled","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"grade","type":"number","default":"0","description":null,"values":[],"examples":[],"deprecated":null},{"name":"icon","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"label","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"loaded","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"optical-size","type":"number","default":"24","description":null,"values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"","description":null,"values":["1/4","1/3","1/2","1","2","3","4","5","6","7"],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"","description":null,"values":["outlined","rounded","sharp","shape"],"examples":[],"deprecated":null},{"name":"weight","type":"number","default":"400","description":null,"values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-icon-button","id":"smart.icon-buttons","title":"Icon Buttons","summary":"Native icon-only action with token geometry, accessible naming and shared loading semantics.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"appearance","type":"string","default":"default","description":"How the icon button looks. Surface and ghost read the neutral alpha ramp: surface keeps a faint fill and a border, ghost keeps nothing until it is hovered or focused.","values":["default","tonal","outline","link","surface","ghost"],"examples":[],"deprecated":null},{"name":"aria-label","type":"string","default":"","description":"Accessible label.","values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":"Disabled state flag.","values":[],"examples":[],"deprecated":null},{"name":"filled","type":"boolean","default":"false","description":"Use the filled glyph axis for the standard icon variant.","values":[],"examples":[],"deprecated":null},{"name":"icon","type":"string","default":"add","description":"Material icon name.","values":[],"examples":[],"deprecated":null},{"name":"kind","type":"string","default":"icon","description":"What the icon button is: an ordinary icon action or a close control.","values":["icon","close"],"examples":[],"deprecated":null},{"name":"loading","type":"boolean","default":"false","description":"Loading state flag.","values":[],"examples":[],"deprecated":null},{"name":"native-type","type":"string","default":"button","description":"Native button type attribute.","values":["button","submit","reset"],"examples":[],"deprecated":null},{"name":"radius","type":"string","default":"","description":"Border radius modifier.","values":["default","square","rounded"],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":"Extra classes applied to the inner icon button element.","values":[],"examples":[],"deprecated":null},{"name":"scheme","type":"string","default":"primary","description":"Which colour family the control takes. What the control is about is the status axis; a status set there wins over this.","values":["primary","secondary","on-surface"],"examples":[],"deprecated":null},{"name":"segment","type":"string","default":"","description":"Joined-control position owned by Button Group composition.","values":["start","middle","end"],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":"Icon button size token.","values":["1/3","1/2","1","2","3"],"examples":[],"deprecated":null},{"name":"spacing","type":"string","default":"normal","description":"Semantic internal spacing profile.","values":["compact","normal","comfortable","spacious"],"examples":[],"deprecated":null},{"name":"status","type":"string","default":"","description":"What the control is about, in the shared status vocabulary. The only one a control paints today is `error`, the destructive one: a control that deletes, discards or cannot be undone.","values":["error"],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":"Template variant name for SfBaseElement external templates.","values":[],"examples":[],"deprecated":null},{"name":"tightness","type":"string","default":"","description":"Compatibility alias for spacing.","values":["low","high","highest"],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"default","description":"Legacy name for appearance, still honoured. See contracts/public-api-axes.json.","values":["default","tonal","outline","link","surface","ghost"],"examples":[],"deprecated":null},{"name":"variant","type":"string","default":"icon","description":"Legacy name for kind, still honoured. See contracts/public-api-axes.json.","values":["icon","close"],"examples":[],"deprecated":null}]}, +{"tag":"sf-input","id":"smart.inputs","title":"Inputs","summary":"A native single-line form control with Framework presentation, validation messaging and optional mask integration.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"appearance","type":"string","default":"bordered","description":"How the field looks: a bordered box, a filled one, or hidden.","values":["bordered","filled","hidden"],"examples":[],"deprecated":null},{"name":"autocomplete","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"default-value","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"error","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"error-message","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"hint","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"hint-icon","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"icon-start","type":"string","default":"null","description":null,"values":[],"examples":[],"deprecated":null},{"name":"input-type","type":"string","default":"text","description":null,"values":["text","email","password","search","tel","url"],"examples":[],"deprecated":null},{"name":"inputmode","type":"string","default":"","description":null,"values":["none","text","tel","url","email","numeric","decimal","search"],"examples":[],"deprecated":null},{"name":"invalid","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"label","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"left-icon","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"mask","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"mask-lazy","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"mask-options","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"mask-pattern","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"mask-placeholder-char","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"maxlength","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"minlength","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"name","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"pattern","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"placeholder","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"readonly","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"required","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"right-text","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":null,"values":["1/2","1","2"],"examples":[],"deprecated":null},{"name":"text-end","type":"string","default":"null","description":null,"values":[],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"bordered","description":"Legacy name for appearance, still honoured. See contracts/public-api-axes.json.","values":["bordered","filled","hidden"],"examples":[],"deprecated":null},{"name":"value","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-pagination","id":"smart.pagination","title":"Pagination","summary":"Source-driven navigation for a collection split into numbered pages.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"action","type":"string","default":"","description":"Selected batch-action value.","values":[],"examples":[],"deprecated":null},{"name":"action-apply-text","type":"string","default":"","description":"Label of the batch-action apply button. Empty: the text of the page's language (\"Apply\" in English).","values":[],"examples":[],"deprecated":null},{"name":"action-choose-label","type":"string","default":"","description":"Placeholder of the batch-action selector, shown until an action is chosen. Empty: the text of the page's language (\"Choose an action\" in English).","values":[],"examples":[],"deprecated":null},{"name":"action-for-all","type":"boolean","default":"false","description":"Current all-items toggle value.","values":[],"examples":[],"deprecated":null},{"name":"action-for-all-label","type":"string","default":"","description":"Label of the all-items toggle. Empty: the text of the page's language (\"For all\" in English).","values":[],"examples":[],"deprecated":null},{"name":"actions","type":"string","default":"","description":"Pipe-separated compatible batch-action definitions.","values":[],"examples":[],"deprecated":null},{"name":"actions-label","type":"string","default":"","description":"Accessible name of the batch-action selector. Empty: the text of the page's language (\"Action for the selected records\" in English).","values":[],"examples":[],"deprecated":null},{"name":"actions-region-label","type":"string","default":"","description":"Accessible name of the panel that appears while rows are marked. Empty: the text of the page's language (\"Actions for the selected\" in English).","values":[],"examples":[],"deprecated":null},{"name":"aria-label","type":"string","default":"","description":"Accessible name of the navigation landmark. Empty: the text of the page's language (\"Result pages\" in English).","values":[],"examples":[],"deprecated":null},{"name":"bottom","type":"boolean","default":"true","description":"Allow the compatible batch-action section.","values":[],"examples":[],"deprecated":null},{"name":"bottom-class","type":"string","default":"","description":"Framework utility classes for the batch-action section.","values":[],"examples":[],"deprecated":null},{"name":"can-count","type":"boolean","default":"false","description":"Whether the host can count on request. Without it the view offers nothing and asks for nothing.","values":[],"examples":[],"deprecated":null},{"name":"clear-selection-label","type":"string","default":"","description":"Accessible name and tooltip of the control that drops the selection. Empty: the text of the page's language (\"Clear the selection\" in English).","values":[],"examples":[],"deprecated":null},{"name":"count-known","type":"boolean","default":"true","description":"Whether the number of records is known. A host that does not count every answer sets it false, and the view offers the number instead of showing it.","values":[],"examples":[],"deprecated":null},{"name":"counting","type":"boolean","default":"false","description":"A count is on its way; the view shows a short wait in place of the number.","values":[],"examples":[],"deprecated":null},{"name":"counting-label","type":"string","default":"","description":"Accessible name of the short wait shown while the count is on its way. Empty: the text of the page's language (\"Counting\" in English).","values":[],"examples":[],"deprecated":null},{"name":"current","type":"integer","default":"1","description":"Current one-based page number.","values":[],"examples":[],"deprecated":null},{"name":"first-label","type":"string","default":"","description":"Accessible name and tooltip of the control that goes to the first page. Empty: the text of the page's language (\"First\" in English).","values":[],"examples":[],"deprecated":null},{"name":"has-next","type":"boolean","default":"false","description":"Whether a further page exists. It is what moves forward and Show more when no total was sent.","values":[],"examples":[],"deprecated":null},{"name":"last-label","type":"string","default":"","description":"Visible label of the compatible last-page action. Empty: the text of the page's language (\"Last\" in English).","values":[],"examples":[],"deprecated":null},{"name":"main-class","type":"string","default":"","description":"Framework utility classes for the navigation section.","values":[],"examples":[],"deprecated":null},{"name":"middle","type":"boolean","default":"true","description":"Show page navigation and collection summary.","values":[],"examples":[],"deprecated":null},{"name":"next-label","type":"string","default":"","description":"Accessible name of the next-page action. Empty: the text of the page's language (\"Next page\" in English).","values":[],"examples":[],"deprecated":null},{"name":"page-field-label","type":"string","default":"","description":"Label of the field that takes a page number. Empty: the text of the page's language (\"Page:\" in English).","values":[],"examples":[],"deprecated":null},{"name":"page-label","type":"string","default":"","description":"Accessible prefix for a numbered page action. Empty: the text of the page's language (\"Page\" in English).","values":[],"examples":[],"deprecated":null},{"name":"page-size","type":"integer","default":"10","description":"Positive number of items per page.","values":[],"examples":[],"deprecated":null},{"name":"page-size-label","type":"string","default":"","description":"Visible and accessible label of the page-size selector. Empty: the text of the page's language (\"Per page:\" in English).","values":[],"examples":[],"deprecated":null},{"name":"page-sizes","type":"string","default":"10,20,30,40","description":"Comma-separated positive page-size choices.","values":[],"examples":[],"deprecated":null},{"name":"pages-label","type":"string","default":"","description":"Visible label before page controls. Empty: the text of the page's language (\"Pages:\" in English).","values":[],"examples":[],"deprecated":null},{"name":"previous-label","type":"string","default":"","description":"Accessible name of the previous-page action. Empty: the text of the page's language (\"Previous page\" in English).","values":[],"examples":[],"deprecated":null},{"name":"selected-count","type":"integer","default":"0","description":"Selected item count, clamped between zero and total.","values":[],"examples":[],"deprecated":null},{"name":"selected-label","type":"string","default":"","description":"Visible label for the selected item count. Empty: the text of the page's language (\"Selected:\" in English).","values":[],"examples":[],"deprecated":null},{"name":"show-action-for-all","type":"boolean","default":"false","description":"Show the compatible all-items toggle.","values":[],"examples":[],"deprecated":null},{"name":"show-actions","type":"boolean","default":"true","description":"Show batch actions when actions are supplied.","values":[],"examples":[],"deprecated":null},{"name":"show-count-label","type":"string","default":"","description":"Text of the control that asks the host for the number. Empty: the text of the page's language (\"Show the number\" in English).","values":[],"examples":[],"deprecated":null},{"name":"show-more-busy","type":"boolean","default":"false","description":"Mark the Show more control as working while the host fetches the next portion; it is disabled and shows a loader.","values":[],"examples":[],"deprecated":null},{"name":"show-more-text","type":"string","default":"","description":"Label of the compatible show-more action. Empty: the text of the page's language (\"Show more\" in English).","values":[],"examples":[],"deprecated":null},{"name":"show-page-size","type":"boolean","default":"true","description":"Show the page-size selector for a non-empty collection.","values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":"The step of the size ladder its fields, buttons, labels and page numbers take: 1, or the dense 1/2 of an admin.","values":["1/2","1"],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":"Template name.","values":[],"examples":[],"deprecated":null},{"name":"top","type":"boolean","default":"true","description":"Show the compatible show-more section.","values":[],"examples":[],"deprecated":null},{"name":"top-class","type":"string","default":"","description":"Framework utility classes for the show-more section.","values":[],"examples":[],"deprecated":null},{"name":"total","type":"integer","default":"10","description":"Non-negative total item count.","values":[],"examples":[],"deprecated":null},{"name":"total-label","type":"string","default":"","description":"Visible label for the total item count. Empty: the text of the page's language (\"Total:\" in English).","values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-spinner","id":"smart.spinner","title":"Spinner","summary":"Indeterminate waiting indicator with arc or dots presentation, optional polite status announcement and Framework-owned motion.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"announce","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"direction","type":"string","default":"clockwise","description":null,"values":["clockwise","counterclockwise"],"examples":[],"deprecated":null},{"name":"dot-radius","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"dots","type":"string","default":"16","description":null,"values":[],"examples":[],"deprecated":null},{"name":"filled","type":"string","default":"6","description":null,"values":[],"examples":[],"deprecated":null},{"name":"height","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"infinite","type":"boolean","default":"false","description":null,"values":[],"examples":[],"deprecated":null},{"name":"kind","type":"string","default":"arc","description":"What the spinner is: an arc or a row of dots.","values":["arc","dots"],"examples":[],"deprecated":null},{"name":"label","type":"string","default":"","description":"Empty: the text of the page's language (\"Loading...\" in English).","values":[],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":null,"values":["1/2","1","2","3"],"examples":[],"deprecated":null},{"name":"stroke-width","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"variant","type":"string","default":"arc","description":"Legacy name for kind, still honoured. See contracts/public-api-axes.json.","values":["arc","dots"],"examples":[],"deprecated":null},{"name":"width","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-tabs","id":"smart.tabs","title":"Tabs","summary":"A tab list that shows one local panel at a time, with text or icon tabs given as attributes, slots or data, roving keyboard focus and linked tab panels.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"active-index","type":"number","default":"0","description":null,"values":[],"examples":[],"deprecated":null},{"name":"configurable","type":"boolean","default":"false","description":"A gear at the end of the tabs («Настроить вкладки») opens the standard menu with the tabs as a sortable list, a visibility checkbox per tab (pinned tabs fixed) and «Сбросить» in its footer. The choice is the host's: sf-tabs-settings-change {order, hidden}, sf-tabs-settings-reset, setSettings({order, hidden}).","values":[],"examples":[],"deprecated":null},{"name":"items","type":"string","default":"[]","description":"An item (set with setItems) may carry key (a stable id for the settings; the index otherwise), icon, count (a small counter after the label), href (the tab is a link: activating it goes to the address; aria-current=page on the active one) and pinned (never hidden, fixed in the settings).","values":[],"examples":[],"deprecated":null},{"name":"overflow","type":"string","default":"scroll","description":"What the tabs do when they do not fit: scroll (the row scrolls), wrap (rows wrap), or more (the tabs that do not fit go into a trailing «Ещё (n)» menu; the active one always stays).","values":["scroll","wrap","more"],"examples":[],"deprecated":null},{"name":"panel-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"scheme","type":"string","default":"default","description":"Built-in button appearance: default, outline or link. Historical name retained; this is not a semantic color selector. Custom templates may interpret it separately.","values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1","description":null,"values":[],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":null,"values":[],"examples":[],"deprecated":null},{"name":"top-class","type":"string","default":"","description":null,"values":[],"examples":[],"deprecated":null},{"name":"top-position","type":"string","default":"start","description":null,"values":[],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"null","description":null,"values":[],"examples":[],"deprecated":null},{"name":"variant","type":"string","default":"buttons","description":null,"values":[],"examples":[],"deprecated":null}]}, +{"tag":"sf-tag","id":"smart.tags","title":"Tags","summary":"Compact static, selectable and removable labels with one explicit interaction owner.","lifecycle":"experimental","deprecated":null,"docs":["https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md"],"attributes":[{"name":"active","type":"boolean","default":"false","description":"Selected state of a checkbox tag.","values":[],"examples":[],"deprecated":null},{"name":"appearance","type":"string","default":"default","description":"Visual appearance, read from the neutral alpha ramp and separate from type: surface keeps a faint fill and a boundary, ghost keeps nothing until it is hovered. Only the neutral types take it, because a status tag carries its meaning in its colour.","values":["default","surface","ghost"],"examples":[],"deprecated":null},{"name":"aria-label","type":"string","default":"","description":"Optional accessible name override for a selectable tag.","values":[],"examples":[],"deprecated":null},{"name":"avatar-image-url","type":"string","default":"","description":"Avatar image URL; the visible text remains the accessible label.","values":[],"examples":[],"deprecated":null},{"name":"avatar-status","type":"string","default":"","description":"Reserved avatar status value for compatible templates.","values":[],"examples":[],"deprecated":null},{"name":"avatar-text","type":"string","default":"","description":"Avatar initials fallback.","values":[],"examples":[],"deprecated":null},{"name":"closable","type":"boolean","default":"false","description":"Show a separate remove action; icon, color and avatar tags enable it by default, a checkbox tag only when it is set.","values":[],"examples":[],"deprecated":null},{"name":"close-label","type":"string","default":"","description":"Accessible name of the remove action. Defaults to Remove, or Удалить on a Russian page.","values":[],"examples":[],"deprecated":null},{"name":"color-class","type":"string","default":"","description":"Framework semantic background utility for the color marker.","values":[],"examples":[],"deprecated":null},{"name":"count","type":"string","default":"","description":"Optional count shown with the default tag.","values":[],"examples":[],"deprecated":null},{"name":"disabled","type":"boolean","default":"false","description":"Disable interactive toggle and close actions.","values":[],"examples":[],"deprecated":null},{"name":"icon","type":"string","default":"","description":"Decorative Framework icon name.","values":[],"examples":[],"deprecated":null},{"name":"inline","type":"boolean","default":"false","description":"Sit on the text line of another control: no block padding, a flush label, and a remove button the height of the line. The host may publish --sf-tag--line.","values":[],"examples":[],"deprecated":null},{"name":"interactive","type":"boolean","default":"false","description":"Render the label as a button next to the remove action, for tags that open something (for example a filter chip menu); ignored for checkbox tags.","values":[],"examples":[],"deprecated":null},{"name":"kind","type":"string","default":"checkbox","description":"What the tag carries: a checkbox, an icon, a colour, an avatar, or nothing but its label. The compatibility input quantity is still accepted and means default.","values":["checkbox","icon","default","color","avatar"],"examples":[],"deprecated":null},{"name":"line","type":"string","default":"","description":"Takes the text line of this form size as an inline tag one size down, for a table cell, so the row keeps its control height. Overrides size and inline.","values":["1/2","1","2"],"examples":[],"deprecated":null},{"name":"root-class","type":"string","default":"","description":"Framework utility classes for the visible root.","values":[],"examples":[],"deprecated":null},{"name":"size","type":"string","default":"1/2","description":"Framework size token: sets the label text and the default spacing.","values":["1/3","1/2","1","2","3"],"examples":[],"deprecated":null},{"name":"spacing","type":"string","default":"normal","description":"Block padding of a free-standing tag, with the names the buttons use.","values":["compact","normal","comfortable","spacious"],"examples":[],"deprecated":null},{"name":"status","type":"string","default":"","description":"What the tag reports, in the shared status vocabulary. Leave it empty for a tag that reports nothing.","values":["info","success","warning","error"],"examples":[],"deprecated":null},{"name":"template","type":"string","default":"default","description":"Template name.","values":[],"examples":[],"deprecated":null},{"name":"text","type":"string","default":"","description":"Visible tag label.","values":[],"examples":[],"deprecated":null},{"name":"type","type":"string","default":"checkbox","description":"Legacy name that answered both questions from one list: a content word reaches kind, a status word reaches status. See contracts/public-api-axes.json.","values":["checkbox","icon","default","color","avatar","info","success","warning","error"],"examples":[],"deprecated":null}]} +], +"classes": [ +{"name":"block","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: block;","lifecycle":"released"}, +{"name":"col-gap-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"col-gap-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"col-gap-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"col-gap-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"col-gap-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"col-gap-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"col-gap-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"col-gap-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"col-gap-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"col-gap-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"col-gap-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"col-gap-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"content","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: contents;","lifecycle":"released"}, +{"name":"display-table","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table;","lifecycle":"released"}, +{"name":"flex","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: flex;","lifecycle":"released"}, +{"name":"flex-col","id":"utility.flex-direction","family":"flex-direction","breakpoint":null,"media":null,"declarations":"flex-direction: column;","lifecycle":"released"}, +{"name":"flex-col-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":null,"media":null,"declarations":"flex-direction: column-reverse;","lifecycle":"released"}, +{"name":"flex-row","id":"utility.flex-direction","family":"flex-direction","breakpoint":null,"media":null,"declarations":"flex-direction: row;","lifecycle":"released"}, +{"name":"flex-row-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":null,"media":null,"declarations":"flex-direction: row-reverse;","lifecycle":"released"}, +{"name":"flow-root","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: flow-root;","lifecycle":"released"}, +{"name":"g-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"g-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"g-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"g-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"g-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"g-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"g-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"g-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"g-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"g-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"g-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"g-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"g-x-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"g-x-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"g-x-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"g-x-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"g-x-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"g-x-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"g-x-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"g-x-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"g-x-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"g-x-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"g-x-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"g-x-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"g-y-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"g-y-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"g-y-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"g-y-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"g-y-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"g-y-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"g-y-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"g-y-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"g-y-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"g-y-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"g-y-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"g-y-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"gap-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"gap-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"gap-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"gap-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"gap-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"gap-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"gap-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"gap-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"gap-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"gap-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"gap-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"gap-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"gap-x-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"gap-x-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"gap-x-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"gap-x-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"gap-x-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"gap-x-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"gap-x-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"gap-x-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"gap-x-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"gap-x-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"gap-x-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"gap-x-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"gap-y-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"gap-y-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"gap-y-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"gap-y-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"gap-y-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"gap-y-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"gap-y-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"gap-y-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"gap-y-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"gap-y-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"gap-y-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"gap-y-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"grid","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: grid;","lifecycle":"released"}, +{"name":"hidden","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: none;","lifecycle":"released"}, +{"name":"inline","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: inline;","lifecycle":"released"}, +{"name":"inline-block","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: inline-block;","lifecycle":"released"}, +{"name":"inline-flex","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: inline-flex;","lifecycle":"released"}, +{"name":"inline-grid","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: inline-grid;","lifecycle":"released"}, +{"name":"inline-table","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: inline-table;","lifecycle":"released"}, +{"name":"lg:block","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: block;","lifecycle":"released"}, +{"name":"lg:col-gap-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:col-gap-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:col-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:col-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:col-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:col-gap-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:col-gap-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:col-gap-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:col-gap-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:col-gap-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:col-gap-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:col-gap-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:content","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: contents;","lifecycle":"released"}, +{"name":"lg:display-table","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"lg:flex","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: flex;","lifecycle":"released"}, +{"name":"lg:flex-col","id":"utility.flex-direction","family":"flex-direction","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"flex-direction: column;","lifecycle":"released"}, +{"name":"lg:flex-col-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"flex-direction: column-reverse;","lifecycle":"released"}, +{"name":"lg:flex-row","id":"utility.flex-direction","family":"flex-direction","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"flex-direction: row;","lifecycle":"released"}, +{"name":"lg:flex-row-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"flex-direction: row-reverse;","lifecycle":"released"}, +{"name":"lg:flow-root","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: flow-root;","lifecycle":"released"}, +{"name":"lg:g-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:g-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:g-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:g-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:g-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:g-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:g-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:g-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:g-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:g-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:g-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:g-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:g-x-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:g-x-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:g-x-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:g-x-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:g-x-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:g-x-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:g-x-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:g-x-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:g-x-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:g-x-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:g-x-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:g-x-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:g-y-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:g-y-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:g-y-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:g-y-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:g-y-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:g-y-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:g-y-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:g-y-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:g-y-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:g-y-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:g-y-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:g-y-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:gap-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:gap-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:gap-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:gap-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:gap-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:gap-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:gap-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:gap-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:gap-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:gap-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:gap-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:gap-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:gap-x-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:gap-x-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:gap-x-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:gap-x-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:gap-x-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:gap-x-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:gap-x-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:gap-x-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:gap-x-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:gap-x-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:gap-x-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:gap-x-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:gap-y-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:gap-y-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:gap-y-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:gap-y-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:gap-y-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:gap-y-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:gap-y-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:gap-y-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:gap-y-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:gap-y-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:gap-y-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:gap-y-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:grid","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: grid;","lifecycle":"released"}, +{"name":"lg:hidden","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: none;","lifecycle":"released"}, +{"name":"lg:inline","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: inline;","lifecycle":"released"}, +{"name":"lg:inline-block","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: inline-block;","lifecycle":"released"}, +{"name":"lg:inline-flex","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: inline-flex;","lifecycle":"released"}, +{"name":"lg:inline-grid","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: inline-grid;","lifecycle":"released"}, +{"name":"lg:inline-table","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: inline-table;","lifecycle":"released"}, +{"name":"lg:list-item","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: list-item;","lifecycle":"released"}, +{"name":"lg:overflow-auto","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow: auto;","lifecycle":"released"}, +{"name":"lg:overflow-hidden","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow: hidden;","lifecycle":"released"}, +{"name":"lg:overflow-scroll","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow: scroll;","lifecycle":"released"}, +{"name":"lg:overflow-visible","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow: visible;","lifecycle":"released"}, +{"name":"lg:overflow-x-auto","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-x: auto;","lifecycle":"released"}, +{"name":"lg:overflow-x-hidden","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-x: hidden;","lifecycle":"released"}, +{"name":"lg:overflow-x-scroll","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-x: scroll;","lifecycle":"released"}, +{"name":"lg:overflow-x-visible","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-x: visible;","lifecycle":"released"}, +{"name":"lg:overflow-y-auto","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-y: auto;","lifecycle":"released"}, +{"name":"lg:overflow-y-hidden","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-y: hidden;","lifecycle":"released"}, +{"name":"lg:overflow-y-scroll","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-y: scroll;","lifecycle":"released"}, +{"name":"lg:overflow-y-visible","id":"utility.overflow","family":"overflow","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"overflow-y: visible;","lifecycle":"released"}, +{"name":"lg:row-gap-0","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"lg:row-gap-1","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"lg:row-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"lg:row-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"lg:row-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"lg:row-gap-2","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"lg:row-gap-3","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"lg:row-gap-4","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"lg:row-gap-5","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"lg:row-gap-6","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"lg:row-gap-7","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"lg:row-gap-8","id":"utility.gap","family":"gap","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"lg:table","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"lg:table-caption","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-caption;","lifecycle":"released"}, +{"name":"lg:table-cell","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-cell;","lifecycle":"released"}, +{"name":"lg:table-column","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-column;","lifecycle":"released"}, +{"name":"lg:table-column-group","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-column-group;","lifecycle":"released"}, +{"name":"lg:table-footer-group","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-footer-group;","lifecycle":"released"}, +{"name":"lg:table-header-group","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-header-group;","lifecycle":"released"}, +{"name":"lg:table-row","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-row;","lifecycle":"released"}, +{"name":"lg:table-row-group","id":"utility.display","family":"display","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"display: table-row-group;","lifecycle":"released"}, +{"name":"lg:text-center","id":"utility.text-align","family":"text-align","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"text-align: center;","lifecycle":"released"}, +{"name":"lg:text-end","id":"utility.text-align","family":"text-align","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"text-align: right; text-align: left; text-align: end;","lifecycle":"released"}, +{"name":"lg:text-justify","id":"utility.text-align","family":"text-align","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"text-align: justify;","lifecycle":"released"}, +{"name":"lg:text-start","id":"utility.text-align","family":"text-align","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"text-align: left; text-align: right; text-align: start;","lifecycle":"released"}, +{"name":"lg:w-0","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 0;","lifecycle":"released"}, +{"name":"lg:w-1/1","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"lg:w-1/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 8.333333%;","lifecycle":"released"}, +{"name":"lg:w-1/2","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"lg:w-1/3","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"lg:w-1/4","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"lg:w-1/5","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 20%;","lifecycle":"released"}, +{"name":"lg:w-1/6","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"lg:w-10/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"lg:w-11/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 91.666667%;","lifecycle":"released"}, +{"name":"lg:w-2/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"lg:w-2/3","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"lg:w-2/4","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"lg:w-2/5","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 40%;","lifecycle":"released"}, +{"name":"lg:w-2/6","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"lg:w-3/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"lg:w-3/4","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"lg:w-3/5","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 60%;","lifecycle":"released"}, +{"name":"lg:w-3/6","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"lg:w-4/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"lg:w-4/5","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 80%;","lifecycle":"released"}, +{"name":"lg:w-4/6","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"lg:w-5/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 41.666667%;","lifecycle":"released"}, +{"name":"lg:w-5/6","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"lg:w-6/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"lg:w-7/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 58.333333%;","lifecycle":"released"}, +{"name":"lg:w-8/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"lg:w-9/12","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"lg:w-auto","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: auto;","lifecycle":"released"}, +{"name":"lg:w-fit","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;","lifecycle":"released"}, +{"name":"lg:w-full","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"lg:w-max","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: -webkit-max-content; width: -moz-max-content; width: max-content;","lifecycle":"released"}, +{"name":"lg:w-min","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: -webkit-min-content; width: -moz-min-content; width: min-content;","lifecycle":"released"}, +{"name":"lg:w-px","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 1px;","lifecycle":"released"}, +{"name":"lg:w-screen","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: 100vw;","lifecycle":"released"}, +{"name":"lg:w-screen-dynamic","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: var(--sf-viewport-width-dynamic);","lifecycle":"released"}, +{"name":"lg:w-screen-large","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: var(--sf-viewport-width-large);","lifecycle":"released"}, +{"name":"lg:w-screen-small","id":"utility.width","family":"width","breakpoint":"lg","media":"(min-width: 60rem)","declarations":"width: var(--sf-viewport-width-small);","lifecycle":"released"}, +{"name":"list-item","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: list-item;","lifecycle":"released"}, +{"name":"md:block","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: block;","lifecycle":"released"}, +{"name":"md:col-gap-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:col-gap-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:col-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:col-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:col-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:col-gap-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:col-gap-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:col-gap-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:col-gap-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:col-gap-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:col-gap-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:col-gap-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:content","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: contents;","lifecycle":"released"}, +{"name":"md:display-table","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"md:flex","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: flex;","lifecycle":"released"}, +{"name":"md:flex-col","id":"utility.flex-direction","family":"flex-direction","breakpoint":"md","media":"(min-width: 44rem)","declarations":"flex-direction: column;","lifecycle":"released"}, +{"name":"md:flex-col-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"md","media":"(min-width: 44rem)","declarations":"flex-direction: column-reverse;","lifecycle":"released"}, +{"name":"md:flex-row","id":"utility.flex-direction","family":"flex-direction","breakpoint":"md","media":"(min-width: 44rem)","declarations":"flex-direction: row;","lifecycle":"released"}, +{"name":"md:flex-row-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"md","media":"(min-width: 44rem)","declarations":"flex-direction: row-reverse;","lifecycle":"released"}, +{"name":"md:flow-root","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: flow-root;","lifecycle":"released"}, +{"name":"md:g-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:g-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:g-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:g-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:g-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:g-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:g-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:g-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:g-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:g-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:g-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:g-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:g-x-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:g-x-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:g-x-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:g-x-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:g-x-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:g-x-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:g-x-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:g-x-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:g-x-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:g-x-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:g-x-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:g-x-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:g-y-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:g-y-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:g-y-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:g-y-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:g-y-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:g-y-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:g-y-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:g-y-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:g-y-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:g-y-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:g-y-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:g-y-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:gap-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:gap-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:gap-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:gap-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:gap-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:gap-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:gap-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:gap-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:gap-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:gap-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:gap-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:gap-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:gap-x-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:gap-x-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:gap-x-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:gap-x-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:gap-x-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:gap-x-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:gap-x-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:gap-x-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:gap-x-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:gap-x-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:gap-x-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:gap-x-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:gap-y-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:gap-y-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:gap-y-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:gap-y-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:gap-y-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:gap-y-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:gap-y-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:gap-y-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:gap-y-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:gap-y-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:gap-y-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:gap-y-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:grid","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: grid;","lifecycle":"released"}, +{"name":"md:hidden","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: none;","lifecycle":"released"}, +{"name":"md:inline","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: inline;","lifecycle":"released"}, +{"name":"md:inline-block","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: inline-block;","lifecycle":"released"}, +{"name":"md:inline-flex","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: inline-flex;","lifecycle":"released"}, +{"name":"md:inline-grid","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: inline-grid;","lifecycle":"released"}, +{"name":"md:inline-table","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: inline-table;","lifecycle":"released"}, +{"name":"md:list-item","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: list-item;","lifecycle":"released"}, +{"name":"md:overflow-auto","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow: auto;","lifecycle":"released"}, +{"name":"md:overflow-hidden","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow: hidden;","lifecycle":"released"}, +{"name":"md:overflow-scroll","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow: scroll;","lifecycle":"released"}, +{"name":"md:overflow-visible","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow: visible;","lifecycle":"released"}, +{"name":"md:overflow-x-auto","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-x: auto;","lifecycle":"released"}, +{"name":"md:overflow-x-hidden","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-x: hidden;","lifecycle":"released"}, +{"name":"md:overflow-x-scroll","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-x: scroll;","lifecycle":"released"}, +{"name":"md:overflow-x-visible","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-x: visible;","lifecycle":"released"}, +{"name":"md:overflow-y-auto","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-y: auto;","lifecycle":"released"}, +{"name":"md:overflow-y-hidden","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-y: hidden;","lifecycle":"released"}, +{"name":"md:overflow-y-scroll","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-y: scroll;","lifecycle":"released"}, +{"name":"md:overflow-y-visible","id":"utility.overflow","family":"overflow","breakpoint":"md","media":"(min-width: 44rem)","declarations":"overflow-y: visible;","lifecycle":"released"}, +{"name":"md:row-gap-0","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"md:row-gap-1","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"md:row-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"md:row-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"md:row-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"md:row-gap-2","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"md:row-gap-3","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"md:row-gap-4","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"md:row-gap-5","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"md:row-gap-6","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"md:row-gap-7","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"md:row-gap-8","id":"utility.gap","family":"gap","breakpoint":"md","media":"(min-width: 44rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"md:table","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"md:table-caption","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-caption;","lifecycle":"released"}, +{"name":"md:table-cell","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-cell;","lifecycle":"released"}, +{"name":"md:table-column","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-column;","lifecycle":"released"}, +{"name":"md:table-column-group","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-column-group;","lifecycle":"released"}, +{"name":"md:table-footer-group","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-footer-group;","lifecycle":"released"}, +{"name":"md:table-header-group","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-header-group;","lifecycle":"released"}, +{"name":"md:table-row","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-row;","lifecycle":"released"}, +{"name":"md:table-row-group","id":"utility.display","family":"display","breakpoint":"md","media":"(min-width: 44rem)","declarations":"display: table-row-group;","lifecycle":"released"}, +{"name":"md:text-center","id":"utility.text-align","family":"text-align","breakpoint":"md","media":"(min-width: 44rem)","declarations":"text-align: center;","lifecycle":"released"}, +{"name":"md:text-end","id":"utility.text-align","family":"text-align","breakpoint":"md","media":"(min-width: 44rem)","declarations":"text-align: right; text-align: left; text-align: end;","lifecycle":"released"}, +{"name":"md:text-justify","id":"utility.text-align","family":"text-align","breakpoint":"md","media":"(min-width: 44rem)","declarations":"text-align: justify;","lifecycle":"released"}, +{"name":"md:text-start","id":"utility.text-align","family":"text-align","breakpoint":"md","media":"(min-width: 44rem)","declarations":"text-align: left; text-align: right; text-align: start;","lifecycle":"released"}, +{"name":"md:w-0","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 0;","lifecycle":"released"}, +{"name":"md:w-1/1","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"md:w-1/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 8.333333%;","lifecycle":"released"}, +{"name":"md:w-1/2","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"md:w-1/3","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"md:w-1/4","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"md:w-1/5","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 20%;","lifecycle":"released"}, +{"name":"md:w-1/6","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"md:w-10/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"md:w-11/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 91.666667%;","lifecycle":"released"}, +{"name":"md:w-2/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"md:w-2/3","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"md:w-2/4","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"md:w-2/5","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 40%;","lifecycle":"released"}, +{"name":"md:w-2/6","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"md:w-3/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"md:w-3/4","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"md:w-3/5","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 60%;","lifecycle":"released"}, +{"name":"md:w-3/6","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"md:w-4/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"md:w-4/5","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 80%;","lifecycle":"released"}, +{"name":"md:w-4/6","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"md:w-5/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 41.666667%;","lifecycle":"released"}, +{"name":"md:w-5/6","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"md:w-6/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"md:w-7/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 58.333333%;","lifecycle":"released"}, +{"name":"md:w-8/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"md:w-9/12","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"md:w-auto","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: auto;","lifecycle":"released"}, +{"name":"md:w-fit","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;","lifecycle":"released"}, +{"name":"md:w-full","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"md:w-max","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: -webkit-max-content; width: -moz-max-content; width: max-content;","lifecycle":"released"}, +{"name":"md:w-min","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: -webkit-min-content; width: -moz-min-content; width: min-content;","lifecycle":"released"}, +{"name":"md:w-px","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 1px;","lifecycle":"released"}, +{"name":"md:w-screen","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: 100vw;","lifecycle":"released"}, +{"name":"md:w-screen-dynamic","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: var(--sf-viewport-width-dynamic);","lifecycle":"released"}, +{"name":"md:w-screen-large","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: var(--sf-viewport-width-large);","lifecycle":"released"}, +{"name":"md:w-screen-small","id":"utility.width","family":"width","breakpoint":"md","media":"(min-width: 44rem)","declarations":"width: var(--sf-viewport-width-small);","lifecycle":"released"}, +{"name":"overflow-auto","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow: auto;","lifecycle":"released"}, +{"name":"overflow-hidden","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow: hidden;","lifecycle":"released"}, +{"name":"overflow-scroll","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow: scroll;","lifecycle":"released"}, +{"name":"overflow-visible","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow: visible;","lifecycle":"released"}, +{"name":"overflow-x-auto","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-x: auto;","lifecycle":"released"}, +{"name":"overflow-x-hidden","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-x: hidden;","lifecycle":"released"}, +{"name":"overflow-x-scroll","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-x: scroll;","lifecycle":"released"}, +{"name":"overflow-x-visible","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-x: visible;","lifecycle":"released"}, +{"name":"overflow-y-auto","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-y: auto;","lifecycle":"released"}, +{"name":"overflow-y-hidden","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-y: hidden;","lifecycle":"released"}, +{"name":"overflow-y-scroll","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-y: scroll;","lifecycle":"released"}, +{"name":"overflow-y-visible","id":"utility.overflow","family":"overflow","breakpoint":null,"media":null,"declarations":"overflow-y: visible;","lifecycle":"released"}, +{"name":"pointer-event-auto","id":"utility.pointer-events","family":"pointer-events","breakpoint":null,"media":null,"declarations":"pointer-events: auto;","lifecycle":"released"}, +{"name":"pointer-event-none","id":"utility.pointer-events","family":"pointer-events","breakpoint":null,"media":null,"declarations":"pointer-events: none;","lifecycle":"released"}, +{"name":"row-gap-0","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"row-gap-1","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"row-gap-1/2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"row-gap-1/3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"row-gap-1/4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"row-gap-2","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"row-gap-3","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"row-gap-4","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"row-gap-5","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"row-gap-6","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"row-gap-7","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"row-gap-8","id":"utility.gap","family":"gap","breakpoint":null,"media":null,"declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:block","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: block;","lifecycle":"released"}, +{"name":"sm:col-gap-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:col-gap-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:col-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:col-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:col-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:col-gap-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:col-gap-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:col-gap-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:col-gap-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:col-gap-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:col-gap-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:col-gap-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:content","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: contents;","lifecycle":"released"}, +{"name":"sm:display-table","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"sm:flex","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: flex;","lifecycle":"released"}, +{"name":"sm:flex-col","id":"utility.flex-direction","family":"flex-direction","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"flex-direction: column;","lifecycle":"released"}, +{"name":"sm:flex-col-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"flex-direction: column-reverse;","lifecycle":"released"}, +{"name":"sm:flex-row","id":"utility.flex-direction","family":"flex-direction","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"flex-direction: row;","lifecycle":"released"}, +{"name":"sm:flex-row-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"flex-direction: row-reverse;","lifecycle":"released"}, +{"name":"sm:flow-root","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: flow-root;","lifecycle":"released"}, +{"name":"sm:g-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:g-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:g-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:g-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:g-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:g-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:g-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:g-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:g-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:g-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:g-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:g-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:g-x-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:g-x-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:g-x-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:g-x-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:g-x-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:g-x-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:g-x-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:g-x-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:g-x-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:g-x-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:g-x-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:g-x-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:g-y-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:g-y-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:g-y-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:g-y-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:g-y-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:g-y-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:g-y-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:g-y-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:g-y-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:g-y-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:g-y-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:g-y-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:gap-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:gap-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:gap-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:gap-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:gap-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:gap-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:gap-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:gap-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:gap-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:gap-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:gap-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:gap-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:gap-x-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:gap-x-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:gap-x-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:gap-x-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:gap-x-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:gap-x-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:gap-x-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:gap-x-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:gap-x-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:gap-x-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:gap-x-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:gap-x-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:gap-y-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:gap-y-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:gap-y-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:gap-y-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:gap-y-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:gap-y-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:gap-y-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:gap-y-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:gap-y-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:gap-y-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:gap-y-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:gap-y-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:grid","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: grid;","lifecycle":"released"}, +{"name":"sm:hidden","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: none;","lifecycle":"released"}, +{"name":"sm:inline","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: inline;","lifecycle":"released"}, +{"name":"sm:inline-block","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: inline-block;","lifecycle":"released"}, +{"name":"sm:inline-flex","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: inline-flex;","lifecycle":"released"}, +{"name":"sm:inline-grid","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: inline-grid;","lifecycle":"released"}, +{"name":"sm:inline-table","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: inline-table;","lifecycle":"released"}, +{"name":"sm:list-item","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: list-item;","lifecycle":"released"}, +{"name":"sm:overflow-auto","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow: auto;","lifecycle":"released"}, +{"name":"sm:overflow-hidden","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow: hidden;","lifecycle":"released"}, +{"name":"sm:overflow-scroll","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow: scroll;","lifecycle":"released"}, +{"name":"sm:overflow-visible","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow: visible;","lifecycle":"released"}, +{"name":"sm:overflow-x-auto","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-x: auto;","lifecycle":"released"}, +{"name":"sm:overflow-x-hidden","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-x: hidden;","lifecycle":"released"}, +{"name":"sm:overflow-x-scroll","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-x: scroll;","lifecycle":"released"}, +{"name":"sm:overflow-x-visible","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-x: visible;","lifecycle":"released"}, +{"name":"sm:overflow-y-auto","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-y: auto;","lifecycle":"released"}, +{"name":"sm:overflow-y-hidden","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-y: hidden;","lifecycle":"released"}, +{"name":"sm:overflow-y-scroll","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-y: scroll;","lifecycle":"released"}, +{"name":"sm:overflow-y-visible","id":"utility.overflow","family":"overflow","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"overflow-y: visible;","lifecycle":"released"}, +{"name":"sm:row-gap-0","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"sm:row-gap-1","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"sm:row-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"sm:row-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"sm:row-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"sm:row-gap-2","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"sm:row-gap-3","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"sm:row-gap-4","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"sm:row-gap-5","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"sm:row-gap-6","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"sm:row-gap-7","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"sm:row-gap-8","id":"utility.gap","family":"gap","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"sm:table","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"sm:table-caption","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-caption;","lifecycle":"released"}, +{"name":"sm:table-cell","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-cell;","lifecycle":"released"}, +{"name":"sm:table-column","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-column;","lifecycle":"released"}, +{"name":"sm:table-column-group","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-column-group;","lifecycle":"released"}, +{"name":"sm:table-footer-group","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-footer-group;","lifecycle":"released"}, +{"name":"sm:table-header-group","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-header-group;","lifecycle":"released"}, +{"name":"sm:table-row","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-row;","lifecycle":"released"}, +{"name":"sm:table-row-group","id":"utility.display","family":"display","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"display: table-row-group;","lifecycle":"released"}, +{"name":"sm:text-center","id":"utility.text-align","family":"text-align","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"text-align: center;","lifecycle":"released"}, +{"name":"sm:text-end","id":"utility.text-align","family":"text-align","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"text-align: right; text-align: left; text-align: end;","lifecycle":"released"}, +{"name":"sm:text-justify","id":"utility.text-align","family":"text-align","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"text-align: justify;","lifecycle":"released"}, +{"name":"sm:text-start","id":"utility.text-align","family":"text-align","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"text-align: left; text-align: right; text-align: start;","lifecycle":"released"}, +{"name":"sm:w-0","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 0;","lifecycle":"released"}, +{"name":"sm:w-1/1","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"sm:w-1/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 8.333333%;","lifecycle":"released"}, +{"name":"sm:w-1/2","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"sm:w-1/3","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"sm:w-1/4","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"sm:w-1/5","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 20%;","lifecycle":"released"}, +{"name":"sm:w-1/6","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"sm:w-10/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"sm:w-11/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 91.666667%;","lifecycle":"released"}, +{"name":"sm:w-2/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"sm:w-2/3","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"sm:w-2/4","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"sm:w-2/5","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 40%;","lifecycle":"released"}, +{"name":"sm:w-2/6","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"sm:w-3/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"sm:w-3/4","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"sm:w-3/5","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 60%;","lifecycle":"released"}, +{"name":"sm:w-3/6","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"sm:w-4/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"sm:w-4/5","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 80%;","lifecycle":"released"}, +{"name":"sm:w-4/6","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"sm:w-5/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 41.666667%;","lifecycle":"released"}, +{"name":"sm:w-5/6","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"sm:w-6/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"sm:w-7/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 58.333333%;","lifecycle":"released"}, +{"name":"sm:w-8/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"sm:w-9/12","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"sm:w-auto","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: auto;","lifecycle":"released"}, +{"name":"sm:w-fit","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;","lifecycle":"released"}, +{"name":"sm:w-full","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"sm:w-max","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: -webkit-max-content; width: -moz-max-content; width: max-content;","lifecycle":"released"}, +{"name":"sm:w-min","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: -webkit-min-content; width: -moz-min-content; width: min-content;","lifecycle":"released"}, +{"name":"sm:w-px","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 1px;","lifecycle":"released"}, +{"name":"sm:w-screen","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: 100vw;","lifecycle":"released"}, +{"name":"sm:w-screen-dynamic","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: var(--sf-viewport-width-dynamic);","lifecycle":"released"}, +{"name":"sm:w-screen-large","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: var(--sf-viewport-width-large);","lifecycle":"released"}, +{"name":"sm:w-screen-small","id":"utility.width","family":"width","breakpoint":"sm","media":"(min-width: 32rem)","declarations":"width: var(--sf-viewport-width-small);","lifecycle":"released"}, +{"name":"table","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table;","lifecycle":"released"}, +{"name":"table-caption","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-caption;","lifecycle":"released"}, +{"name":"table-cell","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-cell;","lifecycle":"released"}, +{"name":"table-column","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-column;","lifecycle":"released"}, +{"name":"table-column-group","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-column-group;","lifecycle":"released"}, +{"name":"table-footer-group","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-footer-group;","lifecycle":"released"}, +{"name":"table-header-group","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-header-group;","lifecycle":"released"}, +{"name":"table-row","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-row;","lifecycle":"released"}, +{"name":"table-row-group","id":"utility.display","family":"display","breakpoint":null,"media":null,"declarations":"display: table-row-group;","lifecycle":"released"}, +{"name":"text-center","id":"utility.text-align","family":"text-align","breakpoint":null,"media":null,"declarations":"text-align: center;","lifecycle":"released"}, +{"name":"text-end","id":"utility.text-align","family":"text-align","breakpoint":null,"media":null,"declarations":"text-align: right; text-align: left; text-align: end;","lifecycle":"released"}, +{"name":"text-justify","id":"utility.text-align","family":"text-align","breakpoint":null,"media":null,"declarations":"text-align: justify;","lifecycle":"released"}, +{"name":"text-start","id":"utility.text-align","family":"text-align","breakpoint":null,"media":null,"declarations":"text-align: left; text-align: right; text-align: start;","lifecycle":"released"}, +{"name":"w-0","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 0;","lifecycle":"released"}, +{"name":"w-1/1","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 100%;","lifecycle":"released"}, +{"name":"w-1/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 8.333333%;","lifecycle":"released"}, +{"name":"w-1/2","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 50%;","lifecycle":"released"}, +{"name":"w-1/3","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"w-1/4","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 25%;","lifecycle":"released"}, +{"name":"w-1/5","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 20%;","lifecycle":"released"}, +{"name":"w-1/6","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"w-10/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"w-11/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 91.666667%;","lifecycle":"released"}, +{"name":"w-2/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"w-2/3","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"w-2/4","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 50%;","lifecycle":"released"}, +{"name":"w-2/5","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 40%;","lifecycle":"released"}, +{"name":"w-2/6","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"w-3/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 25%;","lifecycle":"released"}, +{"name":"w-3/4","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 75%;","lifecycle":"released"}, +{"name":"w-3/5","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 60%;","lifecycle":"released"}, +{"name":"w-3/6","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 50%;","lifecycle":"released"}, +{"name":"w-4/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"w-4/5","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 80%;","lifecycle":"released"}, +{"name":"w-4/6","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"w-5/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 41.666667%;","lifecycle":"released"}, +{"name":"w-5/6","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"w-6/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 50%;","lifecycle":"released"}, +{"name":"w-7/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 58.333333%;","lifecycle":"released"}, +{"name":"w-8/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"w-9/12","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 75%;","lifecycle":"released"}, +{"name":"w-auto","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: auto;","lifecycle":"released"}, +{"name":"w-fit","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;","lifecycle":"released"}, +{"name":"w-full","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 100%;","lifecycle":"released"}, +{"name":"w-max","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: -webkit-max-content; width: -moz-max-content; width: max-content;","lifecycle":"released"}, +{"name":"w-min","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: -webkit-min-content; width: -moz-min-content; width: min-content;","lifecycle":"released"}, +{"name":"w-px","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 1px;","lifecycle":"released"}, +{"name":"w-screen","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: 100vw;","lifecycle":"released"}, +{"name":"w-screen-dynamic","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: var(--sf-viewport-width-dynamic);","lifecycle":"released"}, +{"name":"w-screen-large","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: var(--sf-viewport-width-large);","lifecycle":"released"}, +{"name":"w-screen-small","id":"utility.width","family":"width","breakpoint":null,"media":null,"declarations":"width: var(--sf-viewport-width-small);","lifecycle":"released"}, +{"name":"xl:block","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: block;","lifecycle":"released"}, +{"name":"xl:col-gap-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:col-gap-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:col-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:col-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:col-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:col-gap-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:col-gap-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:col-gap-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:col-gap-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:col-gap-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:col-gap-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:col-gap-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:content","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: contents;","lifecycle":"released"}, +{"name":"xl:display-table","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"xl:flex","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: flex;","lifecycle":"released"}, +{"name":"xl:flex-col","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"flex-direction: column;","lifecycle":"released"}, +{"name":"xl:flex-col-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"flex-direction: column-reverse;","lifecycle":"released"}, +{"name":"xl:flex-row","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"flex-direction: row;","lifecycle":"released"}, +{"name":"xl:flex-row-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"flex-direction: row-reverse;","lifecycle":"released"}, +{"name":"xl:flow-root","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: flow-root;","lifecycle":"released"}, +{"name":"xl:g-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:g-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:g-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:g-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:g-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:g-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:g-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:g-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:g-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:g-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:g-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:g-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:g-x-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:g-x-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:g-x-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:g-x-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:g-x-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:g-x-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:g-x-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:g-x-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:g-x-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:g-x-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:g-x-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:g-x-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:g-y-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:g-y-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:g-y-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:g-y-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:g-y-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:g-y-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:g-y-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:g-y-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:g-y-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:g-y-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:g-y-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:g-y-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:gap-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:gap-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:gap-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:gap-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:gap-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:gap-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:gap-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:gap-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:gap-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:gap-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:gap-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:gap-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:gap-x-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:gap-x-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:gap-x-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:gap-x-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:gap-x-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:gap-x-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:gap-x-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:gap-x-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:gap-x-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:gap-x-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:gap-x-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:gap-x-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:gap-y-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:gap-y-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:gap-y-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:gap-y-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:gap-y-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:gap-y-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:gap-y-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:gap-y-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:gap-y-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:gap-y-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:gap-y-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:gap-y-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:grid","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: grid;","lifecycle":"released"}, +{"name":"xl:hidden","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: none;","lifecycle":"released"}, +{"name":"xl:inline","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: inline;","lifecycle":"released"}, +{"name":"xl:inline-block","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: inline-block;","lifecycle":"released"}, +{"name":"xl:inline-flex","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: inline-flex;","lifecycle":"released"}, +{"name":"xl:inline-grid","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: inline-grid;","lifecycle":"released"}, +{"name":"xl:inline-table","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: inline-table;","lifecycle":"released"}, +{"name":"xl:list-item","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: list-item;","lifecycle":"released"}, +{"name":"xl:overflow-auto","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow: auto;","lifecycle":"released"}, +{"name":"xl:overflow-hidden","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow: hidden;","lifecycle":"released"}, +{"name":"xl:overflow-scroll","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow: scroll;","lifecycle":"released"}, +{"name":"xl:overflow-visible","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow: visible;","lifecycle":"released"}, +{"name":"xl:overflow-x-auto","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-x: auto;","lifecycle":"released"}, +{"name":"xl:overflow-x-hidden","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-x: hidden;","lifecycle":"released"}, +{"name":"xl:overflow-x-scroll","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-x: scroll;","lifecycle":"released"}, +{"name":"xl:overflow-x-visible","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-x: visible;","lifecycle":"released"}, +{"name":"xl:overflow-y-auto","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-y: auto;","lifecycle":"released"}, +{"name":"xl:overflow-y-hidden","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-y: hidden;","lifecycle":"released"}, +{"name":"xl:overflow-y-scroll","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-y: scroll;","lifecycle":"released"}, +{"name":"xl:overflow-y-visible","id":"utility.overflow","family":"overflow","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"overflow-y: visible;","lifecycle":"released"}, +{"name":"xl:row-gap-0","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xl:row-gap-1","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xl:row-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xl:row-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xl:row-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xl:row-gap-2","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xl:row-gap-3","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xl:row-gap-4","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xl:row-gap-5","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xl:row-gap-6","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xl:row-gap-7","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xl:row-gap-8","id":"utility.gap","family":"gap","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xl:table","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"xl:table-caption","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-caption;","lifecycle":"released"}, +{"name":"xl:table-cell","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-cell;","lifecycle":"released"}, +{"name":"xl:table-column","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-column;","lifecycle":"released"}, +{"name":"xl:table-column-group","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-column-group;","lifecycle":"released"}, +{"name":"xl:table-footer-group","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-footer-group;","lifecycle":"released"}, +{"name":"xl:table-header-group","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-header-group;","lifecycle":"released"}, +{"name":"xl:table-row","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-row;","lifecycle":"released"}, +{"name":"xl:table-row-group","id":"utility.display","family":"display","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"display: table-row-group;","lifecycle":"released"}, +{"name":"xl:text-center","id":"utility.text-align","family":"text-align","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"text-align: center;","lifecycle":"released"}, +{"name":"xl:text-end","id":"utility.text-align","family":"text-align","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"text-align: right; text-align: left; text-align: end;","lifecycle":"released"}, +{"name":"xl:text-justify","id":"utility.text-align","family":"text-align","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"text-align: justify;","lifecycle":"released"}, +{"name":"xl:text-start","id":"utility.text-align","family":"text-align","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"text-align: left; text-align: right; text-align: start;","lifecycle":"released"}, +{"name":"xl:w-0","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 0;","lifecycle":"released"}, +{"name":"xl:w-1/1","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"xl:w-1/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 8.333333%;","lifecycle":"released"}, +{"name":"xl:w-1/2","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xl:w-1/3","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"xl:w-1/4","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"xl:w-1/5","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 20%;","lifecycle":"released"}, +{"name":"xl:w-1/6","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"xl:w-10/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"xl:w-11/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 91.666667%;","lifecycle":"released"}, +{"name":"xl:w-2/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"xl:w-2/3","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"xl:w-2/4","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xl:w-2/5","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 40%;","lifecycle":"released"}, +{"name":"xl:w-2/6","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"xl:w-3/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"xl:w-3/4","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"xl:w-3/5","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 60%;","lifecycle":"released"}, +{"name":"xl:w-3/6","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xl:w-4/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"xl:w-4/5","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 80%;","lifecycle":"released"}, +{"name":"xl:w-4/6","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"xl:w-5/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 41.666667%;","lifecycle":"released"}, +{"name":"xl:w-5/6","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"xl:w-6/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xl:w-7/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 58.333333%;","lifecycle":"released"}, +{"name":"xl:w-8/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"xl:w-9/12","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"xl:w-auto","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: auto;","lifecycle":"released"}, +{"name":"xl:w-fit","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;","lifecycle":"released"}, +{"name":"xl:w-full","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"xl:w-max","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: -webkit-max-content; width: -moz-max-content; width: max-content;","lifecycle":"released"}, +{"name":"xl:w-min","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: -webkit-min-content; width: -moz-min-content; width: min-content;","lifecycle":"released"}, +{"name":"xl:w-px","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 1px;","lifecycle":"released"}, +{"name":"xl:w-screen","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: 100vw;","lifecycle":"released"}, +{"name":"xl:w-screen-dynamic","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: var(--sf-viewport-width-dynamic);","lifecycle":"released"}, +{"name":"xl:w-screen-large","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: var(--sf-viewport-width-large);","lifecycle":"released"}, +{"name":"xl:w-screen-small","id":"utility.width","family":"width","breakpoint":"xl","media":"(min-width: 72rem)","declarations":"width: var(--sf-viewport-width-small);","lifecycle":"released"}, +{"name":"xxl:block","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: block;","lifecycle":"released"}, +{"name":"xxl:col-gap-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:col-gap-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:col-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:col-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:col-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:col-gap-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:col-gap-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:col-gap-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:col-gap-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:col-gap-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:col-gap-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:col-gap-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:content","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: contents;","lifecycle":"released"}, +{"name":"xxl:display-table","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"xxl:flex","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: flex;","lifecycle":"released"}, +{"name":"xxl:flex-col","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"flex-direction: column;","lifecycle":"released"}, +{"name":"xxl:flex-col-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"flex-direction: column-reverse;","lifecycle":"released"}, +{"name":"xxl:flex-row","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"flex-direction: row;","lifecycle":"released"}, +{"name":"xxl:flex-row-reverse","id":"utility.flex-direction","family":"flex-direction","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"flex-direction: row-reverse;","lifecycle":"released"}, +{"name":"xxl:flow-root","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: flow-root;","lifecycle":"released"}, +{"name":"xxl:g-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:g-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:g-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:g-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:g-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:g-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:g-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:g-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:g-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:g-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:g-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:g-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:g-x-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:g-x-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:g-x-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:g-x-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:g-x-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:g-x-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:g-x-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:g-x-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:g-x-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:g-x-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:g-x-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:g-x-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:g-y-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:g-y-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:g-y-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:g-y-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:g-y-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:g-y-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:g-y-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:g-y-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:g-y-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:g-y-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:g-y-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:g-y-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:gap-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:gap-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:gap-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:gap-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:gap-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:gap-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:gap-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:gap-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:gap-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:gap-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:gap-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:gap-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:gap-x-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-0); -moz-column-gap: var(--sf-space-0); column-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:gap-x-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1); -moz-column-gap: var(--sf-space-1); column-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:gap-x-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/2); -moz-column-gap: var(--sf-space-1\\/2); column-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:gap-x-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/3); -moz-column-gap: var(--sf-space-1\\/3); column-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:gap-x-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-1\\/4); -moz-column-gap: var(--sf-space-1\\/4); column-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:gap-x-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-2); -moz-column-gap: var(--sf-space-2); column-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:gap-x-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-3); -moz-column-gap: var(--sf-space-3); column-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:gap-x-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-4); -moz-column-gap: var(--sf-space-4); column-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:gap-x-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-5); -moz-column-gap: var(--sf-space-5); column-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:gap-x-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-6); -moz-column-gap: var(--sf-space-6); column-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:gap-x-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-7); -moz-column-gap: var(--sf-space-7); column-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:gap-x-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"-webkit-column-gap: var(--sf-space-8); -moz-column-gap: var(--sf-space-8); column-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:gap-y-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:gap-y-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:gap-y-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:gap-y-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:gap-y-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:gap-y-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:gap-y-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:gap-y-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:gap-y-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:gap-y-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:gap-y-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:gap-y-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:grid","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: grid;","lifecycle":"released"}, +{"name":"xxl:hidden","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: none;","lifecycle":"released"}, +{"name":"xxl:inline","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: inline;","lifecycle":"released"}, +{"name":"xxl:inline-block","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: inline-block;","lifecycle":"released"}, +{"name":"xxl:inline-flex","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: inline-flex;","lifecycle":"released"}, +{"name":"xxl:inline-grid","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: inline-grid;","lifecycle":"released"}, +{"name":"xxl:inline-table","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: inline-table;","lifecycle":"released"}, +{"name":"xxl:list-item","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: list-item;","lifecycle":"released"}, +{"name":"xxl:overflow-auto","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow: auto;","lifecycle":"released"}, +{"name":"xxl:overflow-hidden","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow: hidden;","lifecycle":"released"}, +{"name":"xxl:overflow-scroll","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow: scroll;","lifecycle":"released"}, +{"name":"xxl:overflow-visible","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow: visible;","lifecycle":"released"}, +{"name":"xxl:overflow-x-auto","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-x: auto;","lifecycle":"released"}, +{"name":"xxl:overflow-x-hidden","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-x: hidden;","lifecycle":"released"}, +{"name":"xxl:overflow-x-scroll","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-x: scroll;","lifecycle":"released"}, +{"name":"xxl:overflow-x-visible","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-x: visible;","lifecycle":"released"}, +{"name":"xxl:overflow-y-auto","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-y: auto;","lifecycle":"released"}, +{"name":"xxl:overflow-y-hidden","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-y: hidden;","lifecycle":"released"}, +{"name":"xxl:overflow-y-scroll","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-y: scroll;","lifecycle":"released"}, +{"name":"xxl:overflow-y-visible","id":"utility.overflow","family":"overflow","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"overflow-y: visible;","lifecycle":"released"}, +{"name":"xxl:row-gap-0","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-0);","lifecycle":"released"}, +{"name":"xxl:row-gap-1","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1);","lifecycle":"released"}, +{"name":"xxl:row-gap-1/2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/2);","lifecycle":"released"}, +{"name":"xxl:row-gap-1/3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/3);","lifecycle":"released"}, +{"name":"xxl:row-gap-1/4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-1\\/4);","lifecycle":"released"}, +{"name":"xxl:row-gap-2","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-2);","lifecycle":"released"}, +{"name":"xxl:row-gap-3","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-3);","lifecycle":"released"}, +{"name":"xxl:row-gap-4","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-4);","lifecycle":"released"}, +{"name":"xxl:row-gap-5","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-5);","lifecycle":"released"}, +{"name":"xxl:row-gap-6","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-6);","lifecycle":"released"}, +{"name":"xxl:row-gap-7","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-7);","lifecycle":"released"}, +{"name":"xxl:row-gap-8","id":"utility.gap","family":"gap","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"row-gap: var(--sf-space-8);","lifecycle":"released"}, +{"name":"xxl:table","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table;","lifecycle":"released"}, +{"name":"xxl:table-caption","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-caption;","lifecycle":"released"}, +{"name":"xxl:table-cell","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-cell;","lifecycle":"released"}, +{"name":"xxl:table-column","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-column;","lifecycle":"released"}, +{"name":"xxl:table-column-group","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-column-group;","lifecycle":"released"}, +{"name":"xxl:table-footer-group","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-footer-group;","lifecycle":"released"}, +{"name":"xxl:table-header-group","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-header-group;","lifecycle":"released"}, +{"name":"xxl:table-row","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-row;","lifecycle":"released"}, +{"name":"xxl:table-row-group","id":"utility.display","family":"display","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"display: table-row-group;","lifecycle":"released"}, +{"name":"xxl:text-center","id":"utility.text-align","family":"text-align","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"text-align: center;","lifecycle":"released"}, +{"name":"xxl:text-end","id":"utility.text-align","family":"text-align","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"text-align: right; text-align: left; text-align: end;","lifecycle":"released"}, +{"name":"xxl:text-justify","id":"utility.text-align","family":"text-align","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"text-align: justify;","lifecycle":"released"}, +{"name":"xxl:text-start","id":"utility.text-align","family":"text-align","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"text-align: left; text-align: right; text-align: start;","lifecycle":"released"}, +{"name":"xxl:w-0","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 0;","lifecycle":"released"}, +{"name":"xxl:w-1/1","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"xxl:w-1/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 8.333333%;","lifecycle":"released"}, +{"name":"xxl:w-1/2","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xxl:w-1/3","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"xxl:w-1/4","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"xxl:w-1/5","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 20%;","lifecycle":"released"}, +{"name":"xxl:w-1/6","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"xxl:w-10/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"xxl:w-11/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 91.666667%;","lifecycle":"released"}, +{"name":"xxl:w-2/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 16.666667%;","lifecycle":"released"}, +{"name":"xxl:w-2/3","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"xxl:w-2/4","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xxl:w-2/5","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 40%;","lifecycle":"released"}, +{"name":"xxl:w-2/6","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"xxl:w-3/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 25%;","lifecycle":"released"}, +{"name":"xxl:w-3/4","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"xxl:w-3/5","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 60%;","lifecycle":"released"}, +{"name":"xxl:w-3/6","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xxl:w-4/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 33.333333%;","lifecycle":"released"}, +{"name":"xxl:w-4/5","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 80%;","lifecycle":"released"}, +{"name":"xxl:w-4/6","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"xxl:w-5/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 41.666667%;","lifecycle":"released"}, +{"name":"xxl:w-5/6","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 83.333333%;","lifecycle":"released"}, +{"name":"xxl:w-6/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 50%;","lifecycle":"released"}, +{"name":"xxl:w-7/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 58.333333%;","lifecycle":"released"}, +{"name":"xxl:w-8/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 66.666667%;","lifecycle":"released"}, +{"name":"xxl:w-9/12","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 75%;","lifecycle":"released"}, +{"name":"xxl:w-auto","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: auto;","lifecycle":"released"}, +{"name":"xxl:w-fit","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: -webkit-fit-content; width: -moz-fit-content; width: fit-content;","lifecycle":"released"}, +{"name":"xxl:w-full","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 100%;","lifecycle":"released"}, +{"name":"xxl:w-max","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: -webkit-max-content; width: -moz-max-content; width: max-content;","lifecycle":"released"}, +{"name":"xxl:w-min","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: -webkit-min-content; width: -moz-min-content; width: min-content;","lifecycle":"released"}, +{"name":"xxl:w-px","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 1px;","lifecycle":"released"}, +{"name":"xxl:w-screen","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: 100vw;","lifecycle":"released"}, +{"name":"xxl:w-screen-dynamic","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: var(--sf-viewport-width-dynamic);","lifecycle":"released"}, +{"name":"xxl:w-screen-large","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: var(--sf-viewport-width-large);","lifecycle":"released"}, +{"name":"xxl:w-screen-small","id":"utility.width","family":"width","breakpoint":"xxl","media":"(min-width: 80rem)","declarations":"width: var(--sf-viewport-width-small);","lifecycle":"released"} +], +"tokens": [ +{"name":"--sf-0","group":"other","source":"core","component":null,"summary":null,"value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a0","group":"primitive","source":"core","component":null,"summary":null,"value":"0rem","light":"0rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a1","group":"primitive","source":"core","component":null,"summary":null,"value":"0.0625rem","light":"0.0625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a2","group":"primitive","source":"core","component":null,"summary":null,"value":"0.125rem","light":"0.125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a3","group":"primitive","source":"core","component":null,"summary":null,"value":"0.1875rem","light":"0.1875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a4","group":"primitive","source":"core","component":null,"summary":null,"value":"0.25rem","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a5","group":"primitive","source":"core","component":null,"summary":null,"value":"0.3125rem","light":"0.3125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a6","group":"primitive","source":"core","component":null,"summary":null,"value":"0.375rem","light":"0.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a7","group":"primitive","source":"core","component":null,"summary":null,"value":"0.4375rem","light":"0.4375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a8","group":"primitive","source":"core","component":null,"summary":null,"value":"0.5rem","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-a9","group":"primitive","source":"core","component":null,"summary":null,"value":"0.5625rem","light":"0.5625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-accent--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-alpha-12","group":"opacity","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 12%)","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 12%)","dark":"color-mix(in srgb, rgba(255,255,255,0), #ffffff 12%)","desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-alpha-16","group":"opacity","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 16%)","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 16%)","dark":"color-mix(in srgb, rgba(255,255,255,0), #ffffff 16%)","desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-alpha-4","group":"opacity","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 4%)","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 4%)","dark":"color-mix(in srgb, rgba(255,255,255,0), #ffffff 4%)","desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-alpha-8","group":"opacity","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-alpha-base) 8%)","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 8%)","dark":"color-mix(in srgb, rgba(255,255,255,0), #ffffff 8%)","desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-alpha-base","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-black), var(--sf-white))","light":"#000000","dark":"#ffffff","desktop":null,"color":[0,0,0,1],"darkColor":[1,1,1,1],"since":null}, +{"name":"--sf-animation","group":"motion","source":"core","component":null,"summary":null,"value":"cubic-bezier(.25, .8, .25, 1)","light":"cubic-bezier(.25, .8, .25, 1)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-auto","group":"other","source":"core","component":null,"summary":null,"value":"auto","light":"auto","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-avatar-background-color","group":"component","source":"component","component":".sf-avatar","summary":"The fill behind the initials or the placeholder; an image covers it.","value":"transparent","light":"transparent","dark":null,"desktop":null,"color":[0,0,0,0],"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-avatar-border-color","group":"component","source":"component","component":".sf-avatar","summary":"The border colour at rest; hover keeps its own.","value":"transparent","light":"transparent","dark":null,"desktop":null,"color":[0,0,0,0],"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-avatar-border-width","group":"component","source":"component","component":".sf-avatar","summary":"The border width on every side.","value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-avatar-color","group":"component","source":"component","component":".sf-avatar","summary":"The colour of the initials and the placeholder icon.","value":"var(--sf-on-surface-variant)","light":"#5d5e63","dark":"#909095","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.5647,0.5647,0.5843,1],"since":"2026-10-18"}, +{"name":"--sf-avatar-radius","group":"component","source":"component","component":".sf-avatar","summary":"The corner radius, for the circle and the square shape alike.","value":"var(--sf-radius-circle)","light":"1000px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-b0","group":"primitive","source":"core","component":null,"summary":null,"value":"0.625rem","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b1","group":"primitive","source":"core","component":null,"summary":null,"value":"0.6875rem","light":"0.6875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b2","group":"primitive","source":"core","component":null,"summary":null,"value":"0.75rem","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b3","group":"primitive","source":"core","component":null,"summary":null,"value":"0.8125rem","light":"0.8125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b4","group":"primitive","source":"core","component":null,"summary":null,"value":"0.875rem","light":"0.875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b5","group":"primitive","source":"core","component":null,"summary":null,"value":"0.9375rem","light":"0.9375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b6","group":"primitive","source":"core","component":null,"summary":null,"value":"1rem","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b7","group":"primitive","source":"core","component":null,"summary":null,"value":"1.0625rem","light":"1.0625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b8","group":"primitive","source":"core","component":null,"summary":null,"value":"1.125rem","light":"1.125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-b9","group":"primitive","source":"core","component":null,"summary":null,"value":"1.1875rem","light":"1.1875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-bg--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-black","group":"color","source":"core","component":null,"summary":null,"value":"#000000","light":"#000000","dark":null,"desktop":null,"color":[0,0,0,1],"darkColor":null,"since":null}, +{"name":"--sf-black--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,0,0,0.12157)","light":"rgba(0,0,0,0.12157)","dark":null,"desktop":null,"color":[0,0,0,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-black--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,0,0,0.03922)","light":"rgba(0,0,0,0.03922)","dark":null,"desktop":null,"color":[0,0,0,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-black--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,0,0,0.07843)","light":"rgba(0,0,0,0.07843)","dark":null,"desktop":null,"color":[0,0,0,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-blur-large","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-blur-medium","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-blur-none","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a0)","light":"0rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-blur-small","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a2)","light":"0.125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-border--alfa","group":"border","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-border--color","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-transparent)","light":"rgba(255,255,255,0)","dark":null,"desktop":null,"color":[1,1,1,0],"darkColor":null,"since":null}, +{"name":"--sf-border--style","group":"border","source":"core","component":null,"summary":null,"value":"solid","light":"solid","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-border--width","group":"border","source":"core","component":null,"summary":null,"value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-button-background-color","group":"component","source":"component","component":".sf-button","summary":"The resting fill; hover, pressed and disabled keep their own.","value":"var(--sf-primary)","light":"#005bbe","dark":"#acc7ff","desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":[0.6745,0.7804,1,1],"since":"2026-10-13"}, +{"name":"--sf-button-border-color","group":"component","source":"component","component":".sf-button","summary":"The border colour at rest; seen with a border width.","value":"transparent","light":"transparent","dark":null,"desktop":null,"color":[0,0,0,0],"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-button-border-width","group":"component","source":"component","component":".sf-button","summary":"The border width on every side (outline appearance: var(--sf-px)).","value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-button-color","group":"component","source":"component","component":".sf-button","summary":"The label colour at rest.","value":"var(--sf-on-primary)","light":"#ffffff","dark":"#002f67","desktop":null,"color":[1,1,1,1],"darkColor":[0,0.1843,0.4039,1],"since":"2026-10-13"}, +{"name":"--sf-button-padding-block","group":"component","source":"component","component":".sf-button","summary":"Space above and below the content.","value":"var(--sf-ui-1--space-y-tightness-default)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-button-padding-inline","group":"component","source":"component","component":".sf-button","summary":"Space before and after the content.","value":"var(--sf-ui-1--space-x)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-button-radius","group":"component","source":"component","component":".sf-button","summary":"The corner radius.","value":"var(--sf-radius--ui)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-c0","group":"primitive","source":"core","component":null,"summary":null,"value":"1.25rem","light":"1.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c1","group":"primitive","source":"core","component":null,"summary":null,"value":"1.375rem","light":"1.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c2","group":"primitive","source":"core","component":null,"summary":null,"value":"1.5rem","light":"1.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c3","group":"primitive","source":"core","component":null,"summary":null,"value":"1.625rem","light":"1.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c4","group":"primitive","source":"core","component":null,"summary":null,"value":"1.75rem","light":"1.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c5","group":"primitive","source":"core","component":null,"summary":null,"value":"1.875rem","light":"1.875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c6","group":"primitive","source":"core","component":null,"summary":null,"value":"2rem","light":"2rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c7","group":"primitive","source":"core","component":null,"summary":null,"value":"2.125rem","light":"2.125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c8","group":"primitive","source":"core","component":null,"summary":null,"value":"2.25rem","light":"2.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-c9","group":"primitive","source":"core","component":null,"summary":null,"value":"2.375rem","light":"2.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-caret--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-checkbox-background-color","group":"component","source":"component","component":".sf-checkbox","summary":"The box's fill when unchecked; checked, error and disabled keep their own.","value":"var(--sf-surface-0)","light":"#ffffff","dark":"#0f1115","desktop":null,"color":[1,1,1,1],"darkColor":[0.0588,0.0667,0.0824,1],"since":"2026-10-18"}, +{"name":"--sf-checkbox-border-color","group":"component","source":"component","component":".sf-checkbox","summary":"The box's border when unchecked; checked, hover, error and disabled keep their own.","value":"var(--sf-outline)","light":"rgba(118,119,124,0.8)","dark":"rgba(144,144,149,0.63922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.8],"darkColor":[0.5647,0.5647,0.5843,0.6392],"since":"2026-10-18"}, +{"name":"--sf-checkbox-border-width","group":"component","source":"component","component":".sf-checkbox","summary":"The box's border width on every side.","value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-checkbox-gap","group":"component","source":"component","component":".sf-checkbox","summary":"Space between the box and the label.","value":"var(--sf-ui-1--text-space-x)","light":"0.375rem","dark":null,"desktop":"0.5rem","color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-checkbox-radius","group":"component","source":"component","component":".sf-checkbox","summary":"The box's corner radius.","value":"var(--sf-radius--ui)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-checkbox-size","group":"component","source":"component","component":".sf-checkbox","summary":"The box's width and height.","value":"var(--sf-text-height-1)","light":"1.25rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-code","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-24), var(--sf-tertiary-90--alfa-24))","light":"rgba(151,101,160,0.23922)","dark":"rgba(253,214,255,0.23922)","desktop":null,"color":[0.5922,0.3961,0.6275,0.2392],"darkColor":[0.9922,0.8392,1,0.2392],"since":null}, +{"name":"--sf-code--background","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-tertiary-container)","light":"rgba(151,101,160,0.12157)","dark":"rgba(151,101,160,0.23922)","desktop":null,"color":[0.5922,0.3961,0.6275,0.1216],"darkColor":[0.5922,0.3961,0.6275,0.2392],"since":null}, +{"name":"--sf-code--color","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-tertiary)","light":"#7c4c86","dark":"#ecb3f4","desktop":null,"color":[0.4863,0.298,0.5255,1],"darkColor":[0.9255,0.702,0.9569,1],"since":null}, +{"name":"--sf-code--font-family","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-mono)","light":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-code--radius","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-radius-1\\/3)","light":"0.125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-color--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-content--space-block","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-space-3)","light":"1rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-content--space-related","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-space-2)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-content--space-section","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-space-4)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-content--space-text","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-space-1)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-context-menu-background-color","group":"component","source":"component","component":".sf-context-menu","summary":"The menu's fill, its sticky footer included.","value":"var(--sf-elevation-3--surface)","light":"#ffffff","dark":"#3a3b40","desktop":null,"color":[1,1,1,1],"darkColor":[0.2275,0.2314,0.251,1],"since":"2026-10-18"}, +{"name":"--sf-context-menu-border-color","group":"component","source":"component","component":".sf-context-menu","summary":"The colour of the hairline around the menu.","value":"var(--sf-outline-variant)","light":"rgba(118,119,124,0.23922)","dark":"rgba(227,226,231,0.23922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.2392],"darkColor":[0.8902,0.8863,0.9059,0.2392],"since":"2026-10-18"}, +{"name":"--sf-context-menu-border-width","group":"component","source":"component","component":".sf-context-menu","summary":"The width of the line around the menu.","value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-context-menu-color","group":"component","source":"component","component":".sf-context-menu","summary":"The label colour of a row at rest; the current, danger and disabled rows keep their own.","value":"var(--sf-on-surface)","light":"#1a1b1f","dark":"#e3e2e7","desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":"2026-10-18"}, +{"name":"--sf-context-menu-gap","group":"component","source":"component","component":".sf-context-menu","summary":"Space between rows.","value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-context-menu-padding-block","group":"component","source":"component","component":".sf-context-menu","summary":"Space above the first row and below the last.","value":"var(--sf-space-1/4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-context-menu-padding-inline","group":"component","source":"component","component":".sf-context-menu","summary":"Space between the menu's edge and its rows, before and after; row content stays on its axis.","value":"var(--sf-space-1/4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-context-menu-radius","group":"component","source":"component","component":".sf-context-menu","summary":"The corner radius of the menu and its shadow.","value":"var(--sf-radius--surface)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-current","group":"other","source":"core","component":null,"summary":null,"value":"currentColor","light":"currentColor","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d0","group":"primitive","source":"core","component":null,"summary":null,"value":"2.5rem","light":"2.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d1","group":"primitive","source":"core","component":null,"summary":null,"value":"2.75rem","light":"2.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d2","group":"primitive","source":"core","component":null,"summary":null,"value":"3rem","light":"3rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d3","group":"primitive","source":"core","component":null,"summary":null,"value":"3.25rem","light":"3.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d4","group":"primitive","source":"core","component":null,"summary":null,"value":"3.5rem","light":"3.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d5","group":"primitive","source":"core","component":null,"summary":null,"value":"3.75rem","light":"3.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d6","group":"primitive","source":"core","component":null,"summary":null,"value":"4rem","light":"4rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d7","group":"primitive","source":"core","component":null,"summary":null,"value":"4.25rem","light":"4.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d8","group":"primitive","source":"core","component":null,"summary":null,"value":"4.5rem","light":"4.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-d9","group":"primitive","source":"core","component":null,"summary":null,"value":"4.75rem","light":"4.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-decoration--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-disable","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-12), var(--sf-neutral-90--alfa-12))","light":"rgba(118,119,124,0.12157)","dark":"rgba(227,226,231,0.12157)","desktop":null,"color":[0.4627,0.4667,0.4863,0.1216],"darkColor":[0.8902,0.8863,0.9059,0.1216],"since":null}, +{"name":"--sf-display--family","group":"typography","source":"core","component":null,"summary":null,"value":"\"Inter Variable\", \"Inter Fallback\", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, \"Segoe UI\", sans-serif","light":"\"Inter Variable\", \"Inter Fallback\", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, \"Segoe UI\", sans-serif","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-display--weight","group":"typography","source":"core","component":null,"summary":null,"value":"300","light":"300","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-1--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-12)","light":"3.5rem","dark":null,"desktop":"6rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-1--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-12)","light":"3rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-2--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-11)","light":"3.25rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-2--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-11)","light":"2.75rem","dark":null,"desktop":"4.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-3--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-10)","light":"3rem","dark":null,"desktop":"4.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-3--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-10)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-4--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-9)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-4--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-9)","light":"2.25rem","dark":null,"desktop":"3.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-5--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-8)","light":"2.25rem","dark":null,"desktop":"3.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-5--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-8)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-6--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-7)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-display-6--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-7)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-divider--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-drop-shadow--alfa","group":"elevation","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-duration-fast","group":"motion","source":"core","component":null,"summary":null,"value":"0.1S","light":"0.1S","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-duration-normal","group":"motion","source":"core","component":null,"summary":null,"value":"0.3S","light":"0.3S","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-duration-slow","group":"motion","source":"core","component":null,"summary":null,"value":"0.5S","light":"0.5S","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e0","group":"primitive","source":"core","component":null,"summary":null,"value":"5rem","light":"5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e1","group":"primitive","source":"core","component":null,"summary":null,"value":"5.5rem","light":"5.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e2","group":"primitive","source":"core","component":null,"summary":null,"value":"6rem","light":"6rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e3","group":"primitive","source":"core","component":null,"summary":null,"value":"6.5rem","light":"6.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e4","group":"primitive","source":"core","component":null,"summary":null,"value":"7rem","light":"7rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e5","group":"primitive","source":"core","component":null,"summary":null,"value":"7.5rem","light":"7.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e6","group":"primitive","source":"core","component":null,"summary":null,"value":"8rem","light":"8rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e7","group":"primitive","source":"core","component":null,"summary":null,"value":"8.5rem","light":"8.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e8","group":"primitive","source":"core","component":null,"summary":null,"value":"9rem","light":"9rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-e9","group":"primitive","source":"core","component":null,"summary":null,"value":"9.5rem","light":"9.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ease-enter","group":"motion","source":"core","component":null,"summary":null,"value":"cubic-bezier(.19, 1, .22, 1)","light":"cubic-bezier(.19, 1, .22, 1)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ease-exit","group":"motion","source":"core","component":null,"summary":null,"value":"cubic-bezier(.65, 0, .4, 1)","light":"cubic-bezier(.65, 0, .4, 1)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ease-move","group":"motion","source":"core","component":null,"summary":null,"value":"cubic-bezier(.65, 0, .35, 1)","light":"cubic-bezier(.65, 0, .35, 1)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-elevation-1--shadow","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-ui-shadow-1), var(--sf-shadow--rim)","light":"0 0.125rem 0.25rem 1px color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 1px 0.1875rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 0.125rem 0.125rem calc(-1 * 1px) color-mix(in srgb, rgba(255,255,255,0), #000000 24%), 0 0 0 0 transparent","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-elevation-1--surface","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-surface-0), var(--sf-surface-2))","light":"#ffffff","dark":"#24262a","desktop":null,"color":[1,1,1,1],"darkColor":[0.1412,0.149,0.1647,1],"since":null}, +{"name":"--sf-elevation-2--shadow","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-ui-shadow-2), var(--sf-shadow--rim)","light":"0 0.25rem 0.5rem 0.125rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 0.125rem 0.375rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 0.25rem 0.25rem calc(-1 * 0.125rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%), 0 0 0 0 transparent","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-elevation-2--surface","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-surface-0), var(--sf-surface-3))","light":"#ffffff","dark":"#2f3035","desktop":null,"color":[1,1,1,1],"darkColor":[0.1843,0.1882,0.2078,1],"since":null}, +{"name":"--sf-elevation-3--shadow","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-ui-shadow-3), var(--sf-shadow--rim)","light":"0 0.5rem 1rem 0.25rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 0.25rem 0.75rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 0.5rem 0.5rem calc(-1 * 0.25rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%), 0 0 0 0 transparent","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-elevation-3--surface","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-surface-0), var(--sf-surface-4))","light":"#ffffff","dark":"#3a3b40","desktop":null,"color":[1,1,1,1],"darkColor":[0.2275,0.2314,0.251,1],"since":null}, +{"name":"--sf-elevation-4--shadow","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-ui-shadow-4), var(--sf-shadow--rim)","light":"0 1rem 2rem 0.25rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 0.5rem 1.5rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 1rem 1rem calc(-1 * 0.5rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%), 0 0 0 0 transparent","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-elevation-4--surface","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-surface-0), var(--sf-surface-5))","light":"#ffffff","dark":"#45474b","desktop":null,"color":[1,1,1,1],"darkColor":[0.2706,0.2784,0.2941,1],"since":null}, +{"name":"--sf-elevation-5--shadow","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-ui-shadow-5), var(--sf-shadow--rim)","light":"0 2rem 4rem 0.5rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 1rem 3rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 2rem 2rem calc(-1 * 1rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%), 0 0 0 0 transparent","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-elevation-5--surface","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-surface-0), var(--sf-surface-5))","light":"#ffffff","dark":"#45474b","desktop":null,"color":[1,1,1,1],"darkColor":[0.2706,0.2784,0.2941,1],"since":null}, +{"name":"--sf-empty","group":"other","source":"core","component":null,"summary":null,"value":"","light":"","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-error","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-40), var(--sf-error-80))","light":"#bb1919","dark":"#ffb4ab","desktop":null,"color":[0.7333,0.098,0.098,1],"darkColor":[1,0.7059,0.6706,1],"since":null}, +{"name":"--sf-error-10","group":"color","source":"core","component":null,"summary":null,"value":"#410002","light":"#410002","dark":null,"desktop":null,"color":[0.2549,0,0.0078,1],"darkColor":null,"since":null}, +{"name":"--sf-error-15","group":"color","source":"core","component":null,"summary":null,"value":"#540003","light":"#540003","dark":null,"desktop":null,"color":[0.3294,0,0.0118,1],"darkColor":null,"since":null}, +{"name":"--sf-error-20","group":"color","source":"core","component":null,"summary":null,"value":"#690005","light":"#690005","dark":null,"desktop":null,"color":[0.4118,0,0.0196,1],"darkColor":null,"since":null}, +{"name":"--sf-error-25","group":"color","source":"core","component":null,"summary":null,"value":"#7e0007","light":"#7e0007","dark":null,"desktop":null,"color":[0.4941,0,0.0275,1],"darkColor":null,"since":null}, +{"name":"--sf-error-30","group":"color","source":"core","component":null,"summary":null,"value":"#93000a","light":"#93000a","dark":null,"desktop":null,"color":[0.5765,0,0.0392,1],"darkColor":null,"since":null}, +{"name":"--sf-error-35","group":"color","source":"core","component":null,"summary":null,"value":"#a9040e","light":"#a9040e","dark":null,"desktop":null,"color":[0.6627,0.0157,0.0549,1],"darkColor":null,"since":null}, +{"name":"--sf-error-40","group":"color","source":"core","component":null,"summary":null,"value":"#bb1919","light":"#bb1919","dark":null,"desktop":null,"color":[0.7333,0.098,0.098,1],"darkColor":null,"since":null}, +{"name":"--sf-error-5","group":"color","source":"core","component":null,"summary":null,"value":"#2d0001","light":"#2d0001","dark":null,"desktop":null,"color":[0.1765,0,0.0039,1],"darkColor":null,"since":null}, +{"name":"--sf-error-50","group":"color","source":"core","component":null,"summary":null,"value":"#df362f","light":"#df362f","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,1],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.12157)","light":"rgba(223,54,47,0.12157)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.16078)","light":"rgba(223,54,47,0.16078)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.2)","light":"rgba(223,54,47,0.2)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.2],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.23922)","light":"rgba(223,54,47,0.23922)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.27843)","light":"rgba(223,54,47,0.27843)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.32157)","light":"rgba(223,54,47,0.32157)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.03922)","light":"rgba(223,54,47,0.03922)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-error-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(223,54,47,0.07843)","light":"rgba(223,54,47,0.07843)","dark":null,"desktop":null,"color":[0.8745,0.2118,0.1843,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-error-60","group":"color","source":"core","component":null,"summary":null,"value":"#ff5449","light":"#ff5449","dark":null,"desktop":null,"color":[1,0.3294,0.2863,1],"darkColor":null,"since":null}, +{"name":"--sf-error-70","group":"color","source":"core","component":null,"summary":null,"value":"#ff897d","light":"#ff897d","dark":null,"desktop":null,"color":[1,0.5373,0.4902,1],"darkColor":null,"since":null}, +{"name":"--sf-error-80","group":"color","source":"core","component":null,"summary":null,"value":"#ffb4ab","light":"#ffb4ab","dark":null,"desktop":null,"color":[1,0.7059,0.6706,1],"darkColor":null,"since":null}, +{"name":"--sf-error-85","group":"color","source":"core","component":null,"summary":null,"value":"#ffc7c0","light":"#ffc7c0","dark":null,"desktop":null,"color":[1,0.7804,0.7529,1],"darkColor":null,"since":null}, +{"name":"--sf-error-90","group":"color","source":"core","component":null,"summary":null,"value":"#ffdad6","light":"#ffdad6","dark":null,"desktop":null,"color":[1,0.8549,0.8392,1],"darkColor":null,"since":null}, +{"name":"--sf-error-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,218,214,0.12157)","light":"rgba(255,218,214,0.12157)","dark":null,"desktop":null,"color":[1,0.8549,0.8392,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-error-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,218,214,0.23922)","light":"rgba(255,218,214,0.23922)","dark":null,"desktop":null,"color":[1,0.8549,0.8392,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-error-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,218,214,0.03922)","light":"rgba(255,218,214,0.03922)","dark":null,"desktop":null,"color":[1,0.8549,0.8392,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-error-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,218,214,0.07843)","light":"rgba(255,218,214,0.07843)","dark":null,"desktop":null,"color":[1,0.8549,0.8392,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-error-95","group":"color","source":"core","component":null,"summary":null,"value":"#ffedea","light":"#ffedea","dark":null,"desktop":null,"color":[1,0.9294,0.9176,1],"darkColor":null,"since":null}, +{"name":"--sf-error-98","group":"color","source":"core","component":null,"summary":null,"value":"#fff8f7","light":"#fff8f7","dark":null,"desktop":null,"color":[1,0.9725,0.9686,1],"darkColor":null,"since":null}, +{"name":"--sf-error-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-30), var(--sf-error-90))","light":"#93000a","dark":"#ffdad6","desktop":null,"color":[0.5765,0,0.0392,1],"darkColor":[1,0.8549,0.8392,1],"since":null}, +{"name":"--sf-error-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-12), var(--sf-error-50--alfa-24))","light":"rgba(223,54,47,0.12157)","dark":"rgba(223,54,47,0.23922)","desktop":null,"color":[0.8745,0.2118,0.1843,0.1216],"darkColor":[0.8745,0.2118,0.1843,0.2392],"since":null}, +{"name":"--sf-error-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-20), var(--sf-error-50--alfa-32))","light":"rgba(223,54,47,0.2)","dark":"rgba(223,54,47,0.32157)","desktop":null,"color":[0.8745,0.2118,0.1843,0.2],"darkColor":[0.8745,0.2118,0.1843,0.3216],"since":null}, +{"name":"--sf-error-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-16), var(--sf-error-50--alfa-28))","light":"rgba(223,54,47,0.16078)","dark":"rgba(223,54,47,0.27843)","desktop":null,"color":[0.8745,0.2118,0.1843,0.1608],"darkColor":[0.8745,0.2118,0.1843,0.2784],"since":null}, +{"name":"--sf-error-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-35), var(--sf-error-85))","light":"#a9040e","dark":"#ffc7c0","desktop":null,"color":[0.6627,0.0157,0.0549,1],"darkColor":[1,0.7804,0.7529,1],"since":null}, +{"name":"--sf-error-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-12), var(--sf-error-90--alfa-12))","light":"rgba(223,54,47,0.12157)","dark":"rgba(255,218,214,0.12157)","desktop":null,"color":[0.8745,0.2118,0.1843,0.1216],"darkColor":[1,0.8549,0.8392,0.1216],"since":null}, +{"name":"--sf-error-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-4), var(--sf-error-90--alfa-4))","light":"rgba(223,54,47,0.03922)","dark":"rgba(255,218,214,0.03922)","desktop":null,"color":[0.8745,0.2118,0.1843,0.0392],"darkColor":[1,0.8549,0.8392,0.0392],"since":null}, +{"name":"--sf-error-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-24), var(--sf-error-90--alfa-24))","light":"rgba(223,54,47,0.23922)","dark":"rgba(255,218,214,0.23922)","desktop":null,"color":[0.8745,0.2118,0.1843,0.2392],"darkColor":[1,0.8549,0.8392,0.2392],"since":null}, +{"name":"--sf-error-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50--alfa-8), var(--sf-error-90--alfa-8))","light":"rgba(223,54,47,0.07843)","dark":"rgba(255,218,214,0.07843)","desktop":null,"color":[0.8745,0.2118,0.1843,0.0784],"darkColor":[1,0.8549,0.8392,0.0784],"since":null}, +{"name":"--sf-f0","group":"primitive","source":"core","component":null,"summary":null,"value":"10rem","light":"10rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f1","group":"primitive","source":"core","component":null,"summary":null,"value":"11rem","light":"11rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f2","group":"primitive","source":"core","component":null,"summary":null,"value":"12rem","light":"12rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f3","group":"primitive","source":"core","component":null,"summary":null,"value":"13rem","light":"13rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f4","group":"primitive","source":"core","component":null,"summary":null,"value":"14rem","light":"14rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f5","group":"primitive","source":"core","component":null,"summary":null,"value":"15rem","light":"15rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f6","group":"primitive","source":"core","component":null,"summary":null,"value":"16rem","light":"16rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f7","group":"primitive","source":"core","component":null,"summary":null,"value":"17rem","light":"17rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f8","group":"primitive","source":"core","component":null,"summary":null,"value":"18rem","light":"18rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-f9","group":"primitive","source":"core","component":null,"summary":null,"value":"19rem","light":"19rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-active-1-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-active-1\\/2-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-active-1\\/3-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-active-2-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":"0.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-active-3-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-c1)","light":"1.375rem","dark":null,"desktop":"0.625rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-the-others-1-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-the-others-1\\/2-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"0.875rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-the-others-1\\/3-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":"0.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-the-others-2-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-c1)","light":"1.375rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-floating-the-others-3-space-y","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":"1.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-focus","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50), var(--sf-primary-90))","light":"#0073ed","dark":"#d7e2ff","desktop":null,"color":[0,0.451,0.9294,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-focus--color","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-focus)","light":"#0073ed","dark":"#d7e2ff","desktop":null,"color":[0,0.451,0.9294,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-focus--offset","group":"border","source":"core","component":null,"summary":null,"value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-focus--style","group":"border","source":"core","component":null,"summary":null,"value":"solid","light":"solid","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-focus--width","group":"border","source":"core","component":null,"summary":null,"value":"var(--sf-focus-outline-width)","light":"calc(1px * 2)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-focus-outline-width","group":"border","source":"core","component":null,"summary":null,"value":"calc(var(--sf-px) * 2)","light":"calc(1px * 2)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-font-weight-bold","group":"typography","source":"core","component":null,"summary":null,"value":"700","light":"700","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-font-weight-light","group":"typography","source":"core","component":null,"summary":null,"value":"300","light":"300","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-font-weight-medium","group":"typography","source":"core","component":null,"summary":null,"value":"500","light":"500","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-font-weight-regular","group":"typography","source":"core","component":null,"summary":null,"value":"400","light":"400","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g0","group":"primitive","source":"core","component":null,"summary":null,"value":"20rem","light":"20rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g1","group":"primitive","source":"core","component":null,"summary":null,"value":"22rem","light":"22rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g2","group":"primitive","source":"core","component":null,"summary":null,"value":"24rem","light":"24rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g3","group":"primitive","source":"core","component":null,"summary":null,"value":"26rem","light":"26rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g4","group":"primitive","source":"core","component":null,"summary":null,"value":"28rem","light":"28rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g5","group":"primitive","source":"core","component":null,"summary":null,"value":"30rem","light":"30rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g6","group":"primitive","source":"core","component":null,"summary":null,"value":"32rem","light":"32rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g7","group":"primitive","source":"core","component":null,"summary":null,"value":"34rem","light":"34rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g8","group":"primitive","source":"core","component":null,"summary":null,"value":"36rem","light":"36rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-g9","group":"primitive","source":"core","component":null,"summary":null,"value":"38rem","light":"38rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-gradient--alfa-1","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-gradient--alfa-2","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-gradient--alfa-3","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-gradient--angle","group":"other","source":"core","component":null,"summary":null,"value":"90deg","light":"90deg","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h0","group":"primitive","source":"core","component":null,"summary":null,"value":"40rem","light":"40rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h1","group":"primitive","source":"core","component":null,"summary":null,"value":"44rem","light":"44rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h2","group":"primitive","source":"core","component":null,"summary":null,"value":"48rem","light":"48rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h3","group":"primitive","source":"core","component":null,"summary":null,"value":"52rem","light":"52rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h4","group":"primitive","source":"core","component":null,"summary":null,"value":"56rem","light":"56rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h5","group":"primitive","source":"core","component":null,"summary":null,"value":"60rem","light":"60rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h6","group":"primitive","source":"core","component":null,"summary":null,"value":"64rem","light":"64rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h7","group":"primitive","source":"core","component":null,"summary":null,"value":"68rem","light":"68rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h8","group":"primitive","source":"core","component":null,"summary":null,"value":"72rem","light":"72rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-h9","group":"primitive","source":"core","component":null,"summary":null,"value":"76rem","light":"76rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--family","group":"typography","source":"core","component":null,"summary":null,"value":"\"Inter Variable\", \"Inter Fallback\", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, \"Segoe UI\", sans-serif","light":"\"Inter Variable\", \"Inter Fallback\", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, \"Segoe UI\", sans-serif","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--font-family","group":"typography","source":"core","component":null,"summary":null,"value":"inherit","light":"inherit","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--font-style","group":"typography","source":"core","component":null,"summary":null,"value":"normal","light":"normal","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--font-weight","group":"typography","source":"core","component":null,"summary":null,"value":"600","light":"600","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--margin","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-heading--space-top)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--space-bottom","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-content--space-text)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--space-top","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-content--space-section)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading--weight","group":"typography","source":"core","component":null,"summary":null,"value":"700","light":"700","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-1--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-6)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-1--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-6)","light":"1.5rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-2--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-5)","light":"1.625rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-2--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-5)","light":"1.375rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-3--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-4)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-3--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-4)","light":"1.25rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-4--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-3)","light":"1.25rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-4--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-3)","light":"1.125rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-5--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-2)","light":"1.125rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-5--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-2)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-6--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-1)","light":"1rem","dark":null,"desktop":"1.125rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-heading-6--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-i0","group":"primitive","source":"core","component":null,"summary":null,"value":"80rem","light":"80rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i1","group":"primitive","source":"core","component":null,"summary":null,"value":"88rem","light":"88rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i2","group":"primitive","source":"core","component":null,"summary":null,"value":"96rem","light":"96rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i3","group":"primitive","source":"core","component":null,"summary":null,"value":"104rem","light":"104rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i4","group":"primitive","source":"core","component":null,"summary":null,"value":"112rem","light":"112rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i5","group":"primitive","source":"core","component":null,"summary":null,"value":"120rem","light":"120rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i6","group":"primitive","source":"core","component":null,"summary":null,"value":"128rem","light":"128rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i7","group":"primitive","source":"core","component":null,"summary":null,"value":"136rem","light":"136rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i8","group":"primitive","source":"core","component":null,"summary":null,"value":"144rem","light":"144rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-i9","group":"primitive","source":"core","component":null,"summary":null,"value":"152rem","light":"152rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-button-background-color","group":"component","source":"component","component":".sf-icon-button","summary":"The resting fill; hover, pressed, focus and disabled keep their own.","value":"var(--sf-primary)","light":"#005bbe","dark":"#acc7ff","desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":[0.6745,0.7804,1,1],"since":"2026-10-18"}, +{"name":"--sf-icon-button-border-color","group":"component","source":"component","component":".sf-icon-button","summary":"The border colour at rest; seen with a border width.","value":"transparent","light":"transparent","dark":null,"desktop":null,"color":[0,0,0,0],"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-icon-button-border-width","group":"component","source":"component","component":".sf-icon-button","summary":"The border width on every side (outline and surface appearances: var(--sf-px)).","value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-icon-button-color","group":"component","source":"component","component":".sf-icon-button","summary":"The icon and close-mark colour at rest; disabled keeps its own.","value":"var(--sf-on-surface-variant)","light":"#5d5e63","dark":"#909095","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.5647,0.5647,0.5843,1],"since":"2026-10-18"}, +{"name":"--sf-icon-button-padding-block","group":"component","source":"component","component":".sf-icon-button","summary":"Space above and below the icon.","value":"var(--sf-ui-1--space-y-tightness-default)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-icon-button-padding-inline","group":"component","source":"component","component":".sf-icon-button","summary":"Space before and after the icon.","value":"var(--sf-ui-1--space-y-tightness-default)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-icon-button-radius","group":"component","source":"component","component":".sf-icon-button","summary":"The corner radius.","value":"var(--sf-radius--ui)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-icon-size-1","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-1\\/2","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-1\\/3","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-1\\/4","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-2","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-3","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-4","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-c4)","light":"1.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-5","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-6","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-c8)","light":"2.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-icon-size-7","group":"icon","source":"core","component":null,"summary":null,"value":"var(--sf-d0)","light":"2.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-info","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-40), var(--sf-info-80))","light":"#005bbe","dark":"#acc7ff","desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":[0.6745,0.7804,1,1],"since":null}, +{"name":"--sf-info-10","group":"color","source":"core","component":null,"summary":null,"value":"#001a40","light":"#001a40","dark":null,"desktop":null,"color":[0,0.102,0.251,1],"darkColor":null,"since":null}, +{"name":"--sf-info-15","group":"color","source":"core","component":null,"summary":null,"value":"#002453","light":"#002453","dark":null,"desktop":null,"color":[0,0.1412,0.3255,1],"darkColor":null,"since":null}, +{"name":"--sf-info-20","group":"color","source":"core","component":null,"summary":null,"value":"#002f67","light":"#002f67","dark":null,"desktop":null,"color":[0,0.1843,0.4039,1],"darkColor":null,"since":null}, +{"name":"--sf-info-25","group":"color","source":"core","component":null,"summary":null,"value":"#00397c","light":"#00397c","dark":null,"desktop":null,"color":[0,0.2235,0.4863,1],"darkColor":null,"since":null}, +{"name":"--sf-info-30","group":"color","source":"core","component":null,"summary":null,"value":"#004491","light":"#004491","dark":null,"desktop":null,"color":[0,0.2667,0.5686,1],"darkColor":null,"since":null}, +{"name":"--sf-info-35","group":"color","source":"core","component":null,"summary":null,"value":"#0050a7","light":"#0050a7","dark":null,"desktop":null,"color":[0,0.3137,0.6549,1],"darkColor":null,"since":null}, +{"name":"--sf-info-40","group":"color","source":"core","component":null,"summary":null,"value":"#005bbe","light":"#005bbe","dark":null,"desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":null,"since":null}, +{"name":"--sf-info-5","group":"color","source":"core","component":null,"summary":null,"value":"#00102c","light":"#00102c","dark":null,"desktop":null,"color":[0,0.0627,0.1725,1],"darkColor":null,"since":null}, +{"name":"--sf-info-50","group":"color","source":"core","component":null,"summary":null,"value":"#0073ed","light":"#0073ed","dark":null,"desktop":null,"color":[0,0.451,0.9294,1],"darkColor":null,"since":null}, +{"name":"--sf-info-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.12157)","light":"rgba(0,115,237,0.12157)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-info-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.16078)","light":"rgba(0,115,237,0.16078)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-info-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.2)","light":"rgba(0,115,237,0.2)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.2],"darkColor":null,"since":null}, +{"name":"--sf-info-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.23922)","light":"rgba(0,115,237,0.23922)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-info-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.27843)","light":"rgba(0,115,237,0.27843)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-info-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.32157)","light":"rgba(0,115,237,0.32157)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-info-60","group":"color","source":"core","component":null,"summary":null,"value":"#488fff","light":"#488fff","dark":null,"desktop":null,"color":[0.2824,0.5608,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-70","group":"color","source":"core","component":null,"summary":null,"value":"#7eabff","light":"#7eabff","dark":null,"desktop":null,"color":[0.4941,0.6706,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-80","group":"color","source":"core","component":null,"summary":null,"value":"#acc7ff","light":"#acc7ff","dark":null,"desktop":null,"color":[0.6745,0.7804,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-85","group":"color","source":"core","component":null,"summary":null,"value":"#c2d5ff","light":"#c2d5ff","dark":null,"desktop":null,"color":[0.7608,0.8353,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-90","group":"color","source":"core","component":null,"summary":null,"value":"#d7e2ff","light":"#d7e2ff","dark":null,"desktop":null,"color":[0.8431,0.8863,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-95","group":"color","source":"core","component":null,"summary":null,"value":"#edf0ff","light":"#edf0ff","dark":null,"desktop":null,"color":[0.9294,0.9412,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-98","group":"color","source":"core","component":null,"summary":null,"value":"#f9f9ff","light":"#f9f9ff","dark":null,"desktop":null,"color":[0.9765,0.9765,1,1],"darkColor":null,"since":null}, +{"name":"--sf-info-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-30), var(--sf-info-90))","light":"#004491","dark":"#d7e2ff","desktop":null,"color":[0,0.2667,0.5686,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-info-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-50--alfa-12), var(--sf-info-50--alfa-24))","light":"rgba(0,115,237,0.12157)","dark":"rgba(0,115,237,0.23922)","desktop":null,"color":[0,0.451,0.9294,0.1216],"darkColor":[0,0.451,0.9294,0.2392],"since":null}, +{"name":"--sf-info-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-50--alfa-20), var(--sf-info-50--alfa-32))","light":"rgba(0,115,237,0.2)","dark":"rgba(0,115,237,0.32157)","desktop":null,"color":[0,0.451,0.9294,0.2],"darkColor":[0,0.451,0.9294,0.3216],"since":null}, +{"name":"--sf-info-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-50--alfa-16), var(--sf-info-50--alfa-28))","light":"rgba(0,115,237,0.16078)","dark":"rgba(0,115,237,0.27843)","desktop":null,"color":[0,0.451,0.9294,0.1608],"darkColor":[0,0.451,0.9294,0.2784],"since":null}, +{"name":"--sf-info-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-35), var(--sf-info-85))","light":"#0050a7","dark":"#c2d5ff","desktop":null,"color":[0,0.3137,0.6549,1],"darkColor":[0.7608,0.8353,1,1],"since":null}, +{"name":"--sf-inherit","group":"other","source":"core","component":null,"summary":null,"value":"inherit","light":"inherit","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-input-background-color","group":"component","source":"component","component":".sf-input","summary":"The field's fill at rest; focus, error and disabled keep their own.","value":"var(--sf-surface-0)","light":"#ffffff","dark":"#0f1115","desktop":null,"color":[1,1,1,1],"darkColor":[0.0588,0.0667,0.0824,1],"since":"2026-10-13"}, +{"name":"--sf-input-border-color","group":"component","source":"component","component":".sf-input","summary":"The field's border at rest.","value":"var(--sf-outline)","light":"rgba(118,119,124,0.8)","dark":"rgba(144,144,149,0.63922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.8],"darkColor":[0.5647,0.5647,0.5843,0.6392],"since":"2026-10-13"}, +{"name":"--sf-input-color","group":"component","source":"component","component":".sf-input","summary":"The typed text.","value":"inherit","light":"inherit","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-input-padding-block","group":"component","source":"component","component":".sf-input","summary":"Space inside the field above and below its content.","value":"calc(var(--sf-ui-1--space-y-tightness-default) - var(--sf-px))","light":"calc(0.5rem - 1px)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-input-padding-inline","group":"component","source":"component","component":".sf-input","summary":"Space inside the field before and after its content.","value":"var(--sf-ui-1--space-x)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-input-radius","group":"component","source":"component","component":".sf-input","summary":"The field's corner radius.","value":"var(--sf-radius--ui)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-13"}, +{"name":"--sf-label-large--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-label-large--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-label-medium--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1\\/3)","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-label-medium--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/3)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-label-small--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1\\/4)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-label-small--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/4)","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-link","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-40), var(--sf-primary-80))","light":"#005bbe","dark":"#acc7ff","desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":[0.6745,0.7804,1,1],"since":null}, +{"name":"--sf-link--underline-dashed","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-link--underline-dotted","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a3)","light":"0.1875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-link--underline-weight","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-link-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-30), var(--sf-primary-90))","light":"#004491","dark":"#d7e2ff","desktop":null,"color":[0,0.2667,0.5686,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-link-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-35), var(--sf-primary-85))","light":"#0050a7","dark":"#c2d5ff","desktop":null,"color":[0,0.3137,0.6549,1],"darkColor":[0.7608,0.8353,1,1],"since":null}, +{"name":"--sf-link-visited","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-40), var(--sf-tertiary-80))","light":"#7c4c86","dark":"#ecb3f4","desktop":null,"color":[0.4863,0.298,0.5255,1],"darkColor":[0.9255,0.702,0.9569,1],"since":null}, +{"name":"--sf-mark","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-24), var(--sf-warning-90--alfa-24))","light":"rgba(178,99,0,0.23922)","dark":"rgba(255,220,193,0.23922)","desktop":null,"color":[0.698,0.3882,0,0.2392],"darkColor":[1,0.8627,0.7569,0.2392],"since":null}, +{"name":"--sf-mark--color","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-warning-transparent-overlay)","light":"rgba(178,99,0,0.23922)","dark":"rgba(255,220,193,0.23922)","desktop":null,"color":[0.698,0.3882,0,0.2392],"darkColor":[1,0.8627,0.7569,0.2392],"since":null}, +{"name":"--sf-mono","group":"typography","source":"core","component":null,"summary":null,"value":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace","light":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-neutral","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-80))","light":"#5d5e63","dark":"#c6c6cb","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.7765,0.7765,0.7961,1],"since":null}, +{"name":"--sf-neutral-10","group":"color","source":"core","component":null,"summary":null,"value":"#1a1b1f","light":"#1a1b1f","dark":null,"desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-15","group":"color","source":"core","component":null,"summary":null,"value":"#24262a","light":"#24262a","dark":null,"desktop":null,"color":[0.1412,0.149,0.1647,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-20","group":"color","source":"core","component":null,"summary":null,"value":"#2f3035","light":"#2f3035","dark":null,"desktop":null,"color":[0.1843,0.1882,0.2078,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-25","group":"color","source":"core","component":null,"summary":null,"value":"#3a3b40","light":"#3a3b40","dark":null,"desktop":null,"color":[0.2275,0.2314,0.251,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-30","group":"color","source":"core","component":null,"summary":null,"value":"#45474b","light":"#45474b","dark":null,"desktop":null,"color":[0.2706,0.2784,0.2941,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-35","group":"color","source":"core","component":null,"summary":null,"value":"#515257","light":"#515257","dark":null,"desktop":null,"color":[0.3176,0.3216,0.3412,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-40","group":"color","source":"core","component":null,"summary":null,"value":"#5d5e63","light":"#5d5e63","dark":null,"desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-5","group":"color","source":"core","component":null,"summary":null,"value":"#0f1115","light":"#0f1115","dark":null,"desktop":null,"color":[0.0588,0.0667,0.0824,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50","group":"color","source":"core","component":null,"summary":null,"value":"#76777c","light":"#76777c","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.12157)","light":"rgba(118,119,124,0.12157)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.16078)","light":"rgba(118,119,124,0.16078)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.2)","light":"rgba(118,119,124,0.2)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.2],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.23922)","light":"rgba(118,119,124,0.23922)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.32157)","light":"rgba(118,119,124,0.32157)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.03922)","light":"rgba(118,119,124,0.03922)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-48","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.47843)","light":"rgba(118,119,124,0.47843)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.4784],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.07843)","light":"rgba(118,119,124,0.07843)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-neutral-50--alfa-80","group":"color","source":"core","component":null,"summary":null,"value":"rgba(118,119,124,0.8)","light":"rgba(118,119,124,0.8)","dark":null,"desktop":null,"color":[0.4627,0.4667,0.4863,0.8],"darkColor":null,"since":null}, +{"name":"--sf-neutral-60","group":"color","source":"core","component":null,"summary":null,"value":"#909095","light":"#909095","dark":null,"desktop":null,"color":[0.5647,0.5647,0.5843,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-60--alfa-48","group":"color","source":"core","component":null,"summary":null,"value":"rgba(144,144,149,0.47843)","light":"rgba(144,144,149,0.47843)","dark":null,"desktop":null,"color":[0.5647,0.5647,0.5843,0.4784],"darkColor":null,"since":null}, +{"name":"--sf-neutral-60--alfa-64","group":"color","source":"core","component":null,"summary":null,"value":"rgba(144,144,149,0.63922)","light":"rgba(144,144,149,0.63922)","dark":null,"desktop":null,"color":[0.5647,0.5647,0.5843,0.6392],"darkColor":null,"since":null}, +{"name":"--sf-neutral-70","group":"color","source":"core","component":null,"summary":null,"value":"#ababb0","light":"#ababb0","dark":null,"desktop":null,"color":[0.6706,0.6706,0.6902,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-80","group":"color","source":"core","component":null,"summary":null,"value":"#c6c6cb","light":"#c6c6cb","dark":null,"desktop":null,"color":[0.7765,0.7765,0.7961,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-80--alfa-48","group":"color","source":"core","component":null,"summary":null,"value":"rgba(198,198,203,0.47843)","light":"rgba(198,198,203,0.47843)","dark":null,"desktop":null,"color":[0.7765,0.7765,0.7961,0.4784],"darkColor":null,"since":null}, +{"name":"--sf-neutral-85","group":"color","source":"core","component":null,"summary":null,"value":"#d4d4d9","light":"#d4d4d9","dark":null,"desktop":null,"color":[0.8314,0.8314,0.851,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90","group":"color","source":"core","component":null,"summary":null,"value":"#e3e2e7","light":"#e3e2e7","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.12157)","light":"rgba(227,226,231,0.12157)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.16078)","light":"rgba(227,226,231,0.16078)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.2)","light":"rgba(227,226,231,0.2)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.2],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.23922)","light":"rgba(227,226,231,0.23922)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.32157)","light":"rgba(227,226,231,0.32157)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.03922)","light":"rgba(227,226,231,0.03922)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-48","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.47843)","light":"rgba(227,226,231,0.47843)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.4784],"darkColor":null,"since":null}, +{"name":"--sf-neutral-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(227,226,231,0.07843)","light":"rgba(227,226,231,0.07843)","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-neutral-95","group":"color","source":"core","component":null,"summary":null,"value":"#f1f0f6","light":"#f1f0f6","dark":null,"desktop":null,"color":[0.9451,0.9412,0.9647,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-98","group":"color","source":"core","component":null,"summary":null,"value":"#faf9fe","light":"#faf9fe","dark":null,"desktop":null,"color":[0.9804,0.9765,0.9961,1],"darkColor":null,"since":null}, +{"name":"--sf-neutral-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-30), var(--sf-neutral-90))","light":"#45474b","dark":"#e3e2e7","desktop":null,"color":[0.2706,0.2784,0.2941,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":null}, +{"name":"--sf-neutral-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-90), var(--sf-neutral-30))","light":"#e3e2e7","dark":"#45474b","desktop":null,"color":[0.8902,0.8863,0.9059,1],"darkColor":[0.2706,0.2784,0.2941,1],"since":null}, +{"name":"--sf-neutral-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-80), var(--sf-neutral-40))","light":"#c6c6cb","dark":"#5d5e63","desktop":null,"color":[0.7765,0.7765,0.7961,1],"darkColor":[0.3647,0.3686,0.3882,1],"since":null}, +{"name":"--sf-neutral-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-85), var(--sf-neutral-35))","light":"#d4d4d9","dark":"#515257","desktop":null,"color":[0.8314,0.8314,0.851,1],"darkColor":[0.3176,0.3216,0.3412,1],"since":null}, +{"name":"--sf-neutral-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-35), var(--sf-neutral-85))","light":"#515257","dark":"#d4d4d9","desktop":null,"color":[0.3176,0.3216,0.3412,1],"darkColor":[0.8314,0.8314,0.851,1],"since":null}, +{"name":"--sf-on-disable","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-80), var(--sf-neutral-90--alfa-48))","light":"rgba(118,119,124,0.8)","dark":"rgba(227,226,231,0.47843)","desktop":null,"color":[0.4627,0.4667,0.4863,0.8],"darkColor":[0.8902,0.8863,0.9059,0.4784],"since":null}, +{"name":"--sf-on-elevation-1--variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-60))","light":"#5d5e63","dark":"#909095","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.5647,0.5647,0.5843,1],"since":null}, +{"name":"--sf-on-elevation-2--variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-70))","light":"#5d5e63","dark":"#ababb0","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.6706,0.6706,0.6902,1],"since":null}, +{"name":"--sf-on-elevation-3--variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-70))","light":"#5d5e63","dark":"#ababb0","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.6706,0.6706,0.6902,1],"since":null}, +{"name":"--sf-on-elevation-4--variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-80))","light":"#5d5e63","dark":"#c6c6cb","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.7765,0.7765,0.7961,1],"since":null}, +{"name":"--sf-on-elevation-5--variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-80))","light":"#5d5e63","dark":"#c6c6cb","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.7765,0.7765,0.7961,1],"since":null}, +{"name":"--sf-on-error","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-error-20))","light":"#ffffff","dark":"#690005","desktop":null,"color":[1,1,1,1],"darkColor":[0.4118,0,0.0196,1],"since":null}, +{"name":"--sf-on-error-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-10), var(--sf-error-90))","light":"#410002","dark":"#ffdad6","desktop":null,"color":[0.2549,0,0.0078,1],"darkColor":[1,0.8549,0.8392,1],"since":null}, +{"name":"--sf-on-error-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50), var(--sf-error-60))","light":"#df362f","dark":"#ff5449","desktop":null,"color":[0.8745,0.2118,0.1843,1],"darkColor":[1,0.3294,0.2863,1],"since":null}, +{"name":"--sf-on-info","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-info-20))","light":"#ffffff","dark":"#002f67","desktop":null,"color":[1,1,1,1],"darkColor":[0,0.1843,0.4039,1],"since":null}, +{"name":"--sf-on-info-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-10), var(--sf-info-90))","light":"#001a40","dark":"#d7e2ff","desktop":null,"color":[0,0.102,0.251,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-on-info-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-50), var(--sf-info-60))","light":"#0073ed","dark":"#488fff","desktop":null,"color":[0,0.451,0.9294,1],"darkColor":[0.2824,0.5608,1,1],"since":null}, +{"name":"--sf-on-neutral","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-neutral-20))","light":"#ffffff","dark":"#2f3035","desktop":null,"color":[1,1,1,1],"darkColor":[0.1843,0.1882,0.2078,1],"since":null}, +{"name":"--sf-on-neutral-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-10), var(--sf-neutral-90))","light":"#1a1b1f","dark":"#e3e2e7","desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":null}, +{"name":"--sf-on-neutral-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50), var(--sf-neutral-60))","light":"#76777c","dark":"#909095","desktop":null,"color":[0.4627,0.4667,0.4863,1],"darkColor":[0.5647,0.5647,0.5843,1],"since":null}, +{"name":"--sf-on-primary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-primary-20))","light":"#ffffff","dark":"#002f67","desktop":null,"color":[1,1,1,1],"darkColor":[0,0.1843,0.4039,1],"since":null}, +{"name":"--sf-on-primary-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-10), var(--sf-primary-90))","light":"#001a40","dark":"#d7e2ff","desktop":null,"color":[0,0.102,0.251,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-on-primary-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50), var(--sf-primary-60))","light":"#0073ed","dark":"#488fff","desktop":null,"color":[0,0.451,0.9294,1],"darkColor":[0.2824,0.5608,1,1],"since":null}, +{"name":"--sf-on-secondary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-secondary-20))","light":"#ffffff","dark":"#253047","desktop":null,"color":[1,1,1,1],"darkColor":[0.1451,0.1882,0.2784,1],"since":null}, +{"name":"--sf-on-secondary-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-10), var(--sf-secondary-90))","light":"#101b31","dark":"#d7e2ff","desktop":null,"color":[0.0627,0.1059,0.1922,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-on-secondary-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50), var(--sf-secondary-60))","light":"#6c7791","dark":"#8591ab","desktop":null,"color":[0.4235,0.4667,0.5686,1],"darkColor":[0.5216,0.5686,0.6706,1],"since":null}, +{"name":"--sf-on-success","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-success-20))","light":"#ffffff","dark":"#003908","desktop":null,"color":[1,1,1,1],"darkColor":[0,0.2235,0.0314,1],"since":null}, +{"name":"--sf-on-success-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-10), var(--sf-success-90))","light":"#002203","dark":"#8ffa88","desktop":null,"color":[0,0.1333,0.0118,1],"darkColor":[0.5608,0.9804,0.5333,1],"since":null}, +{"name":"--sf-on-success-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50), var(--sf-success-60))","light":"#198a27","dark":"#3ba53f","desktop":null,"color":[0.098,0.5412,0.1529,1],"darkColor":[0.2314,0.6471,0.2471,1],"since":null}, +{"name":"--sf-on-surface","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-10), var(--sf-neutral-90))","light":"#1a1b1f","dark":"#e3e2e7","desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":null}, +{"name":"--sf-on-surface-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-20), var(--sf-neutral-80))","light":"#2f3035","dark":"#c6c6cb","desktop":null,"color":[0.1843,0.1882,0.2078,1],"darkColor":[0.7765,0.7765,0.7961,1],"since":null}, +{"name":"--sf-on-surface-container--variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-35), var(--sf-neutral-80))","light":"#515257","dark":"#c6c6cb","desktop":null,"color":[0.3176,0.3216,0.3412,1],"darkColor":[0.7765,0.7765,0.7961,1],"since":null}, +{"name":"--sf-on-surface-fixed","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-neutral-10)","light":"#1a1b1f","dark":null,"desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":null,"since":null}, +{"name":"--sf-on-surface-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-15), var(--sf-neutral-85))","light":"#24262a","dark":"#d4d4d9","desktop":null,"color":[0.1412,0.149,0.1647,1],"darkColor":[0.8314,0.8314,0.851,1],"since":null}, +{"name":"--sf-on-surface-inverse","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-90), var(--sf-neutral-10))","light":"#e3e2e7","dark":"#1a1b1f","desktop":null,"color":[0.8902,0.8863,0.9059,1],"darkColor":[0.102,0.1059,0.1216,1],"since":null}, +{"name":"--sf-on-surface-inverse-fixed","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-neutral-90)","light":"#e3e2e7","dark":null,"desktop":null,"color":[0.8902,0.8863,0.9059,1],"darkColor":null,"since":null}, +{"name":"--sf-on-surface-muted","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-60), var(--sf-neutral-40))","light":"#909095","dark":"#5d5e63","desktop":null,"color":[0.5647,0.5647,0.5843,1],"darkColor":[0.3647,0.3686,0.3882,1],"since":null}, +{"name":"--sf-on-surface-variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-40), var(--sf-neutral-60))","light":"#5d5e63","dark":"#909095","desktop":null,"color":[0.3647,0.3686,0.3882,1],"darkColor":[0.5647,0.5647,0.5843,1],"since":null}, +{"name":"--sf-on-tertiary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-tertiary-20))","light":"#ffffff","dark":"#4a1e54","desktop":null,"color":[1,1,1,1],"darkColor":[0.2902,0.1176,0.3294,1],"since":null}, +{"name":"--sf-on-tertiary-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-10), var(--sf-tertiary-90))","light":"#32053e","dark":"#fdd6ff","desktop":null,"color":[0.1961,0.0196,0.2431,1],"darkColor":[0.9922,0.8392,1,1],"since":null}, +{"name":"--sf-on-tertiary-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50), var(--sf-tertiary-60))","light":"#9765a0","dark":"#b37ebb","desktop":null,"color":[0.5922,0.3961,0.6275,1],"darkColor":[0.702,0.4941,0.7333,1],"since":null}, +{"name":"--sf-on-warning","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-warning-20))","light":"#ffffff","dark":"#4c2700","desktop":null,"color":[1,1,1,1],"darkColor":[0.298,0.1529,0,1],"since":null}, +{"name":"--sf-on-warning-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-10), var(--sf-warning-90))","light":"#2e1500","dark":"#ffdcc1","desktop":null,"color":[0.1804,0.0824,0,1],"darkColor":[1,0.8627,0.7569,1],"since":null}, +{"name":"--sf-on-warning-container-graphic","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50), var(--sf-warning-60))","light":"#b26300","dark":"#d87900","desktop":null,"color":[0.698,0.3882,0,1],"darkColor":[0.8471,0.4745,0,1],"since":null}, +{"name":"--sf-opacity-10","group":"opacity","source":"core","component":null,"summary":null,"value":"10%","light":"10%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-20","group":"opacity","source":"core","component":null,"summary":null,"value":"20%","light":"20%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-30","group":"opacity","source":"core","component":null,"summary":null,"value":"30%","light":"30%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-40","group":"opacity","source":"core","component":null,"summary":null,"value":"40%","light":"40%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-50","group":"opacity","source":"core","component":null,"summary":null,"value":"50%","light":"50%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-60","group":"opacity","source":"core","component":null,"summary":null,"value":"60%","light":"60%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-70","group":"opacity","source":"core","component":null,"summary":null,"value":"70%","light":"70%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-80","group":"opacity","source":"core","component":null,"summary":null,"value":"80%","light":"80%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-opacity-90","group":"opacity","source":"core","component":null,"summary":null,"value":"90%","light":"90%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-outline","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-80), var(--sf-neutral-60--alfa-64))","light":"rgba(118,119,124,0.8)","dark":"rgba(144,144,149,0.63922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.8],"darkColor":[0.5647,0.5647,0.5843,0.6392],"since":null}, +{"name":"--sf-outline--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-outline-disable","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-48), var(--sf-neutral-60--alfa-48))","light":"rgba(118,119,124,0.47843)","dark":"rgba(144,144,149,0.47843)","desktop":null,"color":[0.4627,0.4667,0.4863,0.4784],"darkColor":[0.5647,0.5647,0.5843,0.4784],"since":null}, +{"name":"--sf-outline-error","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-error-50), var(--sf-error-60))","light":"#df362f","dark":"#ff5449","desktop":null,"color":[0.8745,0.2118,0.1843,1],"darkColor":[1,0.3294,0.2863,1],"since":null}, +{"name":"--sf-outline-info","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-info-50), var(--sf-info-60))","light":"#0073ed","dark":"#488fff","desktop":null,"color":[0,0.451,0.9294,1],"darkColor":[0.2824,0.5608,1,1],"since":null}, +{"name":"--sf-outline-primary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50), var(--sf-primary-60))","light":"#0073ed","dark":"#488fff","desktop":null,"color":[0,0.451,0.9294,1],"darkColor":[0.2824,0.5608,1,1],"since":null}, +{"name":"--sf-outline-secondary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50), var(--sf-secondary-60))","light":"#6c7791","dark":"#8591ab","desktop":null,"color":[0.4235,0.4667,0.5686,1],"darkColor":[0.5216,0.5686,0.6706,1],"since":null}, +{"name":"--sf-outline-success","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50), var(--sf-success-60))","light":"#198a27","dark":"#3ba53f","desktop":null,"color":[0.098,0.5412,0.1529,1],"darkColor":[0.2314,0.6471,0.2471,1],"since":null}, +{"name":"--sf-outline-tertiary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50), var(--sf-tertiary-60))","light":"#9765a0","dark":"#b37ebb","desktop":null,"color":[0.5922,0.3961,0.6275,1],"darkColor":[0.702,0.4941,0.7333,1],"since":null}, +{"name":"--sf-outline-variant","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-24), var(--sf-neutral-90--alfa-24))","light":"rgba(118,119,124,0.23922)","dark":"rgba(227,226,231,0.23922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.2392],"darkColor":[0.8902,0.8863,0.9059,0.2392],"since":null}, +{"name":"--sf-outline-warning","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50), var(--sf-warning-60))","light":"#b26300","dark":"#d87900","desktop":null,"color":[0.698,0.3882,0,1],"darkColor":[0.8471,0.4745,0,1],"since":null}, +{"name":"--sf-primary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-40), var(--sf-primary-80))","light":"#005bbe","dark":"#acc7ff","desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":[0.6745,0.7804,1,1],"since":null}, +{"name":"--sf-primary-10","group":"color","source":"core","component":null,"summary":null,"value":"#001a40","light":"#001a40","dark":null,"desktop":null,"color":[0,0.102,0.251,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-15","group":"color","source":"core","component":null,"summary":null,"value":"#002453","light":"#002453","dark":null,"desktop":null,"color":[0,0.1412,0.3255,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-20","group":"color","source":"core","component":null,"summary":null,"value":"#002f67","light":"#002f67","dark":null,"desktop":null,"color":[0,0.1843,0.4039,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-25","group":"color","source":"core","component":null,"summary":null,"value":"#00397c","light":"#00397c","dark":null,"desktop":null,"color":[0,0.2235,0.4863,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-30","group":"color","source":"core","component":null,"summary":null,"value":"#004491","light":"#004491","dark":null,"desktop":null,"color":[0,0.2667,0.5686,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-35","group":"color","source":"core","component":null,"summary":null,"value":"#0050a7","light":"#0050a7","dark":null,"desktop":null,"color":[0,0.3137,0.6549,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-40","group":"color","source":"core","component":null,"summary":null,"value":"#005bbe","light":"#005bbe","dark":null,"desktop":null,"color":[0,0.3569,0.7451,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-5","group":"color","source":"core","component":null,"summary":null,"value":"#00102c","light":"#00102c","dark":null,"desktop":null,"color":[0,0.0627,0.1725,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-50","group":"color","source":"core","component":null,"summary":null,"value":"#0073ed","light":"#0073ed","dark":null,"desktop":null,"color":[0,0.451,0.9294,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.12157)","light":"rgba(0,115,237,0.12157)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.16078)","light":"rgba(0,115,237,0.16078)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.2)","light":"rgba(0,115,237,0.2)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.2],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.23922)","light":"rgba(0,115,237,0.23922)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.27843)","light":"rgba(0,115,237,0.27843)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.32157)","light":"rgba(0,115,237,0.32157)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.03922)","light":"rgba(0,115,237,0.03922)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-primary-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(0,115,237,0.07843)","light":"rgba(0,115,237,0.07843)","dark":null,"desktop":null,"color":[0,0.451,0.9294,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-primary-60","group":"color","source":"core","component":null,"summary":null,"value":"#488fff","light":"#488fff","dark":null,"desktop":null,"color":[0.2824,0.5608,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-70","group":"color","source":"core","component":null,"summary":null,"value":"#7eabff","light":"#7eabff","dark":null,"desktop":null,"color":[0.4941,0.6706,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-80","group":"color","source":"core","component":null,"summary":null,"value":"#acc7ff","light":"#acc7ff","dark":null,"desktop":null,"color":[0.6745,0.7804,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-85","group":"color","source":"core","component":null,"summary":null,"value":"#c2d5ff","light":"#c2d5ff","dark":null,"desktop":null,"color":[0.7608,0.8353,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-90","group":"color","source":"core","component":null,"summary":null,"value":"#d7e2ff","light":"#d7e2ff","dark":null,"desktop":null,"color":[0.8431,0.8863,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.12157)","light":"rgba(215,226,255,0.12157)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-primary-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.23922)","light":"rgba(215,226,255,0.23922)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-primary-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.03922)","light":"rgba(215,226,255,0.03922)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-primary-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.07843)","light":"rgba(215,226,255,0.07843)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-primary-95","group":"color","source":"core","component":null,"summary":null,"value":"#edf0ff","light":"#edf0ff","dark":null,"desktop":null,"color":[0.9294,0.9412,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-98","group":"color","source":"core","component":null,"summary":null,"value":"#f9f9ff","light":"#f9f9ff","dark":null,"desktop":null,"color":[0.9765,0.9765,1,1],"darkColor":null,"since":null}, +{"name":"--sf-primary-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-30), var(--sf-primary-90))","light":"#004491","dark":"#d7e2ff","desktop":null,"color":[0,0.2667,0.5686,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-primary-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-12), var(--sf-primary-50--alfa-24))","light":"rgba(0,115,237,0.12157)","dark":"rgba(0,115,237,0.23922)","desktop":null,"color":[0,0.451,0.9294,0.1216],"darkColor":[0,0.451,0.9294,0.2392],"since":null}, +{"name":"--sf-primary-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-20), var(--sf-primary-50--alfa-32))","light":"rgba(0,115,237,0.2)","dark":"rgba(0,115,237,0.32157)","desktop":null,"color":[0,0.451,0.9294,0.2],"darkColor":[0,0.451,0.9294,0.3216],"since":null}, +{"name":"--sf-primary-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-16), var(--sf-primary-50--alfa-28))","light":"rgba(0,115,237,0.16078)","dark":"rgba(0,115,237,0.27843)","desktop":null,"color":[0,0.451,0.9294,0.1608],"darkColor":[0,0.451,0.9294,0.2784],"since":null}, +{"name":"--sf-primary-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-35), var(--sf-primary-85))","light":"#0050a7","dark":"#c2d5ff","desktop":null,"color":[0,0.3137,0.6549,1],"darkColor":[0.7608,0.8353,1,1],"since":null}, +{"name":"--sf-primary-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-12), var(--sf-primary-90--alfa-12))","light":"rgba(0,115,237,0.12157)","dark":"rgba(215,226,255,0.12157)","desktop":null,"color":[0,0.451,0.9294,0.1216],"darkColor":[0.8431,0.8863,1,0.1216],"since":null}, +{"name":"--sf-primary-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-4), var(--sf-primary-90--alfa-4))","light":"rgba(0,115,237,0.03922)","dark":"rgba(215,226,255,0.03922)","desktop":null,"color":[0,0.451,0.9294,0.0392],"darkColor":[0.8431,0.8863,1,0.0392],"since":null}, +{"name":"--sf-primary-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-24), var(--sf-primary-90--alfa-24))","light":"rgba(0,115,237,0.23922)","dark":"rgba(215,226,255,0.23922)","desktop":null,"color":[0,0.451,0.9294,0.2392],"darkColor":[0.8431,0.8863,1,0.2392],"since":null}, +{"name":"--sf-primary-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-primary-50--alfa-8), var(--sf-primary-90--alfa-8))","light":"rgba(0,115,237,0.07843)","dark":"rgba(215,226,255,0.07843)","desktop":null,"color":[0,0.451,0.9294,0.0784],"darkColor":[0.8431,0.8863,1,0.0784],"since":null}, +{"name":"--sf-px","group":"other","source":"core","component":null,"summary":null,"value":"1px","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius--surface","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-radius-1)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius--ui","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-radius-1\\/2)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-0","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-a0)","light":"0rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-1","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-1\\/2","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-1\\/3","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-a2)","light":"0.125rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-2","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-3","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-4","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-circle","group":"radius","source":"core","component":null,"summary":null,"value":"1000px","light":"1000px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-default","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-round","group":"radius","source":"core","component":null,"summary":null,"value":"var(--sf-radius-rounded)","light":"1000px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-rounded","group":"radius","source":"core","component":null,"summary":null,"value":"1000px","light":"1000px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-radius-square","group":"radius","source":"core","component":null,"summary":null,"value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ring--alfa","group":"border","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ring-color","group":"border","source":"core","component":null,"summary":null,"value":"","light":"","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-sans","group":"typography","source":"core","component":null,"summary":null,"value":"ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif,\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"","light":"ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif,\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-scroll--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-scroll-thumb--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-scroll-track--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-secondary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-40), var(--sf-secondary-80))","light":"#535e77","dark":"#bbc6e3","desktop":null,"color":[0.3255,0.3686,0.4667,1],"darkColor":[0.7333,0.7765,0.8902,1],"since":null}, +{"name":"--sf-secondary-10","group":"color","source":"core","component":null,"summary":null,"value":"#101b31","light":"#101b31","dark":null,"desktop":null,"color":[0.0627,0.1059,0.1922,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-15","group":"color","source":"core","component":null,"summary":null,"value":"#1a263b","light":"#1a263b","dark":null,"desktop":null,"color":[0.102,0.149,0.2314,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-20","group":"color","source":"core","component":null,"summary":null,"value":"#253047","light":"#253047","dark":null,"desktop":null,"color":[0.1451,0.1882,0.2784,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-25","group":"color","source":"core","component":null,"summary":null,"value":"#303b52","light":"#303b52","dark":null,"desktop":null,"color":[0.1882,0.2314,0.3216,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-30","group":"color","source":"core","component":null,"summary":null,"value":"#3c475e","light":"#3c475e","dark":null,"desktop":null,"color":[0.2353,0.2784,0.3686,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-35","group":"color","source":"core","component":null,"summary":null,"value":"#47526a","light":"#47526a","dark":null,"desktop":null,"color":[0.2784,0.3216,0.4157,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-40","group":"color","source":"core","component":null,"summary":null,"value":"#535e77","light":"#535e77","dark":null,"desktop":null,"color":[0.3255,0.3686,0.4667,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-5","group":"color","source":"core","component":null,"summary":null,"value":"#051126","light":"#051126","dark":null,"desktop":null,"color":[0.0196,0.0667,0.149,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50","group":"color","source":"core","component":null,"summary":null,"value":"#6c7791","light":"#6c7791","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.12157)","light":"rgba(108,119,145,0.12157)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.16078)","light":"rgba(108,119,145,0.16078)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.2)","light":"rgba(108,119,145,0.2)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.2],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.23922)","light":"rgba(108,119,145,0.23922)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.27843)","light":"rgba(108,119,145,0.27843)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.32157)","light":"rgba(108,119,145,0.32157)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.03922)","light":"rgba(108,119,145,0.03922)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-secondary-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(108,119,145,0.07843)","light":"rgba(108,119,145,0.07843)","dark":null,"desktop":null,"color":[0.4235,0.4667,0.5686,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-secondary-60","group":"color","source":"core","component":null,"summary":null,"value":"#8591ab","light":"#8591ab","dark":null,"desktop":null,"color":[0.5216,0.5686,0.6706,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-70","group":"color","source":"core","component":null,"summary":null,"value":"#a0abc7","light":"#a0abc7","dark":null,"desktop":null,"color":[0.6275,0.6706,0.7804,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-80","group":"color","source":"core","component":null,"summary":null,"value":"#bbc6e3","light":"#bbc6e3","dark":null,"desktop":null,"color":[0.7333,0.7765,0.8902,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-85","group":"color","source":"core","component":null,"summary":null,"value":"#c9d4f1","light":"#c9d4f1","dark":null,"desktop":null,"color":[0.7882,0.8314,0.9451,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-90","group":"color","source":"core","component":null,"summary":null,"value":"#d7e2ff","light":"#d7e2ff","dark":null,"desktop":null,"color":[0.8431,0.8863,1,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.12157)","light":"rgba(215,226,255,0.12157)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-secondary-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.23922)","light":"rgba(215,226,255,0.23922)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-secondary-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.03922)","light":"rgba(215,226,255,0.03922)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-secondary-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(215,226,255,0.07843)","light":"rgba(215,226,255,0.07843)","dark":null,"desktop":null,"color":[0.8431,0.8863,1,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-secondary-95","group":"color","source":"core","component":null,"summary":null,"value":"#edf0ff","light":"#edf0ff","dark":null,"desktop":null,"color":[0.9294,0.9412,1,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-98","group":"color","source":"core","component":null,"summary":null,"value":"#f9f9ff","light":"#f9f9ff","dark":null,"desktop":null,"color":[0.9765,0.9765,1,1],"darkColor":null,"since":null}, +{"name":"--sf-secondary-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-30), var(--sf-secondary-90))","light":"#3c475e","dark":"#d7e2ff","desktop":null,"color":[0.2353,0.2784,0.3686,1],"darkColor":[0.8431,0.8863,1,1],"since":null}, +{"name":"--sf-secondary-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-12), var(--sf-secondary-50--alfa-24))","light":"rgba(108,119,145,0.12157)","dark":"rgba(108,119,145,0.23922)","desktop":null,"color":[0.4235,0.4667,0.5686,0.1216],"darkColor":[0.4235,0.4667,0.5686,0.2392],"since":null}, +{"name":"--sf-secondary-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-20), var(--sf-secondary-50--alfa-32))","light":"rgba(108,119,145,0.2)","dark":"rgba(108,119,145,0.32157)","desktop":null,"color":[0.4235,0.4667,0.5686,0.2],"darkColor":[0.4235,0.4667,0.5686,0.3216],"since":null}, +{"name":"--sf-secondary-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-16), var(--sf-secondary-50--alfa-28))","light":"rgba(108,119,145,0.16078)","dark":"rgba(108,119,145,0.27843)","desktop":null,"color":[0.4235,0.4667,0.5686,0.1608],"darkColor":[0.4235,0.4667,0.5686,0.2784],"since":null}, +{"name":"--sf-secondary-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-35), var(--sf-secondary-85))","light":"#47526a","dark":"#c9d4f1","desktop":null,"color":[0.2784,0.3216,0.4157,1],"darkColor":[0.7882,0.8314,0.9451,1],"since":null}, +{"name":"--sf-secondary-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-12), var(--sf-secondary-90--alfa-12))","light":"rgba(108,119,145,0.12157)","dark":"rgba(215,226,255,0.12157)","desktop":null,"color":[0.4235,0.4667,0.5686,0.1216],"darkColor":[0.8431,0.8863,1,0.1216],"since":null}, +{"name":"--sf-secondary-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-4), var(--sf-secondary-90--alfa-4))","light":"rgba(108,119,145,0.03922)","dark":"rgba(215,226,255,0.03922)","desktop":null,"color":[0.4235,0.4667,0.5686,0.0392],"darkColor":[0.8431,0.8863,1,0.0392],"since":null}, +{"name":"--sf-secondary-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-24), var(--sf-secondary-90--alfa-24))","light":"rgba(108,119,145,0.23922)","dark":"rgba(215,226,255,0.23922)","desktop":null,"color":[0.4235,0.4667,0.5686,0.2392],"darkColor":[0.8431,0.8863,1,0.2392],"since":null}, +{"name":"--sf-secondary-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-secondary-50--alfa-8), var(--sf-secondary-90--alfa-8))","light":"rgba(108,119,145,0.07843)","dark":"rgba(215,226,255,0.07843)","desktop":null,"color":[0.4235,0.4667,0.5686,0.0784],"darkColor":[0.8431,0.8863,1,0.0784],"since":null}, +{"name":"--sf-serif","group":"typography","source":"core","component":null,"summary":null,"value":"ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif","light":"ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--alfa","group":"elevation","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--alfa-fill","group":"elevation","source":"core","component":null,"summary":null,"value":"24%","light":"24%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--alfa-outline","group":"elevation","source":"core","component":null,"summary":null,"value":"12%","light":"12%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--alfa-shade","group":"elevation","source":"core","component":null,"summary":null,"value":"8%","light":"8%","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--color-fill","group":"elevation","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-shadow--color, var(--sf-black, #000)) var(--sf-shadow--alfa-fill))","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 24%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--color-outline","group":"elevation","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-shadow--color, var(--sf-black, #000)) var(--sf-shadow--alfa-outline))","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 12%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--color-shade","group":"elevation","source":"core","component":null,"summary":null,"value":"var(--sf-shadow--color-shading)","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 8%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--color-shading","group":"elevation","source":"core","component":null,"summary":null,"value":"color-mix(in srgb, var(--sf-transparent), var(--sf-shadow--color, var(--sf-black, #000)) var(--sf-shadow--alfa-shade))","light":"color-mix(in srgb, rgba(255,255,255,0), #000000 8%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--level-ratio","group":"elevation","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-shadow--rim","group":"elevation","source":"core","component":null,"summary":null,"value":"0 0 0 0 transparent","light":"0 0 0 0 transparent","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-0","group":"spacing","source":"core","component":null,"summary":null,"value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-1","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-1\\/2","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":"0.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-1\\/3","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-1\\/4","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-2","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-3","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-4","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-5","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-6","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-7","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-d0)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-8","group":"spacing","source":"core","component":null,"summary":null,"value":"var(--sf-d2)","light":"3rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-space-auto","group":"spacing","source":"core","component":null,"summary":null,"value":"auto","light":"auto","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-stripe--alfa","group":"other","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-stripe--color","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-surface-inverse)","light":"#2f3035","dark":"#e3e2e7","desktop":null,"color":[0.1843,0.1882,0.2078,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":null}, +{"name":"--sf-stripe--size","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-a1, 1px)","light":"0.0625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-success","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-40), var(--sf-success-80))","light":"#006e17","dark":"#74dd6f","desktop":null,"color":[0,0.4314,0.0902,1],"darkColor":[0.4549,0.8667,0.4353,1],"since":null}, +{"name":"--sf-success-10","group":"color","source":"core","component":null,"summary":null,"value":"#002203","light":"#002203","dark":null,"desktop":null,"color":[0,0.1333,0.0118,1],"darkColor":null,"since":null}, +{"name":"--sf-success-15","group":"color","source":"core","component":null,"summary":null,"value":"#002d05","light":"#002d05","dark":null,"desktop":null,"color":[0,0.1765,0.0196,1],"darkColor":null,"since":null}, +{"name":"--sf-success-20","group":"color","source":"core","component":null,"summary":null,"value":"#003908","light":"#003908","dark":null,"desktop":null,"color":[0,0.2235,0.0314,1],"darkColor":null,"since":null}, +{"name":"--sf-success-25","group":"color","source":"core","component":null,"summary":null,"value":"#00460b","light":"#00460b","dark":null,"desktop":null,"color":[0,0.2745,0.0431,1],"darkColor":null,"since":null}, +{"name":"--sf-success-30","group":"color","source":"core","component":null,"summary":null,"value":"#00530f","light":"#00530f","dark":null,"desktop":null,"color":[0,0.3255,0.0588,1],"darkColor":null,"since":null}, +{"name":"--sf-success-35","group":"color","source":"core","component":null,"summary":null,"value":"#006013","light":"#006013","dark":null,"desktop":null,"color":[0,0.3765,0.0745,1],"darkColor":null,"since":null}, +{"name":"--sf-success-40","group":"color","source":"core","component":null,"summary":null,"value":"#006e17","light":"#006e17","dark":null,"desktop":null,"color":[0,0.4314,0.0902,1],"darkColor":null,"since":null}, +{"name":"--sf-success-5","group":"color","source":"core","component":null,"summary":null,"value":"#001501","light":"#001501","dark":null,"desktop":null,"color":[0,0.0824,0.0039,1],"darkColor":null,"since":null}, +{"name":"--sf-success-50","group":"color","source":"core","component":null,"summary":null,"value":"#198a27","light":"#198a27","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,1],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.12157)","light":"rgba(25,138,39,0.12157)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.16078)","light":"rgba(25,138,39,0.16078)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.2)","light":"rgba(25,138,39,0.2)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.2],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.23922)","light":"rgba(25,138,39,0.23922)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.27843)","light":"rgba(25,138,39,0.27843)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.32157)","light":"rgba(25,138,39,0.32157)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.03922)","light":"rgba(25,138,39,0.03922)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-success-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(25,138,39,0.07843)","light":"rgba(25,138,39,0.07843)","dark":null,"desktop":null,"color":[0.098,0.5412,0.1529,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-success-60","group":"color","source":"core","component":null,"summary":null,"value":"#3ba53f","light":"#3ba53f","dark":null,"desktop":null,"color":[0.2314,0.6471,0.2471,1],"darkColor":null,"since":null}, +{"name":"--sf-success-70","group":"color","source":"core","component":null,"summary":null,"value":"#58c157","light":"#58c157","dark":null,"desktop":null,"color":[0.3451,0.7569,0.3412,1],"darkColor":null,"since":null}, +{"name":"--sf-success-80","group":"color","source":"core","component":null,"summary":null,"value":"#74dd6f","light":"#74dd6f","dark":null,"desktop":null,"color":[0.4549,0.8667,0.4353,1],"darkColor":null,"since":null}, +{"name":"--sf-success-85","group":"color","source":"core","component":null,"summary":null,"value":"#81ec7c","light":"#81ec7c","dark":null,"desktop":null,"color":[0.5059,0.9255,0.4863,1],"darkColor":null,"since":null}, +{"name":"--sf-success-90","group":"color","source":"core","component":null,"summary":null,"value":"#8ffa88","light":"#8ffa88","dark":null,"desktop":null,"color":[0.5608,0.9804,0.5333,1],"darkColor":null,"since":null}, +{"name":"--sf-success-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(143,250,136,0.12157)","light":"rgba(143,250,136,0.12157)","dark":null,"desktop":null,"color":[0.5608,0.9804,0.5333,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-success-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(143,250,136,0.23922)","light":"rgba(143,250,136,0.23922)","dark":null,"desktop":null,"color":[0.5608,0.9804,0.5333,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-success-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(143,250,136,0.03922)","light":"rgba(143,250,136,0.03922)","dark":null,"desktop":null,"color":[0.5608,0.9804,0.5333,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-success-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(143,250,136,0.07843)","light":"rgba(143,250,136,0.07843)","dark":null,"desktop":null,"color":[0.5608,0.9804,0.5333,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-success-95","group":"color","source":"core","component":null,"summary":null,"value":"#c9ffbe","light":"#c9ffbe","dark":null,"desktop":null,"color":[0.7882,1,0.7451,1],"darkColor":null,"since":null}, +{"name":"--sf-success-98","group":"color","source":"core","component":null,"summary":null,"value":"#ecffe4","light":"#ecffe4","dark":null,"desktop":null,"color":[0.9255,1,0.8941,1],"darkColor":null,"since":null}, +{"name":"--sf-success-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-30), var(--sf-success-90))","light":"#00530f","dark":"#8ffa88","desktop":null,"color":[0,0.3255,0.0588,1],"darkColor":[0.5608,0.9804,0.5333,1],"since":null}, +{"name":"--sf-success-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-12), var(--sf-success-50--alfa-24))","light":"rgba(25,138,39,0.12157)","dark":"rgba(25,138,39,0.23922)","desktop":null,"color":[0.098,0.5412,0.1529,0.1216],"darkColor":[0.098,0.5412,0.1529,0.2392],"since":null}, +{"name":"--sf-success-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-20), var(--sf-success-50--alfa-32))","light":"rgba(25,138,39,0.2)","dark":"rgba(25,138,39,0.32157)","desktop":null,"color":[0.098,0.5412,0.1529,0.2],"darkColor":[0.098,0.5412,0.1529,0.3216],"since":null}, +{"name":"--sf-success-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-16), var(--sf-success-50--alfa-28))","light":"rgba(25,138,39,0.16078)","dark":"rgba(25,138,39,0.27843)","desktop":null,"color":[0.098,0.5412,0.1529,0.1608],"darkColor":[0.098,0.5412,0.1529,0.2784],"since":null}, +{"name":"--sf-success-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-35), var(--sf-success-85))","light":"#006013","dark":"#81ec7c","desktop":null,"color":[0,0.3765,0.0745,1],"darkColor":[0.5059,0.9255,0.4863,1],"since":null}, +{"name":"--sf-success-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-12), var(--sf-success-90--alfa-12))","light":"rgba(25,138,39,0.12157)","dark":"rgba(143,250,136,0.12157)","desktop":null,"color":[0.098,0.5412,0.1529,0.1216],"darkColor":[0.5608,0.9804,0.5333,0.1216],"since":null}, +{"name":"--sf-success-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-4), var(--sf-success-90--alfa-4))","light":"rgba(25,138,39,0.03922)","dark":"rgba(143,250,136,0.03922)","desktop":null,"color":[0.098,0.5412,0.1529,0.0392],"darkColor":[0.5608,0.9804,0.5333,0.0392],"since":null}, +{"name":"--sf-success-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-24), var(--sf-success-90--alfa-24))","light":"rgba(25,138,39,0.23922)","dark":"rgba(143,250,136,0.23922)","desktop":null,"color":[0.098,0.5412,0.1529,0.2392],"darkColor":[0.5608,0.9804,0.5333,0.2392],"since":null}, +{"name":"--sf-success-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-success-50--alfa-8), var(--sf-success-90--alfa-8))","light":"rgba(25,138,39,0.07843)","dark":"rgba(143,250,136,0.07843)","desktop":null,"color":[0.098,0.5412,0.1529,0.0784],"darkColor":[0.5608,0.9804,0.5333,0.0784],"since":null}, +{"name":"--sf-surface-0","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-white), var(--sf-neutral-5))","light":"#ffffff","dark":"#0f1115","desktop":null,"color":[1,1,1,1],"darkColor":[0.0588,0.0667,0.0824,1],"since":null}, +{"name":"--sf-surface-1","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-98), var(--sf-neutral-10))","light":"#faf9fe","dark":"#1a1b1f","desktop":null,"color":[0.9804,0.9765,0.9961,1],"darkColor":[0.102,0.1059,0.1216,1],"since":null}, +{"name":"--sf-surface-2","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-95), var(--sf-neutral-15))","light":"#f1f0f6","dark":"#24262a","desktop":null,"color":[0.9451,0.9412,0.9647,1],"darkColor":[0.1412,0.149,0.1647,1],"since":null}, +{"name":"--sf-surface-3","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-90), var(--sf-neutral-20))","light":"#e3e2e7","dark":"#2f3035","desktop":null,"color":[0.8902,0.8863,0.9059,1],"darkColor":[0.1843,0.1882,0.2078,1],"since":null}, +{"name":"--sf-surface-4","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-85), var(--sf-neutral-25))","light":"#d4d4d9","dark":"#3a3b40","desktop":null,"color":[0.8314,0.8314,0.851,1],"darkColor":[0.2275,0.2314,0.251,1],"since":null}, +{"name":"--sf-surface-5","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-80), var(--sf-neutral-30))","light":"#c6c6cb","dark":"#45474b","desktop":null,"color":[0.7765,0.7765,0.7961,1],"darkColor":[0.2706,0.2784,0.2941,1],"since":null}, +{"name":"--sf-surface-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-16), var(--sf-neutral-90--alfa-16))","light":"rgba(118,119,124,0.16078)","dark":"rgba(227,226,231,0.16078)","desktop":null,"color":[0.4627,0.4667,0.4863,0.1608],"darkColor":[0.8902,0.8863,0.9059,0.1608],"since":null}, +{"name":"--sf-surface-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-24), var(--sf-neutral-90--alfa-24))","light":"rgba(118,119,124,0.23922)","dark":"rgba(227,226,231,0.23922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.2392],"darkColor":[0.8902,0.8863,0.9059,0.2392],"since":null}, +{"name":"--sf-surface-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-20), var(--sf-neutral-90--alfa-20))","light":"rgba(118,119,124,0.2)","dark":"rgba(227,226,231,0.2)","desktop":null,"color":[0.4627,0.4667,0.4863,0.2],"darkColor":[0.8902,0.8863,0.9059,0.2],"since":null}, +{"name":"--sf-surface-inverse","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-20), var(--sf-neutral-90))","light":"#2f3035","dark":"#e3e2e7","desktop":null,"color":[0.1843,0.1882,0.2078,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":null}, +{"name":"--sf-surface-inverse-fixed","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-neutral-20)","light":"#2f3035","dark":null,"desktop":null,"color":[0.1843,0.1882,0.2078,1],"darkColor":null,"since":null}, +{"name":"--sf-surface-inverse-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-25), var(--sf-neutral-85))","light":"#3a3b40","dark":"#d4d4d9","desktop":null,"color":[0.2275,0.2314,0.251,1],"darkColor":[0.8314,0.8314,0.851,1],"since":null}, +{"name":"--sf-surface-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-black--alfa-8), var(--sf-white--alfa-8))","light":"rgba(0,0,0,0.07843)","dark":"rgba(255,255,255,0.07843)","desktop":null,"color":[0,0,0,0.0784],"darkColor":[1,1,1,0.0784],"since":null}, +{"name":"--sf-surface-overlay--blur","group":"other","source":"core","component":null,"summary":null,"value":"var(--sf-d6)","light":"4rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-surface-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-12), var(--sf-neutral-90--alfa-12))","light":"rgba(118,119,124,0.12157)","dark":"rgba(227,226,231,0.12157)","desktop":null,"color":[0.4627,0.4667,0.4863,0.1216],"darkColor":[0.8902,0.8863,0.9059,0.1216],"since":null}, +{"name":"--sf-surface-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-4), var(--sf-neutral-90--alfa-4))","light":"rgba(118,119,124,0.03922)","dark":"rgba(227,226,231,0.03922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.0392],"darkColor":[0.8902,0.8863,0.9059,0.0392],"since":null}, +{"name":"--sf-surface-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-32), var(--sf-neutral-90--alfa-32))","light":"rgba(118,119,124,0.32157)","dark":"rgba(227,226,231,0.32157)","desktop":null,"color":[0.4627,0.4667,0.4863,0.3216],"darkColor":[0.8902,0.8863,0.9059,0.3216],"since":null}, +{"name":"--sf-surface-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-neutral-50--alfa-8), var(--sf-neutral-90--alfa-8))","light":"rgba(118,119,124,0.07843)","dark":"rgba(227,226,231,0.07843)","desktop":null,"color":[0.4627,0.4667,0.4863,0.0784],"darkColor":[0.8902,0.8863,0.9059,0.0784],"since":null}, +{"name":"--sf-tabs-border-color","group":"component","source":"component","component":".sf-tabs","summary":"The colour of the divider under the row of tabs; pills, full and vertical tabs have none.","value":"var(--sf-outline-variant)","light":"rgba(118,119,124,0.23922)","dark":"rgba(227,226,231,0.23922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.2392],"darkColor":[0.8902,0.8863,0.9059,0.2392],"since":"2026-10-18"}, +{"name":"--sf-tabs-border-width","group":"component","source":"component","component":".sf-tabs","summary":"The thickness of the divider under the row of tabs; an underline row stays on it.","value":"var(--sf-px)","light":"1px","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tabs-color","group":"component","source":"component","component":".sf-tabs","summary":"The label and icon colour of a tab at rest, in the underline and full appearances; the selected tab keeps its own.","value":"var(--sf-on-surface)","light":"#1a1b1f","dark":"#e3e2e7","desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":"2026-10-18"}, +{"name":"--sf-tabs-gap","group":"component","source":"component","component":".sf-tabs","summary":"Space between tabs; full tabs stay joined.","value":"var(--sf-space-1)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tabs-indicator-color","group":"component","source":"component","component":".sf-tabs","summary":"The colour of the line under the selected tab, in the underline appearance.","value":"var(--sf-outline)","light":"rgba(118,119,124,0.8)","dark":"rgba(144,144,149,0.63922)","desktop":null,"color":[0.4627,0.4667,0.4863,0.8],"darkColor":[0.5647,0.5647,0.5843,0.6392],"since":"2026-10-18"}, +{"name":"--sf-tabs-indicator-width","group":"component","source":"component","component":".sf-tabs","summary":"The thickness of the line under a tab, in the underline appearance; the tab keeps its height.","value":"calc(var(--sf-px) * 2)","light":"calc(1px * 2)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tag-background-color","group":"component","source":"component","component":".sf-tag","summary":"The tag's fill at rest; hover, pressed, selected and disabled keep their own.","value":"var(--sf-surface-container)","light":"rgba(118,119,124,0.16078)","dark":"rgba(227,226,231,0.16078)","desktop":null,"color":[0.4627,0.4667,0.4863,0.1608],"darkColor":[0.8902,0.8863,0.9059,0.1608],"since":"2026-10-18"}, +{"name":"--sf-tag-color","group":"component","source":"component","component":".sf-tag","summary":"The label and count colour at rest; disabled keeps its own.","value":"var(--sf-on-surface)","light":"#1a1b1f","dark":"#e3e2e7","desktop":null,"color":[0.102,0.1059,0.1216,1],"darkColor":[0.8902,0.8863,0.9059,1],"since":"2026-10-18"}, +{"name":"--sf-tag-gap","group":"component","source":"component","component":".sf-tag","summary":"Space between the parts of the tag (every size sets 0: the label's own step spaces it).","value":"var(--sf-a1)","light":"0.0625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tag-padding-block","group":"component","source":"component","component":".sf-tag","summary":"Space above and below the content; an inline tag keeps its host's insets.","value":"var(--sf-ui-1--space-y-tightness-default)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tag-padding-inline","group":"component","source":"component","component":".sf-tag","summary":"Space before and after the content; an inline tag keeps its host's insets.","value":"var(--sf-ui-1--space-x)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tag-radius","group":"component","source":"component","component":".sf-tag","summary":"The corner radius.","value":"var(--sf-radius--ui)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":"2026-10-18"}, +{"name":"--sf-tertiary","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-40), var(--sf-tertiary-80))","light":"#7c4c86","dark":"#ecb3f4","desktop":null,"color":[0.4863,0.298,0.5255,1],"darkColor":[0.9255,0.702,0.9569,1],"since":null}, +{"name":"--sf-tertiary-10","group":"color","source":"core","component":null,"summary":null,"value":"#32053e","light":"#32053e","dark":null,"desktop":null,"color":[0.1961,0.0196,0.2431,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-15","group":"color","source":"core","component":null,"summary":null,"value":"#3e1249","light":"#3e1249","dark":null,"desktop":null,"color":[0.2431,0.0706,0.2863,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-20","group":"color","source":"core","component":null,"summary":null,"value":"#4a1e54","light":"#4a1e54","dark":null,"desktop":null,"color":[0.2902,0.1176,0.3294,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-25","group":"color","source":"core","component":null,"summary":null,"value":"#562960","light":"#562960","dark":null,"desktop":null,"color":[0.3373,0.1608,0.3765,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-30","group":"color","source":"core","component":null,"summary":null,"value":"#63356c","light":"#63356c","dark":null,"desktop":null,"color":[0.3882,0.2078,0.4235,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-35","group":"color","source":"core","component":null,"summary":null,"value":"#6f4079","light":"#6f4079","dark":null,"desktop":null,"color":[0.4353,0.251,0.4745,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-40","group":"color","source":"core","component":null,"summary":null,"value":"#7c4c86","light":"#7c4c86","dark":null,"desktop":null,"color":[0.4863,0.298,0.5255,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-5","group":"color","source":"core","component":null,"summary":null,"value":"#23002d","light":"#23002d","dark":null,"desktop":null,"color":[0.1373,0,0.1765,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50","group":"color","source":"core","component":null,"summary":null,"value":"#9765a0","light":"#9765a0","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.12157)","light":"rgba(151,101,160,0.12157)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.16078)","light":"rgba(151,101,160,0.16078)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.2)","light":"rgba(151,101,160,0.2)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.2],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.23922)","light":"rgba(151,101,160,0.23922)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.27843)","light":"rgba(151,101,160,0.27843)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.32157)","light":"rgba(151,101,160,0.32157)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.03922)","light":"rgba(151,101,160,0.03922)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(151,101,160,0.07843)","light":"rgba(151,101,160,0.07843)","dark":null,"desktop":null,"color":[0.5922,0.3961,0.6275,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-60","group":"color","source":"core","component":null,"summary":null,"value":"#b37ebb","light":"#b37ebb","dark":null,"desktop":null,"color":[0.702,0.4941,0.7333,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-70","group":"color","source":"core","component":null,"summary":null,"value":"#cf98d8","light":"#cf98d8","dark":null,"desktop":null,"color":[0.8118,0.5961,0.8471,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-80","group":"color","source":"core","component":null,"summary":null,"value":"#ecb3f4","light":"#ecb3f4","dark":null,"desktop":null,"color":[0.9255,0.702,0.9569,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-85","group":"color","source":"core","component":null,"summary":null,"value":"#f9c2ff","light":"#f9c2ff","dark":null,"desktop":null,"color":[0.9765,0.7608,1,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-90","group":"color","source":"core","component":null,"summary":null,"value":"#fdd6ff","light":"#fdd6ff","dark":null,"desktop":null,"color":[0.9922,0.8392,1,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(253,214,255,0.12157)","light":"rgba(253,214,255,0.12157)","dark":null,"desktop":null,"color":[0.9922,0.8392,1,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(253,214,255,0.23922)","light":"rgba(253,214,255,0.23922)","dark":null,"desktop":null,"color":[0.9922,0.8392,1,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(253,214,255,0.03922)","light":"rgba(253,214,255,0.03922)","dark":null,"desktop":null,"color":[0.9922,0.8392,1,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(253,214,255,0.07843)","light":"rgba(253,214,255,0.07843)","dark":null,"desktop":null,"color":[0.9922,0.8392,1,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-95","group":"color","source":"core","component":null,"summary":null,"value":"#ffebfd","light":"#ffebfd","dark":null,"desktop":null,"color":[1,0.9216,0.9922,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-98","group":"color","source":"core","component":null,"summary":null,"value":"#fff7fa","light":"#fff7fa","dark":null,"desktop":null,"color":[1,0.9686,0.9804,1],"darkColor":null,"since":null}, +{"name":"--sf-tertiary-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-30), var(--sf-tertiary-90))","light":"#63356c","dark":"#fdd6ff","desktop":null,"color":[0.3882,0.2078,0.4235,1],"darkColor":[0.9922,0.8392,1,1],"since":null}, +{"name":"--sf-tertiary-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-12), var(--sf-tertiary-50--alfa-24))","light":"rgba(151,101,160,0.12157)","dark":"rgba(151,101,160,0.23922)","desktop":null,"color":[0.5922,0.3961,0.6275,0.1216],"darkColor":[0.5922,0.3961,0.6275,0.2392],"since":null}, +{"name":"--sf-tertiary-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-20), var(--sf-tertiary-50--alfa-32))","light":"rgba(151,101,160,0.2)","dark":"rgba(151,101,160,0.32157)","desktop":null,"color":[0.5922,0.3961,0.6275,0.2],"darkColor":[0.5922,0.3961,0.6275,0.3216],"since":null}, +{"name":"--sf-tertiary-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-16), var(--sf-tertiary-50--alfa-28))","light":"rgba(151,101,160,0.16078)","dark":"rgba(151,101,160,0.27843)","desktop":null,"color":[0.5922,0.3961,0.6275,0.1608],"darkColor":[0.5922,0.3961,0.6275,0.2784],"since":null}, +{"name":"--sf-tertiary-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-35), var(--sf-tertiary-85))","light":"#6f4079","dark":"#f9c2ff","desktop":null,"color":[0.4353,0.251,0.4745,1],"darkColor":[0.9765,0.7608,1,1],"since":null}, +{"name":"--sf-tertiary-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-12), var(--sf-tertiary-90--alfa-12))","light":"rgba(151,101,160,0.12157)","dark":"rgba(253,214,255,0.12157)","desktop":null,"color":[0.5922,0.3961,0.6275,0.1216],"darkColor":[0.9922,0.8392,1,0.1216],"since":null}, +{"name":"--sf-tertiary-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-4), var(--sf-tertiary-90--alfa-4))","light":"rgba(151,101,160,0.03922)","dark":"rgba(253,214,255,0.03922)","desktop":null,"color":[0.5922,0.3961,0.6275,0.0392],"darkColor":[0.9922,0.8392,1,0.0392],"since":null}, +{"name":"--sf-tertiary-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-24), var(--sf-tertiary-90--alfa-24))","light":"rgba(151,101,160,0.23922)","dark":"rgba(253,214,255,0.23922)","desktop":null,"color":[0.5922,0.3961,0.6275,0.2392],"darkColor":[0.9922,0.8392,1,0.2392],"since":null}, +{"name":"--sf-tertiary-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-tertiary-50--alfa-8), var(--sf-tertiary-90--alfa-8))","light":"rgba(151,101,160,0.07843)","dark":"rgba(253,214,255,0.07843)","desktop":null,"color":[0.5922,0.3961,0.6275,0.0784],"darkColor":[0.9922,0.8392,1,0.0784],"since":null}, +{"name":"--sf-text--family","group":"typography","source":"core","component":null,"summary":null,"value":"\"Inter Variable\", \"Inter Fallback\", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, \"Segoe UI\", sans-serif","light":"\"Inter Variable\", \"Inter Fallback\", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, \"Segoe UI\", sans-serif","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-1","group":"typography","source":"core","component":null,"summary":null,"value":"100","light":"100","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-2","group":"typography","source":"core","component":null,"summary":null,"value":"200","light":"200","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-3","group":"typography","source":"core","component":null,"summary":null,"value":"300","light":"300","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-4","group":"typography","source":"core","component":null,"summary":null,"value":"400","light":"400","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-5","group":"typography","source":"core","component":null,"summary":null,"value":"500","light":"500","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-6","group":"typography","source":"core","component":null,"summary":null,"value":"600","light":"600","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-7","group":"typography","source":"core","component":null,"summary":null,"value":"700","light":"700","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-8","group":"typography","source":"core","component":null,"summary":null,"value":"800","light":"800","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--font-weight-9","group":"typography","source":"core","component":null,"summary":null,"value":"900","light":"900","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1)","light":"1.25rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-1","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-1\\/2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-1\\/3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-1\\/4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-10","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d5)","light":"3.75rem","dark":null,"desktop":"6rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-11","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d6)","light":"4rem","dark":null,"desktop":"6.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-12","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d8)","light":"4.5rem","dark":null,"desktop":"7.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c4)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c8)","light":"2.25rem","dark":null,"desktop":"3.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d0)","light":"2.5rem","dark":null,"desktop":"3.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-8","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d2)","light":"3rem","dark":null,"desktop":"4.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--height-9","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d3)","light":"3.25rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--line-height-loose","group":"typography","source":"core","component":null,"summary":null,"value":"2","light":"2","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--line-height-none","group":"typography","source":"core","component":null,"summary":null,"value":"1","light":"1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--line-height-normal","group":"typography","source":"core","component":null,"summary":null,"value":"1.5","light":"1.5","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--line-height-relaxed","group":"typography","source":"core","component":null,"summary":null,"value":"1.625","light":"1.625","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--line-height-snug","group":"typography","source":"core","component":null,"summary":null,"value":"1.375","light":"1.375","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--line-height-tight","group":"typography","source":"core","component":null,"summary":null,"value":"1.25","light":"1.25","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--margin","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-space-1)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--measure","group":"typography","source":"core","component":null,"summary":null,"value":"65ch","light":"65ch","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--measure-narrow","group":"typography","source":"core","component":null,"summary":null,"value":"45ch","light":"45ch","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--measure-wide","group":"typography","source":"core","component":null,"summary":null,"value":"80ch","light":"80ch","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1\\/2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":"0.875rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1\\/3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1\\/4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1\\/5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1\\/6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-1\\/7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-10","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d0)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-11","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d1)","light":"2.75rem","dark":null,"desktop":"4.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-12","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d2)","light":"3rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b8)","light":"1.125rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c1)","light":"1.375rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c4)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-8","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--size-9","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c8)","light":"2.25rem","dark":null,"desktop":"3.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--space-bottom","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-content--space-text)","light":"0.75rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--style","group":"typography","source":"core","component":null,"summary":null,"value":"inherit","light":"inherit","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking","group":"typography","source":"core","component":null,"summary":null,"value":"inherit","light":"inherit","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking-no-tracking","group":"typography","source":"core","component":null,"summary":null,"value":"0em","light":"0em","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking-tight","group":"typography","source":"core","component":null,"summary":null,"value":"-0.025em","light":"-0.025em","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking-tighter","group":"typography","source":"core","component":null,"summary":null,"value":"-0.05em","light":"-0.05em","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking-wide","group":"typography","source":"core","component":null,"summary":null,"value":"0.025em","light":"0.025em","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking-wider","group":"typography","source":"core","component":null,"summary":null,"value":"0.05em","light":"0.05em","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--tracking-widest","group":"typography","source":"core","component":null,"summary":null,"value":"0.1em","light":"0.1em","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text--weight","group":"typography","source":"core","component":null,"summary":null,"value":"400","light":"400","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-1","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1)","light":"1.25rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-1\\/2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1\\/2)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-1\\/3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1\\/3)","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-1\\/4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1\\/4)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-10","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-10)","light":"3.75rem","dark":null,"desktop":"6rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-11","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-11)","light":"4rem","dark":null,"desktop":"6.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-12","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-12)","light":"4.5rem","dark":null,"desktop":"7.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-2)","light":"1.5rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-3)","light":"1.5rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-4)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-5)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-6)","light":"2.25rem","dark":null,"desktop":"3.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-7)","light":"2.5rem","dark":null,"desktop":"3.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-8","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-8)","light":"3rem","dark":null,"desktop":"4.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-height-9","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-9)","light":"3.25rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-large--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-2)","light":"1.5rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-large--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-2)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-medium--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1)","light":"1.25rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-medium--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1\\/2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/2)","light":"0.75rem","dark":null,"desktop":"0.875rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1\\/3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/3)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1\\/4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/4)","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1\\/5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/5)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1\\/6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/6)","light":"0.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-1\\/7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/7)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-10","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-10)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-11","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-11)","light":"2.75rem","dark":null,"desktop":"4.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-12","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-12)","light":"3rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-2)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-3)","light":"1.125rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-4)","light":"1.25rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-5)","light":"1.375rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-6)","light":"1.5rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-7)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-8","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-8)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-size-9","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-9)","light":"2.25rem","dark":null,"desktop":"3.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-small--height","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--height-1\\/2)","light":"1rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-text-small--size","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-text--size-1\\/2)","light":"0.75rem","dark":null,"desktop":"0.875rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-1","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":"1.125rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-10","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d2)","light":"3rem","dark":null,"desktop":"4.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-11","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d3)","light":"3.25rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-12","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d4)","light":"3.5rem","dark":null,"desktop":"6rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-b8)","light":"1.125rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c2)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c3)","light":"1.625rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c4)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c6)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-8","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-c8)","light":"2.25rem","dark":null,"desktop":"3.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title--height-9","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-d0)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-1","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-1)","light":"1rem","dark":null,"desktop":"1.125rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-10","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-10)","light":"3rem","dark":null,"desktop":"4.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-11","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-11)","light":"3.25rem","dark":null,"desktop":"5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-12","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-12)","light":"3.5rem","dark":null,"desktop":"6rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-2","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-2)","light":"1.125rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-3","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-3)","light":"1.25rem","dark":null,"desktop":"1.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-4","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-4)","light":"1.5rem","dark":null,"desktop":"2rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-5","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-5)","light":"1.625rem","dark":null,"desktop":"2.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-6","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-6)","light":"1.75rem","dark":null,"desktop":"2.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-7","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-7)","light":"2rem","dark":null,"desktop":"3rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-8","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-8)","light":"2.25rem","dark":null,"desktop":"3.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-title-height-9","group":"typography","source":"core","component":null,"summary":null,"value":"var(--sf-title--height-9)","light":"2.5rem","dark":null,"desktop":"4rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-transition--delay","group":"motion","source":"core","component":null,"summary":null,"value":"0ms","light":"0ms","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-transition--duration","group":"motion","source":"core","component":null,"summary":null,"value":"300ms","light":"300ms","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-transition--property","group":"motion","source":"core","component":null,"summary":null,"value":"all","light":"all","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-transition--timing-function","group":"motion","source":"core","component":null,"summary":null,"value":"ease-in","light":"ease-in","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-transparent","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,255,255,0)","light":"rgba(255,255,255,0)","dark":null,"desktop":null,"color":[1,1,1,0],"darkColor":null,"since":null}, +{"name":"--sf-transparent-for-focus","group":"color","source":"core","component":null,"summary":null,"value":"var(--sf-transparent)","light":"rgba(255,255,255,0)","dark":null,"desktop":null,"color":[1,1,1,0],"darkColor":null,"since":null}, +{"name":"--sf-ui-1--control-height","group":"control","source":"core","component":null,"summary":null,"value":"calc(var(--sf-text--height-1) + 2 * var(--sf-ui-1--space-y-tightness-default))","light":"calc(1.25rem + 2 * 0.5rem)","dark":null,"desktop":"calc(1.5rem + 2 * 0.5rem)","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--space-y","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":"0.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--space-y-tightness-default","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--space-y-tightness-high","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--space-y-tightness-highest","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b6)","light":"1rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--space-y-tightness-low","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1--text-space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":"0.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--control-height","group":"control","source":"core","component":null,"summary":null,"value":"calc(var(--sf-text--height-1\\/2) + 2 * var(--sf-ui-1\\/2--space-y-tightness-default))","light":"calc(1rem + 2 * 0.375rem)","dark":null,"desktop":"calc(1.25rem + 2 * 0.375rem)","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b2)","light":"0.75rem","dark":null,"desktop":"0.875rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--space-y","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--space-y-tightness-default","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--space-y-tightness-high","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--space-y-tightness-highest","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--space-y-tightness-low","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/2--text-space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":"0.4375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--control-height","group":"control","source":"core","component":null,"summary":null,"value":"calc(var(--sf-text--height-1\\/3) + 2 * var(--sf-ui-1\\/3--space-y-tightness-default))","light":"calc(1rem + 2 * 0.25rem)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":"0.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--space-y","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--space-y-tightness-default","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a4)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--space-y-tightness-high","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":"0.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--space-y-tightness-highest","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":"0.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--space-y-tightness-low","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a2)","light":"0.125rem","dark":null,"desktop":"0.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-1\\/3--text-space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a5)","light":"0.3125rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--control-height","group":"control","source":"core","component":null,"summary":null,"value":"calc(var(--sf-text--height-2) + 2 * var(--sf-ui-2--space-y-tightness-default))","light":"calc(1.5rem + 2 * 0.625rem)","dark":null,"desktop":"calc(1.75rem + 2 * 0.625rem)","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b8)","light":"1.125rem","dark":null,"desktop":"1.25rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--space-y","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":"0.625rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--space-y-tightness-default","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--space-y-tightness-high","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--space-y-tightness-highest","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--space-y-tightness-low","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-2--text-space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a8)","light":"0.5rem","dark":null,"desktop":"0.625rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--control-height","group":"control","source":"core","component":null,"summary":null,"value":"calc(var(--sf-text--height-3) + 2 * var(--sf-ui-3--space-y-tightness-default))","light":"calc(1.5rem + 2 * 0.875rem)","dark":null,"desktop":"calc(2.25rem + 2 * 0.625rem)","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-c1)","light":"1.375rem","dark":null,"desktop":"1.5rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--space-y","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-a6)","light":"0.375rem","dark":null,"desktop":"0.625rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--space-y-tightness-default","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b4)","light":"0.875rem","dark":null,"desktop":"0.625rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--space-y-tightness-high","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-c0)","light":"1.25rem","dark":null,"desktop":"1rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--space-y-tightness-highest","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-c3)","light":"1.625rem","dark":null,"desktop":"1.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--space-y-tightness-low","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":"0.375rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-3--text-space-x","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-b0)","light":"0.625rem","dark":null,"desktop":"0.75rem","color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-blur-large","group":"control","source":"core","component":null,"summary":null,"value":"blur(var(--sf-blur-large))","light":"blur(0.5rem)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-blur-medium","group":"control","source":"core","component":null,"summary":null,"value":"blur(var(--sf-blur-medium))","light":"blur(0.25rem)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-blur-small","group":"control","source":"core","component":null,"summary":null,"value":"blur(var(--sf-blur-small))","light":"blur(0.125rem)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-blur-surface-overlay","group":"control","source":"core","component":null,"summary":null,"value":"blur(var(--sf-surface-overlay--blur))","light":"blur(4rem)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-focus","group":"control","source":"core","component":null,"summary":null,"value":"0 0 0 var(--sf-focus-outline-width) var(--sf-focus)","light":"0 0 0 calc(1px * 2) #0073ed","dark":"0 0 0 calc(1px * 2) #d7e2ff","desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-focus-inset","group":"control","source":"core","component":null,"summary":null,"value":"inset 0 0 0 var(--sf-focus-outline-width) var(--sf-focus)","light":"inset 0 0 0 calc(1px * 2) #0073ed","dark":"inset 0 0 0 calc(1px * 2) #d7e2ff","desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-radius-default","group":"control","source":"core","component":null,"summary":null,"value":"var(--sf-radius--ui)","light":"0.25rem","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-shadow-1","group":"control","source":"core","component":null,"summary":null,"value":"0 var(--sf-a2) var(--sf-a4) var(--sf-px) var(--sf-shadow--color-shading), 0 var(--sf-px) var(--sf-a3) 0 var(--sf-shadow--color-outline), 0 var(--sf-a2) var(--sf-a2) calc(-1 * var(--sf-px)) var(--sf-shadow--color-fill)","light":"0 0.125rem 0.25rem 1px color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 1px 0.1875rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 0.125rem 0.125rem calc(-1 * 1px) color-mix(in srgb, rgba(255,255,255,0), #000000 24%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-shadow-2","group":"control","source":"core","component":null,"summary":null,"value":"0 var(--sf-a4) var(--sf-a8) var(--sf-a2) var(--sf-shadow--color-shading), 0 var(--sf-a2) var(--sf-a6) 0 var(--sf-shadow--color-outline), 0 var(--sf-a4) var(--sf-a4) calc(-1 * var(--sf-a2)) var(--sf-shadow--color-fill)","light":"0 0.25rem 0.5rem 0.125rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 0.125rem 0.375rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 0.25rem 0.25rem calc(-1 * 0.125rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-shadow-3","group":"control","source":"core","component":null,"summary":null,"value":"0 var(--sf-a8) var(--sf-b6) var(--sf-a4) var(--sf-shadow--color-shading), 0 var(--sf-a4) var(--sf-b2) 0 var(--sf-shadow--color-outline), 0 var(--sf-a8) var(--sf-a8) calc(-1 * var(--sf-a4)) var(--sf-shadow--color-fill)","light":"0 0.5rem 1rem 0.25rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 0.25rem 0.75rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 0.5rem 0.5rem calc(-1 * 0.25rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-shadow-4","group":"control","source":"core","component":null,"summary":null,"value":"0 var(--sf-b6) var(--sf-c6) var(--sf-a4) var(--sf-shadow--color-shading), 0 var(--sf-a8) var(--sf-c2) 0 var(--sf-shadow--color-outline), 0 var(--sf-b6) var(--sf-b6) calc(-1 * var(--sf-a8)) var(--sf-shadow--color-fill)","light":"0 1rem 2rem 0.25rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 0.5rem 1.5rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 1rem 1rem calc(-1 * 0.5rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-shadow-5","group":"control","source":"core","component":null,"summary":null,"value":"0 var(--sf-c6) var(--sf-d6) var(--sf-a8) var(--sf-shadow--color-shading), 0 var(--sf-b6) var(--sf-d2) 0 var(--sf-shadow--color-outline), 0 var(--sf-c6) var(--sf-c6) calc(-1 * var(--sf-b6)) var(--sf-shadow--color-fill)","light":"0 2rem 4rem 0.5rem color-mix(in srgb, rgba(255,255,255,0), #000000 8%), 0 1rem 3rem 0 color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 2rem 2rem calc(-1 * 1rem) color-mix(in srgb, rgba(255,255,255,0), #000000 24%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-shadow-top","group":"control","source":"core","component":null,"summary":null,"value":"0 0 var(--sf-px) 0 var(--sf-shadow--color-fill), 0 calc(-1 * var(--sf-a4)) var(--sf-b0) var(--sf-a4) var(--sf-shadow--color-outline), 0 calc(-1 * var(--sf-a2)) var(--sf-a3) var(--sf-px) var(--sf-shadow--color-shading)","light":"0 0 1px 0 color-mix(in srgb, rgba(255,255,255,0), #000000 24%), 0 calc(-1 * 0.25rem) 0.625rem 0.25rem color-mix(in srgb, rgba(255,255,255,0), #000000 12%), 0 calc(-1 * 0.125rem) 0.1875rem 1px color-mix(in srgb, rgba(255,255,255,0), #000000 8%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-ui-skeleton","group":"control","source":"core","component":null,"summary":null,"value":"linear-gradient(180deg, var(--sf-neutral-80--alfa-48) 0%, var(--sf-neutral-60--alfa-48) 100%)","light":"linear-gradient(180deg, rgba(198,198,203,0.47843) 0%, rgba(144,144,149,0.47843) 100%)","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-viewport-height-dynamic","group":"layout","source":"core","component":null,"summary":null,"value":"100dvh","light":"100dvh","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-viewport-height-large","group":"layout","source":"core","component":null,"summary":null,"value":"100lvh","light":"100lvh","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-viewport-height-small","group":"layout","source":"core","component":null,"summary":null,"value":"100svh","light":"100svh","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-viewport-width-dynamic","group":"layout","source":"core","component":null,"summary":null,"value":"100dvw","light":"100dvw","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-viewport-width-large","group":"layout","source":"core","component":null,"summary":null,"value":"100lvw","light":"100lvw","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-viewport-width-small","group":"layout","source":"core","component":null,"summary":null,"value":"100svw","light":"100svw","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-warning","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-40), var(--sf-warning-80))","light":"#8f4e00","dark":"#ffb779","desktop":null,"color":[0.5608,0.3059,0,1],"darkColor":[1,0.7176,0.4745,1],"since":null}, +{"name":"--sf-warning-10","group":"color","source":"core","component":null,"summary":null,"value":"#2e1500","light":"#2e1500","dark":null,"desktop":null,"color":[0.1804,0.0824,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-15","group":"color","source":"core","component":null,"summary":null,"value":"#3d1e00","light":"#3d1e00","dark":null,"desktop":null,"color":[0.2392,0.1176,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-20","group":"color","source":"core","component":null,"summary":null,"value":"#4c2700","light":"#4c2700","dark":null,"desktop":null,"color":[0.298,0.1529,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-25","group":"color","source":"core","component":null,"summary":null,"value":"#5c3000","light":"#5c3000","dark":null,"desktop":null,"color":[0.3608,0.1882,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-30","group":"color","source":"core","component":null,"summary":null,"value":"#6c3a00","light":"#6c3a00","dark":null,"desktop":null,"color":[0.4235,0.2275,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-35","group":"color","source":"core","component":null,"summary":null,"value":"#7d4400","light":"#7d4400","dark":null,"desktop":null,"color":[0.4902,0.2667,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-40","group":"color","source":"core","component":null,"summary":null,"value":"#8f4e00","light":"#8f4e00","dark":null,"desktop":null,"color":[0.5608,0.3059,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-5","group":"color","source":"core","component":null,"summary":null,"value":"#1f0c00","light":"#1f0c00","dark":null,"desktop":null,"color":[0.1216,0.0471,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-50","group":"color","source":"core","component":null,"summary":null,"value":"#b26300","light":"#b26300","dark":null,"desktop":null,"color":[0.698,0.3882,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.12157)","light":"rgba(178,99,0,0.12157)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-16","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.16078)","light":"rgba(178,99,0,0.16078)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.1608],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-20","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.2)","light":"rgba(178,99,0,0.2)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.2],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.23922)","light":"rgba(178,99,0,0.23922)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-28","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.27843)","light":"rgba(178,99,0,0.27843)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.2784],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-32","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.32157)","light":"rgba(178,99,0,0.32157)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.3216],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.03922)","light":"rgba(178,99,0,0.03922)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-warning-50--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(178,99,0,0.07843)","light":"rgba(178,99,0,0.07843)","dark":null,"desktop":null,"color":[0.698,0.3882,0,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-warning-60","group":"color","source":"core","component":null,"summary":null,"value":"#d87900","light":"#d87900","dark":null,"desktop":null,"color":[0.8471,0.4745,0,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-70","group":"color","source":"core","component":null,"summary":null,"value":"#fa911c","light":"#fa911c","dark":null,"desktop":null,"color":[0.9804,0.5686,0.1098,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-80","group":"color","source":"core","component":null,"summary":null,"value":"#ffb779","light":"#ffb779","dark":null,"desktop":null,"color":[1,0.7176,0.4745,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-85","group":"color","source":"core","component":null,"summary":null,"value":"#ffca9f","light":"#ffca9f","dark":null,"desktop":null,"color":[1,0.7922,0.6235,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-90","group":"color","source":"core","component":null,"summary":null,"value":"#ffdcc1","light":"#ffdcc1","dark":null,"desktop":null,"color":[1,0.8627,0.7569,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-90--alfa-12","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,220,193,0.12157)","light":"rgba(255,220,193,0.12157)","dark":null,"desktop":null,"color":[1,0.8627,0.7569,0.1216],"darkColor":null,"since":null}, +{"name":"--sf-warning-90--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,220,193,0.23922)","light":"rgba(255,220,193,0.23922)","dark":null,"desktop":null,"color":[1,0.8627,0.7569,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-warning-90--alfa-4","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,220,193,0.03922)","light":"rgba(255,220,193,0.03922)","dark":null,"desktop":null,"color":[1,0.8627,0.7569,0.0392],"darkColor":null,"since":null}, +{"name":"--sf-warning-90--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,220,193,0.07843)","light":"rgba(255,220,193,0.07843)","dark":null,"desktop":null,"color":[1,0.8627,0.7569,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-warning-95","group":"color","source":"core","component":null,"summary":null,"value":"#ffeee2","light":"#ffeee2","dark":null,"desktop":null,"color":[1,0.9333,0.8863,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-98","group":"color","source":"core","component":null,"summary":null,"value":"#fff8f5","light":"#fff8f5","dark":null,"desktop":null,"color":[1,0.9725,0.9608,1],"darkColor":null,"since":null}, +{"name":"--sf-warning-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-30), var(--sf-warning-90))","light":"#6c3a00","dark":"#ffdcc1","desktop":null,"color":[0.4235,0.2275,0,1],"darkColor":[1,0.8627,0.7569,1],"since":null}, +{"name":"--sf-warning-container","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-12), var(--sf-warning-50--alfa-24))","light":"rgba(178,99,0,0.12157)","dark":"rgba(178,99,0,0.23922)","desktop":null,"color":[0.698,0.3882,0,0.1216],"darkColor":[0.698,0.3882,0,0.2392],"since":null}, +{"name":"--sf-warning-container-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-20), var(--sf-warning-50--alfa-32))","light":"rgba(178,99,0,0.2)","dark":"rgba(178,99,0,0.32157)","desktop":null,"color":[0.698,0.3882,0,0.2],"darkColor":[0.698,0.3882,0,0.3216],"since":null}, +{"name":"--sf-warning-container-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-16), var(--sf-warning-50--alfa-28))","light":"rgba(178,99,0,0.16078)","dark":"rgba(178,99,0,0.27843)","desktop":null,"color":[0.698,0.3882,0,0.1608],"darkColor":[0.698,0.3882,0,0.2784],"since":null}, +{"name":"--sf-warning-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-35), var(--sf-warning-85))","light":"#7d4400","dark":"#ffca9f","desktop":null,"color":[0.4902,0.2667,0,1],"darkColor":[1,0.7922,0.6235,1],"since":null}, +{"name":"--sf-warning-transparent-active","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-12), var(--sf-warning-90--alfa-12))","light":"rgba(178,99,0,0.12157)","dark":"rgba(255,220,193,0.12157)","desktop":null,"color":[0.698,0.3882,0,0.1216],"darkColor":[1,0.8627,0.7569,0.1216],"since":null}, +{"name":"--sf-warning-transparent-hover","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-4), var(--sf-warning-90--alfa-4))","light":"rgba(178,99,0,0.03922)","dark":"rgba(255,220,193,0.03922)","desktop":null,"color":[0.698,0.3882,0,0.0392],"darkColor":[1,0.8627,0.7569,0.0392],"since":null}, +{"name":"--sf-warning-transparent-overlay","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-24), var(--sf-warning-90--alfa-24))","light":"rgba(178,99,0,0.23922)","dark":"rgba(255,220,193,0.23922)","desktop":null,"color":[0.698,0.3882,0,0.2392],"darkColor":[1,0.8627,0.7569,0.2392],"since":null}, +{"name":"--sf-warning-transparent-select","group":"color","source":"core","component":null,"summary":null,"value":"light-dark(var(--sf-warning-50--alfa-8), var(--sf-warning-90--alfa-8))","light":"rgba(178,99,0,0.07843)","dark":"rgba(255,220,193,0.07843)","desktop":null,"color":[0.698,0.3882,0,0.0784],"darkColor":[1,0.8627,0.7569,0.0784],"since":null}, +{"name":"--sf-weight--black","group":"typography","source":"core","component":null,"summary":null,"value":"900","light":"900","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--bold","group":"typography","source":"core","component":null,"summary":null,"value":"700","light":"700","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--extra-bold","group":"typography","source":"core","component":null,"summary":null,"value":"800","light":"800","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--extra-light","group":"typography","source":"core","component":null,"summary":null,"value":"200","light":"200","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--light","group":"typography","source":"core","component":null,"summary":null,"value":"300","light":"300","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--medium","group":"typography","source":"core","component":null,"summary":null,"value":"500","light":"500","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--regular","group":"typography","source":"core","component":null,"summary":null,"value":"400","light":"400","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--semi-bold","group":"typography","source":"core","component":null,"summary":null,"value":"600","light":"600","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-weight--thin","group":"typography","source":"core","component":null,"summary":null,"value":"100","light":"100","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-white","group":"color","source":"core","component":null,"summary":null,"value":"#ffffff","light":"#ffffff","dark":null,"desktop":null,"color":[1,1,1,1],"darkColor":null,"since":null}, +{"name":"--sf-white--alfa-24","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,255,255,0.23922)","light":"rgba(255,255,255,0.23922)","dark":null,"desktop":null,"color":[1,1,1,0.2392],"darkColor":null,"since":null}, +{"name":"--sf-white--alfa-8","group":"color","source":"core","component":null,"summary":null,"value":"rgba(255,255,255,0.07843)","light":"rgba(255,255,255,0.07843)","dark":null,"desktop":null,"color":[1,1,1,0.0784],"darkColor":null,"since":null}, +{"name":"--sf-z-index--1","group":"z-index","source":"core","component":null,"summary":null,"value":"-1","light":"-1","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-0","group":"z-index","source":"core","component":null,"summary":null,"value":"0","light":"0","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-1","group":"z-index","source":"core","component":null,"summary":null,"value":"10","light":"10","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-2","group":"z-index","source":"core","component":null,"summary":null,"value":"20","light":"20","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-3","group":"z-index","source":"core","component":null,"summary":null,"value":"30","light":"30","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-4","group":"z-index","source":"core","component":null,"summary":null,"value":"40","light":"40","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-5","group":"z-index","source":"core","component":null,"summary":null,"value":"50","light":"50","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-6","group":"z-index","source":"core","component":null,"summary":null,"value":"60","light":"60","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-7","group":"z-index","source":"core","component":null,"summary":null,"value":"70","light":"70","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-8","group":"z-index","source":"core","component":null,"summary":null,"value":"80","light":"80","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null}, +{"name":"--sf-z-index-9","group":"z-index","source":"core","component":null,"summary":null,"value":"90","light":"90","dark":null,"desktop":null,"color":null,"darkColor":null,"since":null} +] +} diff --git a/images/icon.png b/images/icon.png new file mode 100644 index 0000000..94d522e Binary files /dev/null and b/images/icon.png differ diff --git a/images/icon.svg b/images/icon.svg new file mode 100644 index 0000000..fb5add2 --- /dev/null +++ b/images/icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/package-lock.json b/package-lock.json index d88d7a8..ae40dc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,24 @@ { "name": "sf-vscode", - "version": "0.0.1", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sf-vscode", - "version": "0.0.1", + "version": "0.1.0", "license": "MIT", "devDependencies": { "@eslint/js": "^9.16.0", - "@types/glob": "^8.1.0", "@types/mocha": "^10.0.10", "@types/node": "^22.10.1", "@types/vscode": "^1.95.0", + "@vscode/test-electron": "^3.1.0", + "@vscode/vsce": "^4.0.0", "eslint": "^8.57.1", + "glob": "^13.0.6", "globals": "^15.13.0", + "mocha": "^12.0.3", "typescript": "^5.7.2", "typescript-eslint": "^8.17.0" }, @@ -23,10 +26,199 @@ "vscode": "^1.95.0" } }, + "node_modules/@azure/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.11.0.tgz", + "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.11.1.tgz", + "integrity": "sha512-2QygG2F76ZpMP2eMztiJvAiFMu71M9rDeU7vO/QKg5Css7MgM4frUOslFjhVjRhbGaCNPtz/S8M6y46/fFKVuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-process": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@azure/core-process/-/core-process-1.0.0.tgz", + "integrity": "sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", + "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.4.0.tgz", + "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.14.0.tgz", + "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.14.0.tgz", + "integrity": "sha512-8utCLdTZn14CiAe0HW4JbtzUMsc0mdDwnjUvStFMrR4IxQP8S2eL9zVAdplpfORVJGYmidZElpeXRYjJQ4UyUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-process": "^1.0.0", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^5.5.0", + "@azure/msal-node": "^6.0.0", + "open": "^11.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.4.0.tgz", + "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.25.1.tgz", + "integrity": "sha512-NDW2/bz2Pz71EJAlhSw+jg1kpRIWtrzj0gCzcHuG1u7iLvSOHpUc5lICkDA9x0bbeityxTneiunSBluvS+/y4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.14.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "16.14.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.14.2.tgz", + "integrity": "sha512-HOBR0Gfo39TMrkxNG8k6cfjRkrRjXZc3JQs3ebMWQc9S4cihuknMYra3sgmzbZB752oQBqBN9+WF7c826p2vIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-6.0.1.tgz", + "integrity": "sha512-ixSO1Y/kCVRthRs+hSx/5qkwaunX1/RAePhlMN0wIpIQ4WEZ6AREGGnGd1AP0qspHVsAwzWQKGubpjh50JyJIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.14.1", + "jsonwebtoken": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.14.1.tgz", + "integrity": "sha512-Or6xhPNyi4zHW25158yxBoyxuCqNSPa5YBVqfF1J5Ks4MJWBo/USXdp05DQIPu1Zli00YZu6t0+h6KvHJealxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", "dev": true, "license": "MIT", "dependencies": { @@ -43,9 +235,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -140,6 +332,253 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@napi-rs/keyring": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring/-/keyring-1.3.0.tgz", + "integrity": "sha512-WrOw/bcXm0f9qHkumlT1QlArXSTWqaY9sunsDpOk+yCCorCKMxvWT/a3xko4EYHVdeZoh00yI2TydXn6eyICDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/keyring-darwin-arm64": "1.3.0", + "@napi-rs/keyring-darwin-x64": "1.3.0", + "@napi-rs/keyring-freebsd-x64": "1.3.0", + "@napi-rs/keyring-linux-arm-gnueabihf": "1.3.0", + "@napi-rs/keyring-linux-arm64-gnu": "1.3.0", + "@napi-rs/keyring-linux-arm64-musl": "1.3.0", + "@napi-rs/keyring-linux-riscv64-gnu": "1.3.0", + "@napi-rs/keyring-linux-x64-gnu": "1.3.0", + "@napi-rs/keyring-linux-x64-musl": "1.3.0", + "@napi-rs/keyring-win32-arm64-msvc": "1.3.0", + "@napi-rs/keyring-win32-ia32-msvc": "1.3.0", + "@napi-rs/keyring-win32-x64-msvc": "1.3.0" + } + }, + "node_modules/@napi-rs/keyring-darwin-arm64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-darwin-arm64/-/keyring-darwin-arm64-1.3.0.tgz", + "integrity": "sha512-pl76hJvdYUBn6I24bXiOBMA9nbDapo3I5B+f3OorjDU4dUMSypXeKbOVehJe8fhgTiH24flMyTS3aAIy43xegQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-darwin-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-darwin-x64/-/keyring-darwin-x64-1.3.0.tgz", + "integrity": "sha512-YcJtEV5LA3cvA4z3BurgxH5IhTsW1JfIvcAAcqcecwk06Si9F9NqkxbZVIfDwQ8oRHgaBmT3zZJnLAotCrVahw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-freebsd-x64": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-freebsd-x64/-/keyring-freebsd-x64-1.3.0.tgz", + "integrity": "sha512-vlLf31TGhfRAaxLDBhg8b89ss0HHD/lyNmL5F3UjSaz5CUXElsJmKYq9fqA/B+cZKUEUcLHHGhF0I/CqcFdaVw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-arm-gnueabihf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-arm-gnueabihf/-/keyring-linux-arm-gnueabihf-1.3.0.tgz", + "integrity": "sha512-KiWdMMu/Inz/bHHIAGrnF7r54FZDYXuHO6UFF/rhIrshUsxbMG1Rl9lEymNtqqsVo927G0VYcb02FzWQ3iBQRQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-arm64-gnu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-arm64-gnu/-/keyring-linux-arm64-gnu-1.3.0.tgz", + "integrity": "sha512-eyKGpY40lm9Jvs1aD294XRH4y7+TlJM0YVAryZeXA6TX0mb4gMkxVXwSQv7MCwgah7raeUd0dKUb4BPAYIgcMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-arm64-musl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-arm64-musl/-/keyring-linux-arm64-musl-1.3.0.tgz", + "integrity": "sha512-iIK6JWHXAJqDrEyLY3TmswwloVyt2vj+04TZnew+uSJ9gnDO8EwRbp3/iw3LpWaXiDO7VomGO6y8I0Id8uBZSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-riscv64-gnu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-riscv64-gnu/-/keyring-linux-riscv64-gnu-1.3.0.tgz", + "integrity": "sha512-/PGqrwn6EwgtK6vccASSXJRfOSP4vN1F4ASsIQ+7MdrK6hNvAJ1FZPrIuD5gGGdxezo3F++To2Wq7DbuGIeuNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-x64-gnu": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-x64-gnu/-/keyring-linux-x64-gnu-1.3.0.tgz", + "integrity": "sha512-2PDK1WKWTu9lBGq9VvNEkSlQD3O7YwVpmnyN2M3cy4v7NJ/8gDMd9GXv3G+FVXN13uhp4gnnPBS+ScefmEeD2A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-linux-x64-musl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-linux-x64-musl/-/keyring-linux-x64-musl-1.3.0.tgz", + "integrity": "sha512-oJ2HkX8YUo46QBkn0pG+HuIKQNqr523q6vBobCn+P95s4C4K6/kLBqHY/1bg5J4ap31DzsznhnFKcfBNBsjCnw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-win32-arm64-msvc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-win32-arm64-msvc/-/keyring-win32-arm64-msvc-1.3.0.tgz", + "integrity": "sha512-tOd3c/uAaeoE4ycVlmAdSvygz0Zt3zdca6Y7gokBeIbaRDWpjDIUOpU3MvML59XAaqyuKGsVVu0F/DZb1lHPmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-win32-ia32-msvc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-win32-ia32-msvc/-/keyring-win32-ia32-msvc-1.3.0.tgz", + "integrity": "sha512-sPSqeAFZMGqP1R++M2JTza7GQJJ/TpCo6JU6Vcd4jnebvOaEDs9b7eipakU1PJdSvhpC2yXMCNRk9gXfrhuwHQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/keyring-win32-x64-msvc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@napi-rs/keyring-win32-x64-msvc/-/keyring-win32-x64-msvc-1.3.0.tgz", + "integrity": "sha512-4DnCWXwDc0HRKwyRlG5y0VhKZW2tNRQfKKfyj6IX/KWfDNyq9hn4n+GL1auyDcOO/v8PwnhmYo2+rOOqCkvvOg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -178,24 +617,76 @@ "node": ">= 8" } }, - "node_modules/@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "node_modules/@secretlint/core": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz", + "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==", "dev": true, "license": "MIT", "dependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" + "@secretlint/profiler": "^10.2.2", + "@secretlint/types": "^10.2.2", + "debug": "^4.4.1", + "structured-source": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "node_modules/@secretlint/profiler": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz", + "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==", "dev": true, "license": "MIT" }, + "node_modules/@secretlint/secretlint-rule-no-dotenv": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz", + "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/secretlint-rule-preset-recommend": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz", + "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/source-creator": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz", + "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.2.2", + "istextorbinary": "^9.5.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/types": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz", + "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", @@ -221,21 +712,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", - "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.72.0.tgz", + "integrity": "sha512-aysKgysPX9XOv/dk95UkvUDe++Q3n3dJPG9CEWT3RUccxfkPJ+Qn6nhKPDhZXU6Ofo9kgwGWwKyQCnZIXTgngg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/type-utils": "8.17.0", - "@typescript-eslint/utils": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.72.0", + "@typescript-eslint/type-utils": "8.72.0", + "@typescript-eslint/utils": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -245,27 +735,33 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.72.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.13.tgz", + "integrity": "sha512-2E8Q6rh+1RRSq/YdaGsNfXsEZy9FVqv6BSSrkmZJP7BnaoPnRfKL+YaofPvP+5rzdk144qSm6i4+hvPgUcbV4Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", - "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.72.0.tgz", + "integrity": "sha512-0O+x3ynciD6zuXb1CKSu165haQV6ey53DKhHHUnujP7U+XlltJG+/keT0Xhd1HXCze+IHf7Tvt39ovyepX/LNw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.72.0", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -275,23 +771,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", - "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.72.0.tgz", + "integrity": "sha512-bzHngBbmIgzj6TsTjVUCntGx6FFLgE7mPjpO0PzHycOaZHXqS43XnrkFIHRS16LLr/xO6FHSXG3GJFo/F4bSBQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0" + "@typescript-eslint/tsconfig-utils": "^8.72.0", + "@typescript-eslint/types": "^8.72.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -299,19 +792,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz", - "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.72.0.tgz", + "integrity": "sha512-JewPyJOYcXBSAS7PIgufscHOwZqhTGyBRiQJhhuDln66tMchxvvt7nJ90JKKIoOelmdHA3kAQbm9cEUHc4JSEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.17.0", - "@typescript-eslint/utils": "8.17.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -319,20 +813,12 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/types": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", - "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.72.0.tgz", + "integrity": "sha512-0vbxCf7xLVPSjcOdm6eQbgViH8EDJ8xnl1laLT9yoqSz2YmcSfSg5Vdl0JUvZf6rcuJ0ZivJIuMD4edTg8obaA==", "dev": true, "license": "MIT", "engines": { @@ -341,23 +827,23 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", - "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.72.0.tgz", + "integrity": "sha512-gEXxmmbSTSOVTC37IYYvremOM31v+UN2W772bJxmVYPhAOPSUxtacyb7wkm1EhkYKU6KzFJsdU44DCV4to0LWw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0", + "@typescript-eslint/utils": "8.72.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -366,49 +852,103 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.72.0.tgz", + "integrity": "sha512-Adfoy59kxNEjT5E5fnyrp7GpHYuWs8ONbdohu4ez6IU46qDq8LltG90tLmkucZB2uhYL8mqBjtXqGd8yhfjXqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.72.0.tgz", + "integrity": "sha512-gwLfFgWcw15tN2KXDCJvxEOQjPn+P3j/n3eSqkZ5sX4VpW9Cosodr+tWwBZRvJT3TcKx6HnPRGZMCNAiP1Xhug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.72.0", + "@typescript-eslint/tsconfig-utils": "8.72.0", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/visitor-keys": "8.72.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^5.0.8" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", - "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.72.0.tgz", + "integrity": "sha512-0up3oArJZBYnzOaEXKo8DmI43QvMZyPoFEt9LWzRJcyl/RcJjfKKPebknN1VbTgXBf3M/KggUh5uUMdURLnseg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.72.0", + "@typescript-eslint/types": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -418,23 +958,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", - "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.72.0.tgz", + "integrity": "sha512-E2mroviasaWecDzTGiGMtuEguuLVOeRggnrIn93CJuxYJzQBHbyymlT08aVQydbBal5538o+JkBKXh2sRuCyIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.72.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -445,18 +981,33 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.9.tgz", + "integrity": "sha512-edSdeAqkdxBVzA1yL1LrLCml1YjyCVvPMtMqJpbF+6K609tHe8V6sQUzFQSGcYNhcuhOceZtjvN32+mpIth30A==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=22.0.0" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -464,6 +1015,248 @@ "dev": true, "license": "ISC" }, + "node_modules/@vscode/test-electron": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.1.0.tgz", + "integrity": "sha512-CRqv5u+YYoseuNVJ6Tyo4k0sF0mx4qnKMihRB0PjsUF8Dc0WKtCXo6CNL6nWWm5esfFQsQA/pejMj4ZbpJVLTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^8.1.0", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@vscode/vsce": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-4.0.0.tgz", + "integrity": "sha512-NImwuLaenMmb5D5Jer9/lzi/F9ZQUBOp8Azhj/BVYcTFgixv8KehFXqEUDjQlD2tAiw2E6dDGyjTuAB//di60A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/identity": "^4.13.2", + "@napi-rs/keyring": "^1.3.0", + "@secretlint/core": "^10.2.2", + "@secretlint/secretlint-rule-no-dotenv": "^10.2.2", + "@secretlint/secretlint-rule-preset-recommend": "^10.2.2", + "@secretlint/source-creator": "^10.2.2", + "@secretlint/types": "^10.2.2", + "@vscode/vsce-sign": "^2.1.0", + "azure-devops-node-api": "^12.5.0", + "cockatiel": "^3.2.1", + "commander": "^12.1.0", + "hosted-git-info": "^4.1.0", + "jsonc-parser": "^3.3.1", + "marked": "^18.0.11", + "mime": "^1.6.0", + "minimatch": "^10.2.6", + "parse5": "^8.0.1", + "proper-lockfile": "^4.1.2", + "read": "^1.0.7", + "semver": "^7.8.5", + "tinyglobby": "^0.2.17", + "typed-rest-client": "^1.8.11", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^3.4.0", + "yazl": "^2.5.1" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 22" + } + }, + "node_modules/@vscode/vsce-sign": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.1.0.tgz", + "integrity": "sha512-9AQrqazrBgTgRSuwleLVXUrIUphY02/SFCh2TKYoLV/xifJAdblhdmEmw5gUrYSPQ3sRwNs9iyCMD14sATEE6g==", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.6", + "@vscode/vsce-sign-alpine-x64": "2.0.6", + "@vscode/vsce-sign-darwin-arm64": "2.0.6", + "@vscode/vsce-sign-darwin-x64": "2.0.6", + "@vscode/vsce-sign-linux-arm": "2.0.6", + "@vscode/vsce-sign-linux-arm64": "2.0.6", + "@vscode/vsce-sign-linux-x64": "2.0.6", + "@vscode/vsce-sign-win32-arm64": "2.0.6", + "@vscode/vsce-sign-win32-x64": "2.0.6" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", + "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", + "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", + "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", + "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", + "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", + "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", + "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", + "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", + "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@vscode/vsce/node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vscode/vsce/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -487,6 +1280,16 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", @@ -537,6 +1340,17 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -544,10 +1358,33 @@ "dev": true, "license": "MIT" }, + "node_modules/binaryextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", + "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/boundary": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", + "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/brace-expansion": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "dev": true, "license": "MIT", "dependencies": { @@ -555,17 +1392,75 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.1.tgz", + "integrity": "sha512-DdH81/zPLVS11EUgWq3tEu/xn+EzljlMYooDNdzWEnFha3R3NBMpMV1UqYIpjYHV/SgpFKMIX1Oh7o06SjM/oA==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/callsites": { @@ -595,6 +1490,61 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -615,6 +1565,16 @@ "dev": true, "license": "MIT" }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -622,6 +1582,13 @@ "dev": true, "license": "MIT" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -638,9 +1605,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -662,35 +1629,183 @@ "dev": true, "license": "MIT" }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/default-browser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz", + "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz", + "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "version-range": "^4.15.0" + }, + "engines": { + "ecmascript": ">= es5", + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, @@ -872,36 +1987,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -939,19 +2024,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -969,6 +2041,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -998,23 +2083,81 @@ "dev": true, "license": "ISC" }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz", + "integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1033,6 +2176,45 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "15.13.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", @@ -1046,6 +2228,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -1063,6 +2265,73 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -1073,6 +2342,13 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true, + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -1119,6 +2395,22 @@ "dev": true, "license": "ISC" }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1142,14 +2434,49 @@ "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-path-inside": { @@ -1162,6 +2489,42 @@ "node": ">=8" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1169,6 +2532,24 @@ "dev": true, "license": "ISC" }, + "node_modules/istextorbinary": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", + "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "binaryextensions": "^6.11.0", + "editions": "^6.21.0", + "textextensions": "^6.11.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/js-yaml": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", @@ -1213,6 +2594,72 @@ "dev": true, "license": "MIT" }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jszip": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.2.tgz", + "integrity": "sha512-3l+rb15IOWtUhU0H5MFqES/T6Kh7abYwjosBey/vD6hDt8zoEffkSC5Ws5SGtgVw3gBx2NEbhTeSW1+kWkpyTQ==", + "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -1237,6 +2684,16 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -1253,6 +2710,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -1260,28 +2759,116 @@ "dev": true, "license": "MIT" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", "dev": true, "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=10" + } + }, + "node_modules/marked": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.1.1.tgz", + "integrity": "sha512-zEGgrtUG8crk+TrMacJSVABU4DYDDkS8uqgU3ohrn/2fW9C2AEfUrO3m6IhpIpQpl7YcVpiXXC9cSMWDANT3dg==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/minimatch": { @@ -1297,6 +2884,168 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-12.0.3.tgz", + "integrity": "sha512-beammieDdiWdkjANWeWPpkxUROYGi5FN88fPOkLiticz7HTg3Y+Pho3EYE6SUdcuWnZ3h2WD8EXCA55JF4o6wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^5.0.0", + "debug": "^4.3.5", + "diff": "^9.0.0", + "find-up-simple": "^1.0.1", + "glob": "^13.0.0", + "is-path-inside": "^4.0.0", + "is-unicode-supported": "^0.1.0", + "js-yaml": "^5.0.0", + "minimatch": "^10.2.2", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^7.1.1", + "strip-json-comments": "^5.0.3", + "supports-color": "^8.1.1", + "workerpool": "^10.0.0" + }, + "bin": { + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.3.tgz", + "integrity": "sha512-Sn98ftV3KfsO8xfLPHG6oT8y+b0yvbrLgZjgPDXsharNY15tTAjqIsIju4S32nl6/iEUNNE4v+yL2Zhm8ooP3w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "PSF-2.0" + }, + "node_modules/mocha/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/mocha/node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.5.0.tgz", + "integrity": "sha512-paNr4LFIFPjeeSmwNYdrb8FafLLG/Cr2Af3GjbsHJ5CxIjH4r0c2emlmRdAtpPAieP1gRVzk6buBbVP5gBMGAg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^3.0.3" + }, + "bin": { + "js-yaml": "bin/js-yaml.mjs" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -1304,6 +3053,13 @@ "dev": true, "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1311,6 +3067,19 @@ "dev": true, "license": "MIT" }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1321,6 +3090,43 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.4.tgz", + "integrity": "sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.5.1", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.2.1", + "wsl-utils": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -1339,6 +3145,85 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -1371,6 +3256,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1384,6 +3276,19 @@ "node": ">=6" } }, + "node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1414,17 +3319,58 @@ "node": ">=8" } }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/powershell-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.2.1.tgz", + "integrity": "sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=20" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/prelude-ls": { @@ -1437,6 +3383,25 @@ "node": ">= 0.8.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -1447,6 +3412,23 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.16.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz", + "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -1468,6 +3450,56 @@ ], "license": "MIT" }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -1478,6 +3510,46 @@ "node": ">=4" } }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -1497,15 +3569,50 @@ "dev": true, "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -1530,10 +3637,41 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -1543,6 +3681,23 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.2.tgz", + "integrity": "sha512-GL2BWwVa6JydKO6l/ljVgjAZF4QJ3S7dWDWi53s5GZT8PJzD2fNxi67HANQGKAqPrwEpL5ba7gUBGi0Ls/sEoQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1566,6 +3721,166 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1592,6 +3907,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/structured-source": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", + "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boundary": "^2.0.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -1612,30 +3937,98 @@ "dev": true, "license": "MIT" }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/textextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", + "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, "node_modules/type-check": { @@ -1664,6 +4057,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, "node_modules/typescript": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", @@ -1679,15 +4084,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz", - "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==", + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.72.0.tgz", + "integrity": "sha512-r26Fkc8As+mZvqp7SLsMmNFyYUup/6CjK7/eHBHmhOw6GH6n6YFxHVFrG0jN1c5CMpDzelLPxvgeCOzx7BjN+A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.17.0", - "@typescript-eslint/parser": "8.17.0", - "@typescript-eslint/utils": "8.17.0" + "@typescript-eslint/eslint-plugin": "8.72.0", + "@typescript-eslint/parser": "8.72.0", + "@typescript-eslint/typescript-estree": "8.72.0", + "@typescript-eslint/utils": "8.72.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1697,14 +4103,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, + "node_modules/underscore": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", + "dev": true, + "license": "MIT" + }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -1722,6 +4131,33 @@ "punycode": "^2.1.0" } }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/version-range": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz", + "integrity": "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==", + "dev": true, + "license": "Artistic-2.0", + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1748,6 +4184,13 @@ "node": ">=0.10.0" } }, + "node_modules/workerpool": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-10.0.3.tgz", + "integrity": "sha512-6z2Iis68Wqth93/G/wJP9u+R3O+d2XTlgWChGCwuT1qLbBsOYueGRZuJ++v3mtDP5KjYdy+WzvWC+VWETSVXJA==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -1755,6 +4198,77 @@ "dev": true, "license": "ISC" }, + "node_modules/wsl-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-1.0.1.tgz", + "integrity": "sha512-c16PKLIRxBYpR3jSWsdS7SFp0COm5SOQdiFjY818dYFHJbMGuLBszpF07LBWmOS1uzrHa9VGdynsEgoeKy0oOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yauzl": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz", + "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 931a5d1..385237c 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,41 @@ { "name": "sf-vscode", - "displayName": "SF Modifier Suggestions", - "description": "VS Code autocomplete and modifier tips for Simai Framework", - "version": "0.0.1", + "displayName": "SIMAI Framework IntelliSense", + "description": "Autocomplete and hovers for SIMAI Framework: sf- component tags and attributes, utility classes and --sf- design tokens with colour swatches and adaptive values.", + "version": "0.1.0", "publisher": "SIMAI", "author": "Rim Zabarov and contributors", "license": "MIT", - "repository": "https://github.com/simai/ui-vscode", + "icon": "images/icon.png", + "homepage": "https://github.com/simai/ui-vscode#readme", + "bugs": { + "url": "https://github.com/simai/ui-vscode/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/simai/ui-vscode.git" + }, + "keywords": [ + "SIMAI Framework", + "SIMAI", + "sf", + "css variables", + "design tokens", + "utility classes", + "web components", + "intellisense", + "autocomplete" + ], "engines": { "vscode": "^1.95.0" }, "categories": [ + "Programming Languages", + "Snippets", "Other" ], "activationEvents": [ + "onStartupFinished", "onLanguage:css", "onLanguage:scss", "onLanguage:sass", @@ -25,27 +47,50 @@ "onLanguage:react" ], "main": "./out/extension.js", - "contributes": {}, + "contributes": { + "configuration": { + "title": "SIMAI Framework IntelliSense", + "properties": { + "sf.hover.enabled": { + "type": "boolean", + "default": true, + "description": "Show SIMAI Framework hovers for --sf- tokens, utility classes, sf- tags and their attributes." + }, + "sf.colorSwatches.enabled": { + "type": "boolean", + "default": true, + "description": "Show colour swatches next to --sf- colour tokens. Picking a colour offers the nearest SIMAI Framework colour token." + } + } + } + }, "scripts": { "compile": "tsc -p ./", - "generate": "npm run compile && node ./out/generate/generateJson.js", - "generate:check": "npm run compile && node ./out/generate/generateJson.js --check", + "generate": "npm run compile && node ./out/generate/generateJson.js && node ./out/generate/generateFramework.js", + "generate:check": "npm run compile && node ./out/generate/generateJson.js --check && node ./out/generate/generateFramework.js --check", "watch": "tsc -watch -p ./", "pretest": "npm run compile && npm run lint", "clean": "rm -rf out", "test": "node --test ./out/test/*.unit.test.js", - "test:extension": "node ./out/test/runTest.js", + "test:extension": "npm run compile && node ./out/test/runTest.js", "lint": "eslint \"src/**/*.{ts,js}\"", - "prepublish": "npm run compile" + "vscode:prepublish": "npm run clean && npm run compile", + "package": "vsce package", + "package:ls": "vsce ls", + "vendor:framework": "npm run compile && node ./out/generate/vendorFramework.js", + "package:check": "vsce ls | node ./out/generate/checkPackage.js" }, "devDependencies": { "@eslint/js": "^9.16.0", - "@types/glob": "^8.1.0", "@types/mocha": "^10.0.10", "@types/node": "^22.10.1", "@types/vscode": "^1.95.0", + "@vscode/test-electron": "^3.1.0", + "@vscode/vsce": "^4.0.0", "eslint": "^8.57.1", + "glob": "^13.0.6", "globals": "^15.13.0", + "mocha": "^12.0.3", "typescript": "^5.7.2", "typescript-eslint": "^8.17.0" } diff --git a/schema/sf-autocomplete.schema.json b/schema/sf-autocomplete.schema.json index edd3d8e..ddd3efb 100644 --- a/schema/sf-autocomplete.schema.json +++ b/schema/sf-autocomplete.schema.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://simai.io/schema/sf-autocomplete.v1.json", - "title": "Simai Framework autocomplete registry", + "title": "SIMAI Framework autocomplete registry", "type": "object", "required": ["schemaVersion", "registryId", "registryVersion", "source", "modes", "scope", "entries"], "properties": { diff --git a/src/completion.ts b/src/completion.ts index 62f5f97..9383acd 100644 --- a/src/completion.ts +++ b/src/completion.ts @@ -4,6 +4,8 @@ export interface CompletionRequest { context: CompletionContext; prefix: string; replaceLength: number; + /** The prefix is a CSS-escaped selector (md\:flex), not a literal class. */ + escaped?: true; } const htmlLanguages = new Set([ @@ -16,6 +18,11 @@ const htmlLanguages = new Set([ 'react', ]); +const stylesheetLanguages = new Set(['css', 'scss', 'sass', 'less']); + +export const isStylesheetLanguage = (languageId: string): boolean => + stylesheetLanguages.has(languageId); + export function detectCompletionRequest( line: string, cursor: number, @@ -46,12 +53,17 @@ export function detectCompletionRequest( }; } - const classSelector = before.match(/\.([A-Za-z0-9_\\/:.-]*)$/)?.[1]; + // Class selectors only in stylesheets: in markup and scripts a dot is + // far more often prose or member access than a selector. + const classSelector = isStylesheetLanguage(languageId) + ? before.match(/\.([A-Za-z0-9_\\/:.-]*)$/)?.[1] + : undefined; if (classSelector !== undefined) { return { context: 'htmlClass', prefix: classSelector, replaceLength: classSelector.length, + escaped: true, }; } diff --git a/src/extension.ts b/src/extension.ts index f61a842..4c97510 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,37 +2,198 @@ import * as fs from 'fs'; import * as path from 'path'; import * as vscode from 'vscode'; import { + CompletionRequest, completionLabel, detectCompletionRequest, matchingEntries, } from './completion'; +import { + FrameworkIndex, + createIndex, + describeAttribute, + describeClass, + describeTag, + describeToken, + escapeClass, + nearestColorTokens, + tokenDetail, +} from './framework'; +import { MarkupRequest, detectMarkupRequest } from './markup'; +import { formatColor } from './registry/color'; +import { validateFrameworkRegistry } from './registry/frameworkValidation'; +import { FrameworkToken, Rgba } from './registry/frameworkTypes'; import { validateRegistry } from './registry/validation'; +import { findHoverTarget } from './targets'; -export function activate(context: vscode.ExtensionContext): void { - const registryPath = path.join( - context.extensionPath, - 'src', - 'registry', - 'sf-autocomplete.json', - ); - const registry = validateRegistry( - JSON.parse(fs.readFileSync(registryPath, 'utf8')), +const languages = [ + 'css', + 'scss', + 'sass', + 'less', + 'html', + 'javascript', + 'javascriptreact', + 'typescript', + 'typescriptreact', + 'vue', + 'react', +]; +/** Languages where `<` starts a tag even without a following letter. */ +const markupLanguages = new Set(['html', 'vue', 'javascriptreact', 'typescriptreact', 'react']); +const stylesheetLanguages = new Set(['css', 'scss', 'sass', 'less']); +/** How far back to look for the start of a tag that spans lines. */ +const markupLookbehindLines = 20; + +const settings = (): vscode.WorkspaceConfiguration => vscode.workspace.getConfiguration('sf'); + +function textAbove(document: vscode.TextDocument, line: number): string { + const start = Math.max(0, line - markupLookbehindLines); + return document.getText(new vscode.Range(start, 0, line, 0)); +} + +const toColor = ([red, green, blue, alpha]: Rgba): vscode.Color => + new vscode.Color(red, green, blue, alpha); + +const markdown = (value: string): vscode.MarkdownString => { + const result = new vscode.MarkdownString(value); + result.supportHtml = false; + return result; +}; + +function tokenItem( + index: FrameworkIndex, + token: FrameworkToken, + range: vscode.Range, +): vscode.CompletionItem { + const item = new vscode.CompletionItem( + token.name, + token.color ? vscode.CompletionItemKind.Color : vscode.CompletionItemKind.Variable, ); + item.range = range; + item.detail = tokenDetail(token); + // The suggest widget draws a swatch only when the documentation is a + // plain colour string; the full description is in the hover. + item.documentation = token.color + ? formatColor(token.color) + : markdown(describeToken(index, token)); + return item; +} + +function classItems( + index: FrameworkIndex, + request: CompletionRequest, + range: vscode.Range, +): vscode.CompletionItem[] { + const prefix = request.prefix.toLowerCase(); + const items: vscode.CompletionItem[] = []; + for (const entry of index.framework.classes) { + const label = request.escaped ? escapeClass(entry.name) : entry.name; + if (!label.toLowerCase().startsWith(prefix)) continue; + const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Constant); + item.range = range; + item.detail = entry.declarations; + item.documentation = markdown(describeClass(index, entry)); + items.push(item); + } + return items; +} + +function markupItems( + index: FrameworkIndex, + request: MarkupRequest, + position: vscode.Position, + languageId: string, +): vscode.CompletionItem[] { + const range = new vscode.Range(position.translate(0, -request.prefix.length), position); + if (request.kind === 'tag') { + if (request.prefix === '' && !markupLanguages.has(languageId)) return []; + return index.framework.tags + .filter(tag => tag.tag.startsWith(request.prefix.toLowerCase())) + .map(tag => { + const item = new vscode.CompletionItem(tag.tag, vscode.CompletionItemKind.Class); + item.range = range; + item.detail = `SIMAI Framework · ${tag.title} · ${tag.lifecycle}`; + item.documentation = markdown(describeTag(index, tag)); + if (tag.deprecated) item.tags = [vscode.CompletionItemTag.Deprecated]; + return item; + }); + } + + const tag = index.tagByName.get(request.tag); + if (!tag) return []; + if (request.kind === 'attribute') { + return tag.attributes + .filter(attribute => !request.present.includes(attribute.name)) + .filter(attribute => attribute.name.startsWith(request.prefix)) + .map(attribute => { + const item = new vscode.CompletionItem( + attribute.name, + vscode.CompletionItemKind.Property, + ); + item.range = range; + item.detail = attribute.deprecated + ? `deprecated${attribute.deprecated.replacement ? ` → ${attribute.deprecated.replacement}` : ''}` + : attribute.type; + item.documentation = markdown(describeAttribute(tag, attribute)); + // Deprecated attributes sort after the current ones. + item.sortText = `${attribute.deprecated ? '1' : '0'}${attribute.name}`; + if (attribute.deprecated) item.tags = [vscode.CompletionItemTag.Deprecated]; + if (attribute.type !== 'boolean') { + item.insertText = new vscode.SnippetString(`${attribute.name}="$1"`); + if (attribute.values.length > 0 || attribute.examples.length > 0) { + item.command = { + title: 'Suggest values', + command: 'editor.action.triggerSuggest', + }; + } + } + return item; + }); + } + + const attribute = tag.attributes.find(item => item.name === request.attribute); + if (!attribute) return []; + const values = [ + ...attribute.values.map(value => ({ value, example: false })), + ...attribute.examples + .filter(value => !attribute.values.includes(value)) + .map(value => ({ value, example: true })), + ]; + return values + .filter(({ value }) => value.startsWith(request.prefix)) + .map(({ value, example }, position) => { + const item = new vscode.CompletionItem(value, vscode.CompletionItemKind.EnumMember); + item.range = range; + item.detail = example + ? `example for ${attribute.name}` + : `${attribute.name}${value === attribute.default ? ' · default' : ''}`; + item.sortText = String(position).padStart(4, '0'); + if (attribute.deprecated) item.tags = [vscode.CompletionItemTag.Deprecated]; + return item; + }); +} - const provider = vscode.languages.registerCompletionItemProvider( - [ - 'css', - 'scss', - 'sass', - 'less', - 'html', - 'javascript', - 'javascriptreact', - 'typescript', - 'typescriptreact', - 'vue', - 'react', - ], +export function activate(context: vscode.ExtensionContext): void { + // Activation runs at startup (onStartupFinished) so that the very first + // completion request already reaches these providers. Keep it cheap: the + // registries are read on first use, not during activation. + let cachedIndex: FrameworkIndex | undefined; + const loadIndex = (): FrameworkIndex => { + if (!cachedIndex) { + const read = (file: string): unknown => JSON.parse(fs.readFileSync( + path.join(context.extensionPath, 'data', file), + 'utf8', + )); + cachedIndex = createIndex( + validateFrameworkRegistry(read('sf-framework.json')), + validateRegistry(read('sf-autocomplete.json')), + ); + } + return cachedIndex; + }; + + const completion = vscode.languages.registerCompletionItemProvider( + languages, { provideCompletionItems(document, position) { const line = document.lineAt(position).text; @@ -41,43 +202,121 @@ export function activate(context: vscode.ExtensionContext): void { position.character, document.languageId, ); - if (!request) return undefined; - - const entries = matchingEntries(registry.entries, request); - if (entries.length === 0) return undefined; - - return entries.map(entry => { - const label = completionLabel(entry, request); - const item = new vscode.CompletionItem( - label, - request.context === 'htmlClass' - ? vscode.CompletionItemKind.Value - : vscode.CompletionItemKind.Variable, - ); - item.detail = [ - entry.description, - `mobile ${entry.modes.mobile.px}px`, - `desktop ${entry.modes.desktop.px}px`, - registry.source.contractVersion, - ].join(' · '); - item.documentation = new vscode.MarkdownString( - `Source contract: \`${registry.source.sha256}\``, - ); - item.range = new vscode.Range( + if (request) { + const index = loadIndex(); + const range = new vscode.Range( position.translate(0, -request.replaceLength), position, ); - return item; - }); + if (request.context === 'cssVariable') { + const prefix = request.prefix.toLowerCase(); + return index.tokens + .filter(token => token.name.toLowerCase().startsWith(prefix)) + .map(token => tokenItem(index, token, range)); + } + const items = classItems(index, request, range); + // Class aliases from the sizing contract, if it ever ships any. + const known = new Set(items.map(item => item.label)); + for (const entry of matchingEntries(index.sizing.entries, request)) { + const label = completionLabel(entry, request); + if (known.has(label)) continue; + const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Value); + item.range = range; + item.detail = entry.description; + items.push(item); + } + return items; + } + + if (stylesheetLanguages.has(document.languageId)) return undefined; + const markup = detectMarkupRequest( + textAbove(document, position.line) + line.slice(0, position.character), + ); + if (!markup) return undefined; + const items = markupItems(loadIndex(), markup, position, document.languageId); + return items.length > 0 ? items : undefined; }, }, '-', '.', '/', ':', + '<', + ' ', + '"', + "'", ); - context.subscriptions.push(provider); + const hover = vscode.languages.registerHoverProvider(languages, { + provideHover(document, position) { + if (!settings().get('hover.enabled', true)) return undefined; + const line = document.lineAt(position).text; + const target = findHoverTarget( + line, + position.character, + document.languageId, + textAbove(document, position.line), + ); + if (!target) return undefined; + const index = loadIndex(); + let text: string | undefined; + if (target.kind === 'token') { + const token = index.tokenByName.get(target.name); + if (token) text = describeToken(index, token); + } else if (target.kind === 'class') { + const item = index.classByName.get(target.name); + if (item) text = describeClass(index, item); + } else if (target.kind === 'tag') { + const tag = index.tagByName.get(target.name); + if (tag) text = describeTag(index, tag); + } else { + const tag = index.tagByName.get(target.tag); + const attribute = tag?.attributes.find(item => item.name === target.name); + if (tag && attribute) text = describeAttribute(tag, attribute); + } + if (!text) return undefined; + return new vscode.Hover( + markdown(text), + new vscode.Range(position.line, target.start, position.line, target.end), + ); + }, + }); + + const colors = vscode.languages.registerColorProvider(languages, { + provideDocumentColors(document) { + if (!settings().get('colorSwatches.enabled', true)) return []; + const text = document.getText(); + if (!text.includes('--sf-')) return []; + const index = loadIndex(); + const result: vscode.ColorInformation[] = []; + for (const match of text.matchAll(/--sf-(?:\\.|[A-Za-z0-9_-])+/g)) { + const token = index.tokenByName.get(match[0]); + if (!token?.color) continue; + const start = document.positionAt(match.index!); + const end = document.positionAt(match.index! + match[0].length); + result.push(new vscode.ColorInformation( + new vscode.Range(start, end), + toColor(token.color), + )); + } + return result; + }, + provideColorPresentations(color, { range }) { + // Picking a colour offers the nearest SIMAI Framework colour tokens. + const index = loadIndex(); + return nearestColorTokens( + index, + [color.red, color.green, color.blue, color.alpha], + 8, + ).map(token => { + const presentation = new vscode.ColorPresentation(token.name); + presentation.textEdit = new vscode.TextEdit(range, token.name); + return presentation; + }); + }, + }); + + context.subscriptions.push(completion, hover, colors); } export function deactivate(): void {} diff --git a/src/framework.ts b/src/framework.ts new file mode 100644 index 0000000..73652d5 --- /dev/null +++ b/src/framework.ts @@ -0,0 +1,192 @@ +/* + * Lookups and descriptions over the generated registries. Nothing here + * depends on the vscode API, so it is covered by plain unit tests. + */ +import { formatColor } from './registry/color'; +import { + FrameworkAttribute, + FrameworkClass, + FrameworkRegistry, + FrameworkTag, + FrameworkToken, +} from './registry/frameworkTypes'; +import { RegistryEntry, SfAutocompleteRegistry } from './registry/types'; + +export interface FrameworkIndex { + framework: FrameworkRegistry; + sizing: SfAutocompleteRegistry; + tokens: FrameworkToken[]; + tokenByName: Map; + sizingByName: Map; + classByName: Map; + tagByName: Map; +} + +export function createIndex( + framework: FrameworkRegistry, + sizing: SfAutocompleteRegistry, +): FrameworkIndex { + const tokenByName = new Map(framework.tokens.map(token => [token.name, token])); + const sizingByName = new Map(sizing.entries.map(entry => [entry.cssName, entry])); + // Sizing contract variables that the core sheet does not declare still + // get suggested, with their contract values. + for (const entry of sizing.entries) { + if (tokenByName.has(entry.cssName)) continue; + tokenByName.set(entry.cssName, { + name: entry.cssName, + group: 'sizing', + source: 'core', + component: null, + summary: entry.description, + value: `${entry.modes.mobile.px}px`, + light: `${entry.modes.mobile.px}px`, + dark: null, + desktop: entry.modes.desktop.px === entry.modes.mobile.px + ? null + : `${entry.modes.desktop.px}px`, + color: null, + darkColor: null, + since: null, + }); + } + return { + framework, + sizing, + tokens: [...tokenByName.values()].sort((left, right) => left.name.localeCompare(right.name)), + tokenByName, + sizingByName, + classByName: new Map(framework.classes.map(item => [item.name, item])), + tagByName: new Map(framework.tags.map(tag => [tag.tag, tag])), + }; +} + +/** CSS-escapes a literal class name for use in a selector. */ +export const escapeClass = (name: string): string => + name.replace(/[^A-Za-z0-9_-]/g, char => `\\${char}`); + +/** "0.875rem" → "14px"; other values are returned as they are. */ +export function toPx(value: string | null): string | null { + if (value === null) return null; + const rem = value.match(/^(-?\d*\.?\d+)rem$/); + if (!rem) return value; + const px = Math.round(parseFloat(rem[1]) * 16 * 100) / 100; + return `${px}px`; +} + +const showValue = (value: string | null): string => { + if (value === null) return '—'; + const px = toPx(value); + return px !== value ? `${px} (${value})` : value; +}; + +/** A one-line summary for the completion list. */ +export function tokenDetail(token: FrameworkToken): string { + if (token.color) { + const light = formatColor(token.color); + return token.darkColor + ? `light ${light} · dark ${formatColor(token.darkColor)}` + : light; + } + if (token.desktop !== null) { + return `mobile ${toPx(token.light)} · desktop ${toPx(token.desktop)}`; + } + return toPx(token.light) ?? token.value; +} + +const releaseLine = (index: FrameworkIndex, where: string): string => { + const release = index.framework.release; + return `SIMAI Framework release \`${release.id}\` · ${where}`; +}; + +const deprecationLine = ( + deprecated: { since: string | null; replacement: string | null }, +): string => { + const since = deprecated.since ? ` since ${deprecated.since}` : ''; + const replacement = deprecated.replacement ? ` Use instead: ${deprecated.replacement}.` : ''; + return `**Deprecated**${since}.${replacement}`; +}; + +export function describeToken(index: FrameworkIndex, token: FrameworkToken): string { + const lines: string[] = [`**\`${token.name}\`** · ${token.group}`]; + if (token.summary) lines.push('', token.summary); + const rows: [string, string][] = []; + const color = (value: string | null, rgba: FrameworkToken['color']): string => + rgba ? `${formatColor(rgba)}` : showValue(value); + if (token.dark !== null) { + rows.push(['light', color(token.light, token.color)]); + rows.push(['dark', color(token.dark, token.darkColor)]); + } else if (token.desktop !== null) { + rows.push(['mobile', showValue(token.light)]); + rows.push([`desktop (≥ ${index.framework.desktopMinWidth})`, showValue(token.desktop)]); + } else { + rows.push(['value', color(token.light, token.color)]); + } + if (token.light !== token.value) rows.push(['declared', `\`${token.value}\``]); + lines.push('', '| | |', '|---|---|', ...rows.map(([key, value]) => `| ${key} | ${value} |`)); + + const sizing = index.sizingByName.get(token.name); + if (sizing) { + lines.push( + '', + `Adaptive sizing contract \`${index.sizing.source.contractId}@${index.sizing.source.contractVersion}\`: ` + + `mobile ${sizing.modes.mobile.px}px · desktop ${sizing.modes.desktop.px}px`, + ); + } + const where = token.source === 'component' + ? `public variable of \`${token.component}\`${token.since ? `, since ${token.since}` : ''}` + : 'core token (core.css)'; + lines.push('', releaseLine(index, where)); + return lines.join('\n'); +} + +export function describeClass(index: FrameworkIndex, item: FrameworkClass): string { + const lines = [ + `**\`${item.name}\`** · utility \`${item.family}\``, + '', + '```css', + `${item.media ? `@media ${item.media} { ` : ''}.${escapeClass(item.name)} { ${item.declarations} }${item.media ? ' }' : ''}`, + '```', + ]; + if (item.breakpoint) lines.push('', `Applies from the \`${item.breakpoint}\` breakpoint.`); + lines.push('', releaseLine(index, `\`${item.id}\` · ${item.lifecycle}`)); + return lines.join('\n'); +} + +export function describeTag(index: FrameworkIndex, tag: FrameworkTag): string { + const lines = [`**\`<${tag.tag}>\`** · ${tag.title}`, '', tag.summary]; + if (tag.deprecated) lines.push('', deprecationLine(tag.deprecated)); + const attributes = tag.attributes.filter(attribute => !attribute.deprecated).map(item => `\`${item.name}\``); + if (attributes.length > 0) lines.push('', `Attributes: ${attributes.join(', ')}`); + if (tag.docs.length > 0) { + lines.push('', tag.docs.map(url => `[Documentation](${url})`).join(' · ')); + } + lines.push('', releaseLine(index, `\`${tag.id}\` · ${tag.lifecycle}`)); + return lines.join('\n'); +} + +export function describeAttribute(tag: FrameworkTag, attribute: FrameworkAttribute): string { + const lines = [`**\`${attribute.name}\`** on \`<${tag.tag}>\` · ${attribute.type}`]; + if (attribute.description) lines.push('', attribute.description); + if (attribute.deprecated) lines.push('', deprecationLine(attribute.deprecated)); + if (attribute.values.length > 0) { + lines.push('', `Values: ${attribute.values.map(value => `\`${value}\``).join(', ')}`); + } + if (attribute.default !== null && attribute.default !== '') { + lines.push('', `Default: \`${attribute.default}\``); + } + return lines.join('\n'); +} + +/** Colour tokens ranked by distance to the given colour, nearest first. */ +export function nearestColorTokens( + index: FrameworkIndex, + rgba: [number, number, number, number], + limit: number, +): FrameworkToken[] { + const distance = (token: FrameworkToken): number => token.color! + .reduce((sum, channel, position) => sum + (channel - rgba[position]) ** 2, 0); + return index.tokens + .filter(token => token.color !== null && token.source === 'core') + .sort((left, right) => distance(left) - distance(right) || left.name.localeCompare(right.name)) + .slice(0, limit); +} diff --git a/src/generate/buildFramework.ts b/src/generate/buildFramework.ts new file mode 100644 index 0000000..76829d0 --- /dev/null +++ b/src/generate/buildFramework.ts @@ -0,0 +1,403 @@ +import { parseColor } from '../registry/color'; +import { + Deprecation, + FrameworkAttribute, + FrameworkClass, + FrameworkRegistry, + FrameworkTag, + FrameworkToken, +} from '../registry/frameworkTypes'; +import { CssRule, parseCss, splitTopLevel, unescapeCss } from './css'; +import { + FrameworkPointer, + RawContractRegistry, + RawManifestProperty, + RawPublicVariables, + RawSmartManifest, +} from './frameworkInputs'; + +export interface FrameworkInputs { + pointer: FrameworkPointer; + registry: RawContractRegistry; + registrySha256: string; + coreCss: string; + publicVariables: RawPublicVariables; + /** Keyed by snapshot path, e.g. utility/display/md/css/md.css. */ + utilityCss: Record; + /** Keyed by snapshot path, e.g. smart/buttons/smart.manifest.json. */ + manifests: Record; + /** Desktop mode boundary from the adaptive sizing contract, in px. */ + desktopMinWidthPx: number; +} + +export interface FrameworkReport { + skippedPublicComponents: string[]; + ignoredTokenMedia: string[]; +} + +/** Selectors whose custom properties make up the global token set. */ +const tokenSelectors = new Set([ + ':root', + ':root, ::after, ::before', + '.theme-light, .theme-dark', +]); + +const githubUrl = (ref: string): string | null => { + const match = ref.match(/^([^@]+)@([0-9a-f]{7,40}):(.+)$/); + return match ? `https://github.com/${match[1]}/blob/${match[2]}/${match[3]}` : null; +}; + +const asText = (value: unknown): string => + typeof value === 'string' ? value : JSON.stringify(value); + +/* ---------------------------------------------------------------- tokens */ + +type Scheme = 'light' | 'dark'; +type Mode = 'mobile' | 'desktop'; + +/** Applies fn to every call of `name(...)`, innermost first. */ +function replaceCalls( + value: string, + name: string, + fn: (args: string[]) => string, +): string { + const opener = `${name}(`; + let result = value; + for (let guard = 0; guard < 500; guard += 1) { + const start = result.lastIndexOf(opener); + if (start < 0) break; + if (start > 0 && /[a-z-]/i.test(result[start - 1])) { + // Part of a longer function name; leave it. + break; + } + let depth = 0; + let end = -1; + for (let index = start + opener.length - 1; index < result.length; index += 1) { + if (result[index] === '(') depth += 1; + if (result[index] === ')') { + depth -= 1; + if (depth === 0) { + end = index; + break; + } + } + } + if (end < 0) break; + const args = splitTopLevel(result.slice(start + opener.length, end)); + result = result.slice(0, start) + fn(args) + result.slice(end + 1); + } + return result; +} + +const unresolvedMarker = '\u0001unresolved'; + +class TokenResolver { + constructor( + private readonly base: Map, + private readonly desktop: Map, + ) {} + + declared(name: string, mode: Mode): string | undefined { + return (mode === 'desktop' ? this.desktop.get(name) : undefined) ?? this.base.get(name); + } + + resolve(name: string, scheme: Scheme, mode: Mode, seen: Set = new Set()): string | null { + const value = this.declared(name, mode); + if (value === undefined || seen.has(name)) return null; + const next = new Set(seen).add(name); + const withVars = replaceCalls(value, 'var', ([reference, ...fallback]) => { + const resolved = this.resolve(reference.trim(), scheme, mode, next); + if (resolved !== null) return resolved; + if (fallback.length > 0) return fallback.join(', '); + // Marked so the scan does not find the same call again. + return `${unresolvedMarker}(${reference})`; + }); + return replaceCalls(withVars, 'light-dark', ([light, dark]) => + scheme === 'light' ? light : dark ?? light, + ).split(unresolvedMarker).join('var'); + } +} + +function tokenGroup(name: string, isColor: boolean): string { + const rules: [RegExp, string][] = [ + [/^--sf-[a-i]\d/, 'primitive'], + [/^--sf-radius/, 'radius'], + [/^--sf-icon/, 'icon'], + [/^--sf-opacity|^--sf-alpha/, 'opacity'], + [/^--sf-z-/, 'z-index'], + [/^--sf-space/, 'spacing'], + [/^--sf-ui-/, 'control'], + [/^--sf-(text|title|heading|display|label|font|weight|code|mono|sans|serif)/, 'typography'], + [/^--sf-(elevation|shadow|floating|drop)/, 'elevation'], + [/^--sf-(duration|ease|transition|animation)/, 'motion'], + [/^--sf-(breakpoint|container|viewport)/, 'layout'], + [/^--sf-(border|focus|ring|outline-width)/, 'border'], + ]; + if (isColor) return 'color'; + return rules.find(([pattern]) => pattern.test(name))?.[1] ?? 'other'; +} + +function buildTokens( + rules: CssRule[], + desktopMedia: RegExp, + publicTokens: FrameworkToken[], + report: FrameworkReport, +): FrameworkToken[] { + const base = new Map(); + const desktop = new Map(); + const ignoredMedia = new Set(); + for (const rule of rules) { + if (!tokenSelectors.has(rule.selector)) continue; + let target: Map | null = base; + if (rule.media.length > 0) { + target = rule.media.length === 1 && desktopMedia.test(rule.media[0]) ? desktop : null; + } + for (const [property, value] of rule.declarations) { + if (!property.startsWith('--sf-')) continue; + if (target === null) { + ignoredMedia.add(rule.media.join(' and ')); + continue; + } + target.set(property, value); + } + } + report.ignoredTokenMedia = [...ignoredMedia].sort(); + + // Public component variables are never set by the Framework; resolve + // their documented defaults against the core tokens. The contract writes + // references unescaped (--sf-space-1/4), CSS needs --sf-space-1\/4. + const publicByName = new Map(); + for (const token of publicTokens) { + if (base.has(token.name)) continue; + publicByName.set(token.name, token); + base.set(token.name, token.value.replace(/(var\(--sf-[^,)]*?)(? left.name.localeCompare(right.name)); +} + +/* ------------------------------------------------------------- utilities */ + +function buildClasses( + utilityCss: Record, + registry: RawContractRegistry, + safe: Set, +): FrameworkClass[] { + const byFamily = new Map( + registry.entries + .filter(entry => entry.kind === 'utility' && safe.has(entry.id)) + .map(entry => [entry.name, entry]), + ); + const classes = new Map(); + for (const [file, css] of Object.entries(utilityCss).sort()) { + const match = file.match(/^utility\/([^/]+)\/([^/]+)\/css\/\2\.css$/); + if (!match) throw new Error(`unexpected utility file ${file}`); + const [, family, variant] = match; + const entry = byFamily.get(family); + if (!entry) throw new Error(`${file} does not belong to a safe utility`); + for (const rule of parseCss(css)) { + for (const selector of splitTopLevel(rule.selector)) { + const raw = selector.match(/^\.((?:\\.|[^\s.:#[>+~,()\\])+)/)?.[1]; + if (!raw) continue; + const name = unescapeCss(raw); + const declarations = rule.declarations + .map(([property, value]) => `${property}: ${value};`) + .join(' '); + const existing = classes.get(name); + if (existing) { + if (!existing.declarations.includes(declarations)) { + existing.declarations = `${existing.declarations} ${declarations}`; + } + continue; + } + classes.set(name, { + name, + id: entry.id, + family, + breakpoint: variant === 'default' ? null : variant, + media: rule.media.length > 0 ? rule.media.join(' and ') : null, + declarations, + lifecycle: entry.lifecycle, + }); + } + } + } + return [...classes.values()].sort((left, right) => left.name.localeCompare(right.name)); +} + +/* ------------------------------------------------------------ components */ + +function attribute( + name: string, + property: RawManifestProperty, + deprecations: Map, +): FrameworkAttribute { + const type = Array.isArray(property.type) + ? property.type.join(' | ') + : property.type ?? 'string'; + return { + name, + type, + default: property.default === undefined ? null : asText(property.default), + description: property.description ?? null, + values: (property.enum ?? []).map(asText).filter(value => value !== ''), + examples: (property.examples ?? []).map(asText), + deprecated: deprecations.get(name) ?? null, + }; +} + +function buildTags( + registry: RawContractRegistry, + safe: Set, + manifests: Record, +): FrameworkTag[] { + const byId = new Map(Object.values(manifests).map(manifest => [manifest.id, manifest])); + const tags: FrameworkTag[] = []; + for (const entry of registry.entries) { + if (entry.kind !== 'smart-component' || !safe.has(entry.id)) continue; + const manifest = byId.get(entry.id); + if (!manifest) throw new Error(`${entry.id} has no vendored manifest`); + const deprecations = new Map( + (manifest.compatibility?.deprecations ?? []).map(item => [ + item.path, + { since: item.since ?? null, replacement: item.replacement ?? null }, + ]), + ); + const replacement = manifest.compatibility?.replacement ?? null; + const deprecated = entry.lifecycle === 'deprecated' + || manifest.lifecycle === 'deprecated' + || replacement !== null + ? { since: null, replacement } + : null; + const attributes = Object.entries(manifest.inputs?.properties ?? {}) + .map(([name, property]) => attribute(name, property, deprecations)) + .sort((left, right) => left.name.localeCompare(right.name)); + for (const tag of entry.runtime.tags ?? []) { + if (tag !== manifest.custom_element) { + throw new Error(`${entry.id}: registry tag ${tag} != manifest ${manifest.custom_element}`); + } + tags.push({ + tag, + id: entry.id, + title: entry.title, + summary: manifest.summary, + lifecycle: entry.lifecycle, + deprecated, + docs: entry.documentation_refs + .map(githubUrl) + .filter((url): url is string => url !== null), + attributes, + }); + } + } + return tags.sort((left, right) => left.tag.localeCompare(right.tag)); +} + +function buildPublicVariables( + publicVariables: RawPublicVariables, + registry: RawContractRegistry, + safe: Set, + report: FrameworkReport, +): FrameworkToken[] { + const safeEntries = registry.entries.filter(entry => safe.has(entry.id)); + const tokens: FrameworkToken[] = []; + const skipped: string[] = []; + for (const component of publicVariables.components) { + const name = component.component; + const owner = safeEntries.find(entry => + (entry.runtime.tags ?? []).includes(`sf-${name}`) + || [name, `${name}s`, `${name}es`].includes(entry.name), + ); + if (!owner) { + skipped.push(name); + continue; + } + for (const variable of component.variables) { + tokens.push({ + name: variable.name, + group: 'component', + source: 'component', + component: component.selector, + summary: variable.summary, + value: variable.default, + light: null, + dark: null, + desktop: null, + color: null, + darkColor: null, + since: variable.since, + }); + } + } + report.skippedPublicComponents = skipped.sort(); + return tokens; +} + +/* ----------------------------------------------------------------- build */ + +export function buildFramework(inputs: FrameworkInputs): { + registry: FrameworkRegistry; + report: FrameworkReport; +} { + const { pointer, registry } = inputs; + if (registry.compatibility.id !== pointer.releaseId) { + throw new Error(`registry is bound to ${registry.compatibility.id}, not ${pointer.releaseId}`); + } + const blocked = new Set(registry.indexes.blocked); + const safe = new Set(registry.indexes.safe_to_suggest.filter(id => !blocked.has(id))); + const report: FrameworkReport = { skippedPublicComponents: [], ignoredTokenMedia: [] }; + + const desktopRem = inputs.desktopMinWidthPx / 16; + const desktopMedia = new RegExp(`^\\(min-width:\\s*${desktopRem}rem\\)$`); + const tokens = buildTokens( + parseCss(inputs.coreCss), + desktopMedia, + buildPublicVariables(inputs.publicVariables, registry, safe, report), + report, + ); + + return { + registry: { + schemaVersion: '1.0.0', + registryId: 'simai.sf-framework', + release: { + id: pointer.releaseId, + repository: pointer.repository, + registryCommit: pointer.registryCommit, + coreCommit: pointer.runtime.core.commit, + smartCommit: pointer.runtime.smart.commit, + registrySha256: inputs.registrySha256, + }, + desktopMinWidth: `${desktopRem}rem`, + tags: buildTags(registry, safe, inputs.manifests), + classes: buildClasses(inputs.utilityCss, registry, safe), + tokens, + }, + report, + }; +} diff --git a/src/generate/checkPackage.ts b/src/generate/checkPackage.ts new file mode 100644 index 0000000..969983f --- /dev/null +++ b/src/generate/checkPackage.ts @@ -0,0 +1,37 @@ +/* + * Asserts that `vsce ls` lists only runtime files and all of them. + * Usage: npx vsce ls | node out/generate/checkPackage.js + */ +import * as fs from 'fs'; + +const allowed = [ + /^package\.json$/, + /^README\.md$/, + /^CHANGELOG\.md$/, + /^LICENSE$/, + /^images\/icon\.png$/, + /^data\/[a-z0-9-]+\.json$/, + /^snippets\/[a-z0-9-]+\.json$/, + /^out\/(?!test\/|generate\/)[A-Za-z0-9/_-]+\.js$/, +]; +const required = [ + 'package.json', + 'README.md', + 'CHANGELOG.md', + 'LICENSE', + 'images/icon.png', + 'data/sf-autocomplete.json', + 'data/sf-framework.json', + 'out/extension.js', +]; + +const files = fs.readFileSync(0, 'utf8').split('\n').map(line => line.trim()).filter(Boolean); +const unexpected = files.filter(file => !allowed.some(pattern => pattern.test(file))); +const missing = required.filter(file => !files.includes(file)); +if (unexpected.length > 0 || missing.length > 0) { + process.stderr.write( + `package check FAIL\nunexpected: ${unexpected.join(', ') || '-'}\nmissing: ${missing.join(', ') || '-'}\n`, + ); + process.exit(1); +} +process.stdout.write(`package check PASS: ${files.length} runtime files\n`); diff --git a/src/generate/css.ts b/src/generate/css.ts new file mode 100644 index 0000000..421325a --- /dev/null +++ b/src/generate/css.ts @@ -0,0 +1,100 @@ +/* + * A small CSS reader for the built SIMAI Framework sheets. It understands + * nested at-rules (@layer, @media, @supports) and plain style rules, which is + * all the generator needs; it is not a general CSS parser. + */ + +export interface CssRule { + selector: string; + /** Conditions of the enclosing @media rules, outermost first. */ + media: string[]; + declarations: [property: string, value: string][]; +} + +const stripComments = (text: string): string => text.replace(/\/\*[\s\S]*?\*\//g, ''); + +/** + * Reads up to the next top-level `{`, `;` or `}`, skipping strings and + * parentheses, and returns the index of that delimiter. + */ +function scan(text: string, start: number): number { + let depth = 0; + for (let index = start; index < text.length; index += 1) { + const char = text[index]; + if (char === '\\') { + index += 1; + } else if (char === '"' || char === "'") { + const end = text.indexOf(char, index + 1); + index = end < 0 ? text.length : end; + } else if (char === '(') { + depth += 1; + } else if (char === ')') { + depth -= 1; + } else if (depth === 0 && (char === '{' || char === ';' || char === '}')) { + return index; + } + } + return text.length; +} + +export function parseCss(source: string): CssRule[] { + const text = stripComments(source); + const rules: CssRule[] = []; + + const readBlock = (start: number, media: string[], selector: string | null): number => { + const declarations: [string, string][] = []; + let index = start; + while (index < text.length) { + const end = scan(text, index); + const prelude = text.slice(index, end).trim(); + const delimiter = text[end]; + if (delimiter === '{') { + if (prelude.startsWith('@media')) { + index = readBlock(end + 1, [...media, prelude.slice(6).trim()], null); + } else if (prelude.startsWith('@')) { + index = readBlock(end + 1, media, null); + } else { + index = readBlock(end + 1, media, prelude.replace(/\s+/g, ' ')); + } + continue; + } + if (prelude && selector !== null) { + const colon = prelude.indexOf(':'); + if (colon > 0) { + declarations.push([ + prelude.slice(0, colon).trim(), + prelude.slice(colon + 1).trim(), + ]); + } + } + index = end + 1; + if (delimiter === '}' || delimiter === undefined) break; + } + if (selector !== null) rules.push({ selector, media, declarations }); + return index; + }; + + readBlock(0, [], null); + return rules; +} + +/** Splits a comma-separated list at the top level (outside parentheses). */ +export function splitTopLevel(value: string, separator = ','): string[] { + const parts: string[] = []; + let depth = 0; + let current = ''; + for (const char of value) { + if (char === '(') depth += 1; + if (char === ')') depth -= 1; + if (char === separator && depth === 0) { + parts.push(current.trim()); + current = ''; + } else { + current += char; + } + } + parts.push(current.trim()); + return parts; +} + +export { unescapeCssIdentifier as unescapeCss } from '../registry/cssName'; diff --git a/src/generate/frameworkInputs.ts b/src/generate/frameworkInputs.ts new file mode 100644 index 0000000..bb4939d --- /dev/null +++ b/src/generate/frameworkInputs.ts @@ -0,0 +1,98 @@ +import * as crypto from 'crypto'; + +export const sha256 = (content: Buffer | string): string => + crypto.createHash('sha256').update(content).digest('hex'); + +export interface RuntimeSource { + owner: string; + commit: string; + tree: string; + runtime_path: string; + runtime_tree: string; +} + +export interface ReleaseLock { + compatibility_id: string; + runtime_sources: { + core: RuntimeSource; + smart: RuntimeSource; + }; +} + +export interface RawRegistryEntry { + id: string; + kind: 'component' | 'smart-component' | 'utility' | 'recipe'; + name: string; + title: string; + lifecycle: string; + documentation_refs: string[]; + provenance: { + commit: string; + repository: string; + source_refs: string[]; + }; + runtime: { + asset_root?: string; + rule_name?: string; + rule_names?: string[]; + tags?: string[]; + }; +} + +export interface RawContractRegistry { + schema_id: string; + schema_version: number; + compatibility: { id: string }; + indexes: { + safe_to_suggest: string[]; + blocked: string[]; + }; + entries: RawRegistryEntry[]; +} + +export interface RawManifestProperty { + type?: string | string[]; + default?: unknown; + description?: string; + enum?: unknown[]; + examples?: unknown[]; +} + +export interface RawSmartManifest { + id: string; + title: string; + summary: string; + lifecycle: string; + custom_element: string; + inputs?: { properties?: Record }; + compatibility?: { + deprecations?: { path: string; since?: string | null; replacement?: string | null }[]; + replacement?: string | null; + }; +} + +export interface RawPublicVariables { + schema: string; + components: { + component: string; + selector: string; + variables: { + name: string; + role: string; + summary: string; + default: string; + since: string; + }[]; + }[]; +} + +export interface FrameworkPointer { + releaseId: string; + repository: string; + registryCommit: string; + runtime: { + core: { commit: string; tree: string; runtimeTree: string }; + smart: { commit: string; tree: string; runtimeTree: string }; + }; + files: Record; +} diff --git a/src/generate/generateFramework.ts b/src/generate/generateFramework.ts new file mode 100644 index 0000000..9f9e6cb --- /dev/null +++ b/src/generate/generateFramework.ts @@ -0,0 +1,108 @@ +/* + * Builds data/sf-framework.json from the vendored SIMAI Framework snapshot in + * contracts/framework/. With --check it only verifies that the snapshot + * matches its pointer and that the runtime file is up to date. + */ +import * as fs from 'fs'; +import * as path from 'path'; +import { validateFrameworkRegistry } from '../registry/frameworkValidation'; +import { buildFramework } from './buildFramework'; +import { + FrameworkPointer, + RawContractRegistry, + RawPublicVariables, + RawSmartManifest, + sha256, +} from './frameworkInputs'; + +const repositoryRoot = path.resolve(__dirname, '..', '..'); +const snapshotRoot = path.join(repositoryRoot, 'contracts', 'framework'); +const pointerPath = path.join(repositoryRoot, 'contracts', 'framework.pointer.json'); +const sizingContractPath = path.join(repositoryRoot, 'contracts', 'adaptive-sizing.v1.json'); +const outputPath = path.join(repositoryRoot, 'data', 'sf-framework.json'); + +const listFiles = (root: string, prefix = ''): string[] => + fs.readdirSync(path.join(root, prefix), { withFileTypes: true }).flatMap(item => { + const relative = prefix ? `${prefix}/${item.name}` : item.name; + return item.isDirectory() ? listFiles(root, relative) : [relative]; + }); + +const pointer = JSON.parse(fs.readFileSync(pointerPath, 'utf8')) as FrameworkPointer; +const expected = Object.keys(pointer.files).sort(); +const actual = listFiles(snapshotRoot).sort(); +if (JSON.stringify(expected) !== JSON.stringify(actual)) { + const missing = expected.filter(file => !actual.includes(file)); + const extra = actual.filter(file => !expected.includes(file)); + throw new Error( + `framework snapshot does not match its pointer; missing: ${missing.join(', ') || '-'}; ` + + `extra: ${extra.join(', ') || '-'}`, + ); +} +const contents = new Map(); +for (const file of expected) { + const content = fs.readFileSync(path.join(snapshotRoot, file)); + if (sha256(content) !== pointer.files[file].sha256) { + throw new Error(`pinned framework file ${file} does not match its pointer hash`); + } + contents.set(file, content); +} +const text = (file: string): string => contents.get(file)!.toString('utf8'); +const json = (file: string): T => JSON.parse(text(file)) as T; +const select = (pattern: RegExp, read: (file: string) => T): Record => + Object.fromEntries(expected.filter(file => pattern.test(file)).map(file => [file, read(file)])); + +const sizingContract = JSON.parse(fs.readFileSync(sizingContractPath, 'utf8')) as { + modes: { desktop: { minWidthPx: number } }; +}; + +const { registry, report } = buildFramework({ + pointer, + registry: json('framework-contract-registry.json'), + registrySha256: pointer.files['framework-contract-registry.json'].sha256, + coreCss: text('core/core.css'), + publicVariables: json('core/public-variables.v1.json'), + utilityCss: select(/^utility\//, text), + manifests: select(/^smart\//, file => json(file)), + desktopMinWidthPx: sizingContract.modes.desktop.minWidthPx, +}); +validateFrameworkRegistry(registry); + +/** One array item per line: readable diffs without pretty-printing the bulk. */ +function serialize(value: object): string { + const lines = Object.entries(value).map(([key, item]) => { + if (Array.isArray(item)) { + const body = item.map(element => JSON.stringify(element)).join(',\n'); + return `${JSON.stringify(key)}: [\n${body}\n]`; + } + return `${JSON.stringify(key)}: ${JSON.stringify(item)}`; + }); + return `{\n${lines.join(',\n')}\n}\n`; +} + +const serialized = serialize(registry); +const summary = `${registry.tags.length} tags, ${registry.classes.length} classes, ` + + `${registry.tokens.length} tokens from ${pointer.releaseId}`; +if (process.argv.includes('--check')) { + const current = fs.existsSync(outputPath) ? fs.readFileSync(outputPath, 'utf8') : null; + if (current !== serialized) { + process.stderr.write('data/sf-framework.json is stale\n'); + process.exitCode = 1; + } else { + process.stdout.write(`sf-framework parity PASS ${summary}\n`); + } +} else { + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); + fs.writeFileSync(outputPath, serialized); + process.stdout.write(`generated ${summary}\n`); + if (report.skippedPublicComponents.length > 0) { + process.stdout.write( + `public variables skipped (component not safe to suggest): ` + + `${report.skippedPublicComponents.join(', ')}\n`, + ); + } + if (report.ignoredTokenMedia.length > 0) { + process.stdout.write( + `token values ignored under media: ${report.ignoredTokenMedia.join('; ')}\n`, + ); + } +} diff --git a/src/generate/generateJson.ts b/src/generate/generateJson.ts index e940bfd..91badd2 100644 --- a/src/generate/generateJson.ts +++ b/src/generate/generateJson.ts @@ -55,8 +55,7 @@ const pointerPath = path.join( ); const outputPath = path.join( repositoryRoot, - 'src', - 'registry', + 'data', 'sf-autocomplete.json', ); @@ -223,7 +222,7 @@ if (process.argv.includes('--check')) { ? fs.readFileSync(outputPath, 'utf8') : null; if (actual !== serialized) { - process.stderr.write('src/registry/sf-autocomplete.json is stale\n'); + process.stderr.write('data/sf-autocomplete.json is stale\n'); process.exitCode = 1; } else { process.stdout.write( diff --git a/src/generate/vendorFramework.ts b/src/generate/vendorFramework.ts new file mode 100644 index 0000000..3ce77a6 --- /dev/null +++ b/src/generate/vendorFramework.ts @@ -0,0 +1,149 @@ +/* + * Copies a pinned SIMAI Framework snapshot from a local simai/ui clone into + * contracts/framework/ and writes contracts/framework.pointer.json. + * + * Every file is read with `git show :` at the commits named by + * the release lock, never from the working tree or a moving branch head. + * This is a maintainer tool; the extension itself never reads other + * repositories. + * + * Usage: + * node out/generate/vendorFramework.js \ + * --ui ../ui --release ui-a9636b60d3e3 --registry-commit + */ +import { execFileSync } from 'child_process'; +import * as fs from 'fs'; +import * as path from 'path'; +import { + FrameworkPointer, + RawContractRegistry, + ReleaseLock, + sha256, +} from './frameworkInputs'; + +const repositoryRoot = path.resolve(__dirname, '..', '..'); +const snapshotRoot = path.join(repositoryRoot, 'contracts', 'framework'); +const pointerPath = path.join(repositoryRoot, 'contracts', 'framework.pointer.json'); + +function option(name: string, fallback?: string): string { + const index = process.argv.indexOf(`--${name}`); + const value = index >= 0 ? process.argv[index + 1] : fallback; + if (!value) throw new Error(`--${name} is required`); + return value; +} + +const uiPath = path.resolve(option('ui', path.join(repositoryRoot, '..', 'ui'))); +const releaseId = option('release'); +const registryCommitInput = option('registry-commit'); + +const git = (...args: string[]): Buffer => + execFileSync('git', ['-C', uiPath, ...args], { maxBuffer: 64 * 1024 * 1024 }); +const gitText = (...args: string[]): string => git(...args).toString('utf8').trim(); +const show = (commit: string, file: string): Buffer => git('show', `${commit}:${file}`); +const treeOf = (spec: string): string => gitText('rev-parse', spec); + +const registryCommit = treeOf(`${registryCommitInput}^{commit}`); +const lock = JSON.parse( + show(registryCommit, `contracts/releases/${releaseId}.lock.json`).toString('utf8'), +) as ReleaseLock; +if (lock.compatibility_id !== releaseId) { + throw new Error(`release lock ${releaseId} names ${lock.compatibility_id}`); +} + +for (const [name, source] of Object.entries(lock.runtime_sources)) { + if (treeOf(`${source.commit}^{tree}`) !== source.tree) { + throw new Error(`${name}: commit ${source.commit} does not have tree ${source.tree}`); + } + if (treeOf(`${source.commit}:${source.runtime_path}`) !== source.runtime_tree) { + throw new Error(`${name}: ${source.runtime_path} does not match the release runtime tree`); + } +} +const core = lock.runtime_sources.core; +const smart = lock.runtime_sources.smart; + +const registryPath = 'contracts/generated/framework-contract-registry.json'; +const registryBuffer = show(registryCommit, registryPath); +const registry = JSON.parse(registryBuffer.toString('utf8')) as RawContractRegistry; +if (registry.compatibility.id !== releaseId) { + throw new Error(`registry at ${registryCommit} is bound to ${registry.compatibility.id}`); +} + +interface PlannedFile { + target: string; + commit: string; + path: string; + content: Buffer; +} + +const planned: PlannedFile[] = []; +const plan = (target: string, commit: string, file: string): void => { + planned.push({ target, commit, path: file, content: show(commit, file) }); +}; + +planned.push({ + target: 'framework-contract-registry.json', + commit: registryCommit, + path: registryPath, + content: registryBuffer, +}); +plan('core/core.css', core.commit, 'distr/core/css/core.css'); +plan('core/public-variables.v1.json', core.commit, 'distr/core/contracts/public-variables.v1.json'); + +const safe = new Set(registry.indexes.safe_to_suggest); +for (const entry of registry.entries) { + if (!safe.has(entry.id)) continue; + if (entry.kind === 'utility') { + const root = entry.runtime.asset_root; + if (!root) throw new Error(`${entry.id} has no asset root`); + const files = gitText('ls-tree', '-r', '--name-only', core.commit, `${root}/`) + .split('\n') + .filter(file => /\/([a-z0-9]+)\/css\/\1\.css$/.test(file)); + if (files.length === 0) throw new Error(`${entry.id} has no utility CSS`); + for (const file of files) { + plan(`utility/${file.slice('distr/utility/'.length)}`, core.commit, file); + } + } + if (entry.kind === 'smart-component') { + const ref = entry.provenance.source_refs.find(item => item.includes(':distr/smart/')); + if (!ref) throw new Error(`${entry.id} has no smart source ref`); + const [repoAndCommit, folder] = ref.split(':'); + const commit = repoAndCommit.split('@')[1]; + if (commit !== smart.commit) { + throw new Error(`${entry.id} points at ${commit}, not the release smart commit`); + } + plan( + `smart/${folder.slice('distr/smart/'.length)}/smart.manifest.json`, + commit, + `${folder}/smart.manifest.json`, + ); + } +} + +fs.rmSync(snapshotRoot, { recursive: true, force: true }); +for (const file of planned) { + const target = path.join(snapshotRoot, file.target); + fs.mkdirSync(path.dirname(target), { recursive: true }); + fs.writeFileSync(target, file.content); +} + +const pointer: FrameworkPointer = { + releaseId, + repository: 'simai/ui', + registryCommit, + runtime: { + core: { commit: core.commit, tree: core.tree, runtimeTree: core.runtime_tree }, + smart: { commit: smart.commit, tree: smart.tree, runtimeTree: smart.runtime_tree }, + }, + files: Object.fromEntries( + planned + .sort((left, right) => left.target.localeCompare(right.target)) + .map(file => [file.target, { + source: `${file.commit}:${file.path}`, + sha256: sha256(file.content), + }]), + ), +}; +fs.writeFileSync(pointerPath, `${JSON.stringify(pointer, null, 2)}\n`); +process.stdout.write( + `vendored ${planned.length} files from simai/ui ${releaseId} (registry ${registryCommit})\n`, +); diff --git a/src/markup.ts b/src/markup.ts new file mode 100644 index 0000000..fc18b03 --- /dev/null +++ b/src/markup.ts @@ -0,0 +1,82 @@ +/* + * Recognises where the cursor is inside HTML-like markup (HTML, JSX, Vue + * templates, template literals): typing a tag name, an attribute name or an + * attribute value of an sf- custom element. + */ + +export type MarkupRequest = + | { kind: 'tag'; prefix: string } + | { kind: 'attribute'; tag: string; prefix: string; present: string[] } + | { kind: 'value'; tag: string; attribute: string; prefix: string }; + +const isSpace = (char: string): boolean => /\s/.test(char); + +export function detectMarkupRequest(textBefore: string): MarkupRequest | undefined { + const open = textBefore.lastIndexOf('<'); + if (open < 0) return undefined; + const inside = textBefore.slice(open + 1); + + const typingTag = inside.match(/^([a-z][a-z0-9-]*)?$/i); + if (typingTag) return { kind: 'tag', prefix: typingTag[1] ?? '' }; + + const tag = inside.match(/^(sf-[a-z0-9-]+)(?=[\s/])/)?.[1]; + if (!tag) return undefined; + + const rest = inside.slice(tag.length); + const present: string[] = []; + let index = 0; + const skipSpace = (): void => { + while (index < rest.length && isSpace(rest[index])) index += 1; + }; + + while (index <= rest.length) { + skipSpace(); + if (index >= rest.length) return { kind: 'attribute', tag, prefix: '', present }; + const char = rest[index]; + if (char === '>') return undefined; + if (char === '/') { + index += 1; + continue; + } + + const nameStart = index; + while (index < rest.length && !/[\s"'>/=]/.test(rest[index])) index += 1; + const name = rest.slice(nameStart, index); + if (index >= rest.length) return { kind: 'attribute', tag, prefix: name, present }; + if (name === '') { + // A stray quote or "=": step over it. + index += 1; + continue; + } + + skipSpace(); + if (rest[index] !== '=') { + present.push(name); + continue; + } + index += 1; + skipSpace(); + if (index >= rest.length) return { kind: 'value', tag, attribute: name, prefix: '' }; + + const quote = rest[index]; + if (quote === '"' || quote === "'") { + const close = rest.indexOf(quote, index + 1); + if (close < 0) { + return { kind: 'value', tag, attribute: name, prefix: rest.slice(index + 1) }; + } + index = close + 1; + } else if (quote === '{') { + const close = rest.indexOf('}', index + 1); + if (close < 0) return undefined; + index = close + 1; + } else { + const valueStart = index; + while (index < rest.length && !/[\s>]/.test(rest[index])) index += 1; + if (index >= rest.length) { + return { kind: 'value', tag, attribute: name, prefix: rest.slice(valueStart) }; + } + } + present.push(name); + } + return undefined; +} diff --git a/src/registry/color.ts b/src/registry/color.ts new file mode 100644 index 0000000..2fc2cc6 --- /dev/null +++ b/src/registry/color.ts @@ -0,0 +1,62 @@ +import { Rgba } from './frameworkTypes'; + +const round = (value: number): number => Math.round(value * 10000) / 10000; + +const named: Record = { + transparent: [0, 0, 0, 0], + white: [1, 1, 1, 1], + black: [0, 0, 0, 1], +}; + +/** Parses hex, rgb()/rgba() and a few keywords. Returns channels in 0..1. */ +export function parseColor(value: string): Rgba | null { + const text = value.trim().toLowerCase(); + if (named[text]) return named[text]; + + const hex = text.match(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/)?.[1]; + if (hex) { + const full = hex.length <= 4 + ? hex.split('').map(char => char + char).join('') + : hex; + const channels = full.match(/../g)!.map(pair => parseInt(pair, 16) / 255); + return [ + round(channels[0]), + round(channels[1]), + round(channels[2]), + round(channels[3] ?? 1), + ]; + } + + const fn = text.match(/^rgba?\(([^()]*)\)$/)?.[1]; + if (fn) { + const parts = fn.split(/[\s,/]+/).filter(Boolean); + if (parts.length !== 3 && parts.length !== 4) return null; + const channel = (part: string): number => part.endsWith('%') + ? parseFloat(part) / 100 + : parseFloat(part) / 255; + const alpha = parts[3] === undefined + ? 1 + : parts[3].endsWith('%') ? parseFloat(parts[3]) / 100 : parseFloat(parts[3]); + const result: Rgba = [ + channel(parts[0]), + channel(parts[1]), + channel(parts[2]), + alpha, + ]; + if (result.some(item => !Number.isFinite(item))) return null; + return result.map(item => round(Math.min(1, Math.max(0, item)))) as Rgba; + } + return null; +} + +/** Formats a colour the way the VS Code suggest widget recognises it. */ +export function formatColor([red, green, blue, alpha]: Rgba): string { + const byte = (value: number): number => Math.round(value * 255); + if (alpha >= 1) { + return `#${[red, green, blue] + .map(value => byte(value).toString(16).padStart(2, '0')) + .join('')}`; + } + const opacity = Number(alpha.toFixed(2)).toString().replace(/^0\./, '0.'); + return `rgba(${byte(red)}, ${byte(green)}, ${byte(blue)}, ${opacity})`; +} diff --git a/src/registry/cssName.ts b/src/registry/cssName.ts new file mode 100644 index 0000000..4f89aed --- /dev/null +++ b/src/registry/cssName.ts @@ -0,0 +1,3 @@ +/** Turns a CSS-escaped identifier (md\:flex, w-1\/2) into its literal form. */ +export const unescapeCssIdentifier = (identifier: string): string => + identifier.replace(/\\(.)/g, '$1'); diff --git a/src/registry/frameworkTypes.ts b/src/registry/frameworkTypes.ts new file mode 100644 index 0000000..db7a1c0 --- /dev/null +++ b/src/registry/frameworkTypes.ts @@ -0,0 +1,78 @@ +export interface Deprecation { + since: string | null; + /** A stable ID, attribute, tag or a short instruction, as the Framework states it. */ + replacement: string | null; +} + +export interface FrameworkAttribute { + name: string; + type: string; + default: string | null; + description: string | null; + /** Closed set of allowed values (enum). */ + values: string[]; + /** Open examples, offered after the allowed values. */ + examples: string[]; + deprecated: Deprecation | null; +} + +export interface FrameworkTag { + tag: string; + id: string; + title: string; + summary: string; + lifecycle: string; + deprecated: Deprecation | null; + docs: string[]; + attributes: FrameworkAttribute[]; +} + +export interface FrameworkClass { + /** Literal class name as written in HTML, e.g. md:flex. */ + name: string; + id: string; + family: string; + breakpoint: string | null; + media: string | null; + declarations: string; + lifecycle: string; +} + +export type Rgba = [number, number, number, number]; + +export interface FrameworkToken { + /** Name as written in CSS, with escapes, e.g. --sf-radius-1\/2. */ + name: string; + group: string; + source: 'core' | 'component'; + component: string | null; + summary: string | null; + /** Declared value (mobile, before resolution). */ + value: string; + /** Resolved value: light scheme, mobile mode. */ + light: string | null; + /** Resolved dark-scheme value, when it differs. */ + dark: string | null; + /** Resolved desktop value, when it differs. */ + desktop: string | null; + color: Rgba | null; + darkColor: Rgba | null; + since: string | null; +} + +export interface FrameworkRegistry { + schemaVersion: '1.0.0'; + registryId: 'simai.sf-framework'; + release: { + id: string; + repository: string; + registryCommit: string; + coreCommit: string; + smartCommit: string; + registrySha256: string; + }; + desktopMinWidth: string; + tags: FrameworkTag[]; + classes: FrameworkClass[]; + tokens: FrameworkToken[]; +} diff --git a/src/registry/frameworkValidation.ts b/src/registry/frameworkValidation.ts new file mode 100644 index 0000000..322fdad --- /dev/null +++ b/src/registry/frameworkValidation.ts @@ -0,0 +1,48 @@ +import { FrameworkRegistry } from './frameworkTypes'; + +const unique = (names: string[], label: string): void => { + const seen = new Set(); + for (const name of names) { + if (!name || seen.has(name)) throw new Error(`duplicate or empty ${label}: ${name}`); + seen.add(name); + } +}; + +export function validateFrameworkRegistry(value: unknown): FrameworkRegistry { + if (!value || typeof value !== 'object') { + throw new Error('framework registry must be an object'); + } + const registry = value as FrameworkRegistry; + if ( + registry.schemaVersion !== '1.0.0' + || registry.registryId !== 'simai.sf-framework' + ) { + throw new Error('unsupported framework registry schema or identity'); + } + if (!/^ui-[0-9a-f]{12}$/.test(registry.release?.id ?? '')) { + throw new Error('framework registry has no release identity'); + } + for (const key of ['registryCommit', 'coreCommit', 'smartCommit'] as const) { + if (!/^[0-9a-f]{40}$/.test(registry.release[key])) { + throw new Error(`framework registry ${key} is not a full commit`); + } + } + if ( + !Array.isArray(registry.tags) + || !Array.isArray(registry.classes) + || !Array.isArray(registry.tokens) + ) { + throw new Error('framework registry sections are missing'); + } + unique(registry.tags.map(tag => tag.tag), 'tag'); + unique(registry.classes.map(item => item.name), 'class'); + unique(registry.tokens.map(token => token.name), 'token'); + for (const tag of registry.tags) { + if (!tag.tag.startsWith('sf-')) throw new Error(`tag without sf- prefix: ${tag.tag}`); + unique(tag.attributes.map(attribute => attribute.name), `${tag.tag} attribute`); + } + for (const token of registry.tokens) { + if (!token.name.startsWith('--sf-')) throw new Error(`token without --sf- prefix: ${token.name}`); + } + return registry; +} diff --git a/src/registry/validation.ts b/src/registry/validation.ts index e849626..fc22dc1 100644 --- a/src/registry/validation.ts +++ b/src/registry/validation.ts @@ -6,8 +6,8 @@ import { export const expectedContract = { id: 'simai.vertical-sizing', - version: '1.1.0', - sha256: '333d78f0f3abe6f47c9caa1fc3c53c4d2894e122a922a400804383266cbd72f5', + version: '1.3.0', + sha256: 'b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45', } as const; const allowedContexts = new Set([ diff --git a/src/targets.ts b/src/targets.ts new file mode 100644 index 0000000..3cec65c --- /dev/null +++ b/src/targets.ts @@ -0,0 +1,77 @@ +/* + * Finds the SIMAI Framework name under the cursor for hovers. + */ +import { detectCompletionRequest, isStylesheetLanguage } from './completion'; +import { unescapeCssIdentifier } from './registry/cssName'; +import { detectMarkupRequest } from './markup'; + +export type HoverTarget = + | { kind: 'token'; name: string; start: number; end: number } + | { kind: 'tag'; name: string; start: number; end: number } + | { kind: 'attribute'; tag: string; name: string; start: number; end: number } + | { kind: 'class'; name: string; start: number; end: number }; + +function covering( + line: string, + character: number, + pattern: RegExp, + group = 0, +): { text: string; start: number; end: number } | undefined { + for (const match of line.matchAll(pattern)) { + const text = match[group]; + const start = match.index! + match[0].indexOf(text); + const end = start + text.length; + if (character >= start && character <= end) return { text, start, end }; + } + return undefined; +} + +/** + * @param textAbove document text from a few lines above up to the start of + * `line`, so that tags spanning several lines are recognised. + */ +export function findHoverTarget( + line: string, + character: number, + languageId: string, + textAbove = '', +): HoverTarget | undefined { + const token = covering(line, character, /--sf-(?:\\.|[A-Za-z0-9_-])+/g); + if (token) return { kind: 'token', name: token.text, start: token.start, end: token.end }; + + if (isStylesheetLanguage(languageId)) { + const selector = covering(line, character, /\.((?:\\.|[A-Za-z0-9_-])+)/g, 1); + if (selector) { + return { + kind: 'class', + name: unescapeCssIdentifier(selector.text), + start: selector.start, + end: selector.end, + }; + } + return undefined; + } + + const tag = covering(line, character, /<\/?(sf-[a-z0-9-]+)/g, 1); + if (tag) return { kind: 'tag', name: tag.text, start: tag.start, end: tag.end }; + + const word = covering(line, character, /[^\s"'<>=`{}]+/g); + if (!word) return undefined; + + const classRequest = detectCompletionRequest(line, word.end, languageId); + if (classRequest?.context === 'htmlClass' && classRequest.prefix === word.text) { + return { kind: 'class', name: word.text, start: word.start, end: word.end }; + } + + const markup = detectMarkupRequest(textAbove + line.slice(0, word.start)); + if (markup?.kind === 'attribute' && /^[A-Za-z][A-Za-z0-9-]*$/.test(word.text)) { + return { + kind: 'attribute', + tag: markup.tag, + name: word.text, + start: word.start, + end: word.end, + }; + } + return undefined; +} diff --git a/src/test/extension.test.ts b/src/test/extension.test.ts deleted file mode 100644 index 6510cef..0000000 --- a/src/test/extension.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as assert from 'assert'; -import * as vscode from 'vscode'; - -suite('Extension Test Suite', () => { - vscode.window.showInformationMessage('Start all tests.'); - - test('Sample test', () => { - const result = 1 + 1; - assert.strictEqual(result, 2, '1 + 1 is 2'); - }); -}); diff --git a/src/test/framework.unit.test.ts b/src/test/framework.unit.test.ts new file mode 100644 index 0000000..c11ebfb --- /dev/null +++ b/src/test/framework.unit.test.ts @@ -0,0 +1,349 @@ +import * as assert from 'node:assert/strict'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import { test } from 'node:test'; +import { detectCompletionRequest } from '../completion'; +import { createIndex, describeToken, escapeClass, nearestColorTokens, toPx } from '../framework'; +import { buildFramework, FrameworkInputs } from '../generate/buildFramework'; +import { parseCss } from '../generate/css'; +import { RawContractRegistry, RawRegistryEntry } from '../generate/frameworkInputs'; +import { detectMarkupRequest } from '../markup'; +import { formatColor, parseColor } from '../registry/color'; +import { validateFrameworkRegistry } from '../registry/frameworkValidation'; +import { validateRegistry } from '../registry/validation'; +import { findHoverTarget } from '../targets'; + +const root = process.cwd(); +const readJson = (file: string): unknown => + JSON.parse(fs.readFileSync(path.resolve(root, file), 'utf8')); + +/* ------------------------------------------------------------ fixtures */ + +const entry = ( + id: string, + kind: RawRegistryEntry['kind'], + name: string, + runtime: RawRegistryEntry['runtime'] = {}, + lifecycle = 'released', +): RawRegistryEntry => ({ + id, + kind, + name, + title: name, + lifecycle, + documentation_refs: ['simai/ui@a9636b60d3e330edc2736b41f3791ebf8d1be391:README.md'], + provenance: { commit: 'a'.repeat(40), repository: 'https://github.com/simai/ui', source_refs: [] }, + runtime, +}); + +function fixture(): FrameworkInputs { + const registry: RawContractRegistry = { + schema_id: 'simai.framework.contract-registry', + schema_version: 1, + compatibility: { id: 'ui-a9636b60d3e3' }, + indexes: { + safe_to_suggest: ['utility.display', 'smart.buttons', 'smart.retired', 'utility.blocked'], + blocked: ['utility.blocked'], + }, + entries: [ + entry('utility.display', 'utility', 'display'), + entry('utility.blocked', 'utility', 'blocked'), + entry('utility.hidden', 'utility', 'hidden'), + entry('smart.buttons', 'smart-component', 'buttons', { tags: ['sf-button'] }, 'experimental'), + entry('smart.retired', 'smart-component', 'retired', { tags: ['sf-retired'] }), + entry('smart.unsafe', 'smart-component', 'unsafe', { tags: ['sf-unsafe'] }), + ], + }; + return { + pointer: { + releaseId: 'ui-a9636b60d3e3', + repository: 'simai/ui', + registryCommit: 'b'.repeat(40), + runtime: { + core: { commit: 'c'.repeat(40), tree: 'd'.repeat(40), runtimeTree: 'e'.repeat(40) }, + smart: { commit: 'f'.repeat(40), tree: 'd'.repeat(40), runtimeTree: 'e'.repeat(40) }, + }, + files: {}, + }, + registry, + registrySha256: '0'.repeat(64), + coreCss: ` + @layer sf.base { + :root { + --sf-blue-40: #005bbe; + --sf-blue-80: #acc7ff; + --sf-b2: 0.75rem; + --sf-c0: 1rem; + --sf-space-1\\/2: var(--sf-b2); + --sf-ghost: var(--sf-missing); + } + @media (min-width: 60rem) { + :root { --sf-space-1\\/2: var(--sf-c0); } + } + @media (min-width: 72rem) { + :root { --sf-space-1\\/2: 2rem; } + } + .theme-light, + .theme-dark { + /* comment */ + --sf-primary: light-dark(var(--sf-blue-40), var(--sf-blue-80)); + } + .sf-button { --sf-button--internal: 1px; } + }`, + publicVariables: { + schema: 'simai.framework.public-variables', + components: [ + { + component: 'button', + selector: '.sf-button', + variables: [{ + name: '--sf-button-gap', + role: 'gap', + summary: 'Gap.', + default: 'var(--sf-space-1/2)', + since: '2026-10-13', + }], + }, + { + component: 'unsafe', + selector: '.sf-unsafe', + variables: [{ + name: '--sf-unsafe-color', + role: 'color', + summary: 'Colour.', + default: 'red', + since: '2026-10-13', + }], + }, + ], + }, + utilityCss: { + 'utility/display/default/css/default.css': '@layer sf.utilities { .flex { display: flex; } .hidden, .none { display: none; } }', + 'utility/display/md/css/md.css': '@layer sf.utilities { @media (min-width: 44rem) { .md\\:flex { display: flex; } .md\\:flex:hover { display: flex; } } }', + }, + manifests: { + 'smart/buttons/smart.manifest.json': { + id: 'smart.buttons', + title: 'Buttons', + summary: 'A button.', + lifecycle: 'experimental', + custom_element: 'sf-button', + inputs: { + properties: { + size: { type: 'string', default: '1', enum: ['1/2', '1', '2'] }, + status: { type: 'string', default: '', enum: ['', 'error'] }, + loading: { type: 'boolean', default: false }, + position: { type: 'string', default: '' }, + }, + }, + compatibility: { + deprecations: [{ path: 'position', since: '1.3.0', replacement: 'openFor()' }], + replacement: null, + }, + }, + 'smart/retired/smart.manifest.json': { + id: 'smart.retired', + title: 'Retired', + summary: 'Old.', + lifecycle: 'experimental', + custom_element: 'sf-retired', + compatibility: { deprecations: [], replacement: 'smart.buttons' }, + }, + }, + desktopMinWidthPx: 960, + }; +} + +/* -------------------------------------------------------------- generator */ + +test('generator suggests only safe, unblocked registry entries', () => { + const { registry } = buildFramework(fixture()); + assert.deepEqual(registry.tags.map(tag => tag.tag), ['sf-button', 'sf-retired']); + assert.deepEqual( + registry.classes.map(item => item.name), + ['flex', 'hidden', 'md:flex', 'none'], + ); + assert.ok(registry.tokens.every(token => token.name !== '--sf-unsafe-color')); + assert.ok(registry.tokens.every(token => token.name !== '--sf-button--internal')); +}); + +test('generator resolves light-dark and the desktop mode', () => { + const { registry, report } = buildFramework(fixture()); + const primary = registry.tokens.find(token => token.name === '--sf-primary')!; + assert.equal(primary.light, '#005bbe'); + assert.equal(primary.dark, '#acc7ff'); + assert.equal(primary.group, 'color'); + assert.deepEqual(primary.color, [0, 0.3569, 0.7451, 1]); + + const space = registry.tokens.find(token => token.name === '--sf-space-1\\/2')!; + assert.equal(space.light, '0.75rem'); + assert.equal(space.desktop, '1rem'); + assert.deepEqual(report.ignoredTokenMedia, ['(min-width: 72rem)']); + + const ghost = registry.tokens.find(token => token.name === '--sf-ghost')!; + assert.equal(ghost.light, 'var(--sf-missing)'); +}); + +test('generator resolves unescaped references in public variable defaults', () => { + const { registry, report } = buildFramework(fixture()); + const gap = registry.tokens.find(token => token.name === '--sf-button-gap')!; + assert.equal(gap.source, 'component'); + assert.equal(gap.component, '.sf-button'); + assert.equal(gap.value, 'var(--sf-space-1/2)'); + assert.equal(gap.light, '0.75rem'); + assert.equal(gap.desktop, '1rem'); + assert.deepEqual(report.skippedPublicComponents, ['unsafe']); +}); + +test('generator keeps attributes, values and deprecations from the manifest', () => { + const { registry } = buildFramework(fixture()); + const button = registry.tags.find(tag => tag.tag === 'sf-button')!; + assert.equal(button.lifecycle, 'experimental'); + assert.equal(button.deprecated, null); + assert.equal( + button.docs[0], + 'https://github.com/simai/ui/blob/a9636b60d3e330edc2736b41f3791ebf8d1be391/README.md', + ); + const size = button.attributes.find(attribute => attribute.name === 'size')!; + assert.deepEqual(size.values, ['1/2', '1', '2']); + const status = button.attributes.find(attribute => attribute.name === 'status')!; + assert.deepEqual(status.values, ['error']); + const position = button.attributes.find(attribute => attribute.name === 'position')!; + assert.deepEqual(position.deprecated, { since: '1.3.0', replacement: 'openFor()' }); + + const retired = registry.tags.find(tag => tag.tag === 'sf-retired')!; + assert.deepEqual(retired.deprecated, { since: null, replacement: 'smart.buttons' }); +}); + +test('generator rejects a registry bound to another release', () => { + const inputs = fixture(); + inputs.registry.compatibility.id = 'ui-000000000000'; + assert.throws(() => buildFramework(inputs), /bound to ui-000000000000/); +}); + +test('generated classes keep media and merge pseudo-class rules', () => { + const { registry } = buildFramework(fixture()); + const mdFlex = registry.classes.find(item => item.name === 'md:flex')!; + assert.equal(mdFlex.breakpoint, 'md'); + assert.equal(mdFlex.media, '(min-width: 44rem)'); + assert.equal(mdFlex.declarations, 'display: flex;'); +}); + +test('CSS reader handles comments, nesting and strings', () => { + const rules = parseCss('/* a { } */ @layer x { @media (a) { .b, .c { color: red; content: "}"; } } .d { margin: 0 }'); + assert.deepEqual(rules, [ + { selector: '.b, .c', media: ['(a)'], declarations: [['color', 'red'], ['content', '"}"']] }, + { selector: '.d', media: [], declarations: [['margin', '0']] }, + ]); +}); + +/* ---------------------------------------------------- shipped registries */ + +test('shipped framework registry is pinned and only holds safe entries', () => { + const framework = validateFrameworkRegistry(readJson('data/sf-framework.json')); + const snapshot = readJson('contracts/framework/framework-contract-registry.json') as RawContractRegistry; + const safe = new Set(snapshot.indexes.safe_to_suggest); + const blocked = new Set(snapshot.indexes.blocked); + assert.equal(framework.release.id, 'ui-a9636b60d3e3'); + assert.equal(framework.release.coreCommit, 'a9636b60d3e330edc2736b41f3791ebf8d1be391'); + for (const id of [...framework.tags.map(tag => tag.id), ...framework.classes.map(item => item.id)]) { + assert.ok(safe.has(id) && !blocked.has(id), `${id} is not safe to suggest`); + } + assert.ok(framework.tags.length > 0); + assert.ok(framework.classes.length > 500); + assert.ok(framework.tokens.filter(token => token.color).length > 300); +}); + +test('index merges sizing contract data into core tokens', () => { + const index = createIndex( + validateFrameworkRegistry(readJson('data/sf-framework.json')), + validateRegistry(readJson('data/sf-autocomplete.json')), + ); + for (const entry of index.sizing.entries) { + assert.ok(index.tokenByName.has(entry.cssName), `${entry.cssName} is not suggested`); + } + const space = index.tokenByName.get('--sf-space-1')!; + const text = describeToken(index, space); + assert.match(text, /mobile \| 12px \(0\.75rem\)/); + assert.match(text, /simai\.vertical-sizing@1\.3\.0/); + assert.match(text, /ui-a9636b60d3e3/); + + const nearest = nearestColorTokens(index, [0, 0.3569, 0.7451, 1], 5); + assert.ok(nearest.some(token => token.name === '--sf-primary-40')); +}); + +/* ---------------------------------------------------------------- helpers */ + +test('colours parse and format for the suggest widget', () => { + assert.deepEqual(parseColor('#fff'), [1, 1, 1, 1]); + assert.deepEqual(parseColor('rgba(25,138,39,0.12157)'), [0.098, 0.5412, 0.1529, 0.1216]); + assert.deepEqual(parseColor('rgb(0 0 0 / 50%)'), [0, 0, 0, 0.5]); + assert.equal(parseColor('color-mix(in srgb, red, blue)'), null); + assert.equal(formatColor([0, 0.3569, 0.7451, 1]), '#005bbe'); + assert.equal(formatColor([0.098, 0.5412, 0.1529, 0.1216]), 'rgba(25, 138, 39, 0.12)'); +}); + +test('class names and sizes format for CSS', () => { + assert.equal(escapeClass('md:w-1/2'), 'md\\:w-1\\/2'); + assert.equal(toPx('0.875rem'), '14px'); + assert.equal(toPx('calc(1px * 2)'), 'calc(1px * 2)'); +}); + +test('class selectors complete only in stylesheets', () => { + assert.deepEqual(detectCompletionRequest('.md\\:fl', 7, 'css'), { + context: 'htmlClass', + prefix: 'md\\:fl', + replaceLength: 6, + escaped: true, + }); + assert.equal(detectCompletionRequest('document.bo', 11, 'typescript'), undefined); + assert.equal(detectCompletionRequest('

The end.', 11, 'html'), undefined); +}); + +test('markup context finds tags, attributes and values', () => { + assert.deepEqual(detectMarkupRequest('

te'), undefined); + assert.equal(detectMarkupRequest('
{ + assert.deepEqual( + findHoverTarget('color: var(--sf-radius-1\\/2);', 15, 'css'), + { kind: 'token', name: '--sf-radius-1\\/2', start: 11, end: 27 }, + ); + assert.deepEqual( + findHoverTarget('.md\\:flex { }', 3, 'scss'), + { kind: 'class', name: 'md:flex', start: 1, end: 9 }, + ); + assert.deepEqual( + findHoverTarget('', 4, 'html'), + { kind: 'tag', name: 'sf-button', start: 1, end: 10 }, + ); + assert.deepEqual( + findHoverTarget(' size="1">', 3, 'html', '', 24, 'typescriptreact'), + { kind: 'class', name: 'md:flex', start: 21, end: 28 }, + ); + assert.equal(findHoverTarget('

flex

', 5, 'html'), undefined); +}); diff --git a/src/test/registry.unit.test.ts b/src/test/registry.unit.test.ts index e1085d8..97eb787 100644 --- a/src/test/registry.unit.test.ts +++ b/src/test/registry.unit.test.ts @@ -12,17 +12,17 @@ import { validateRegistry } from '../registry/validation'; const registry = JSON.parse( fs.readFileSync( - path.resolve(process.cwd(), 'src/registry/sf-autocomplete.json'), + path.resolve(process.cwd(), 'data/sf-autocomplete.json'), 'utf8', ), ); test('generated registry has the accepted adaptive contract identity', () => { const valid = validateRegistry(registry); - assert.equal(valid.source.contractVersion, '1.1.0'); + assert.equal(valid.source.contractVersion, '1.3.0'); assert.equal( valid.source.sha256, - '333d78f0f3abe6f47c9caa1fc3c53c4d2894e122a922a400804383266cbd72f5', + 'b70d02d6902345e17954eafb44f24052b7478439184286bed5a8df6c69c1fe45', ); assert.ok(valid.entries.length > 50); }); diff --git a/src/test/runTest.ts b/src/test/runTest.ts index 964b655..b866deb 100644 --- a/src/test/runTest.ts +++ b/src/test/runTest.ts @@ -1,34 +1,39 @@ +import * as fs from 'fs'; +import * as os from 'os'; import * as path from 'path'; -import * as Mocha from 'mocha'; -import * as glob from 'glob'; +import { runTests } from '@vscode/test-electron'; -export function run(): Promise { - const mocha = new Mocha({ - ui: 'bdd', - color: true - }); - - const testsRoot = path.resolve(__dirname, '.'); - - return new Promise((resolve, reject) => { - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return reject(err); - } - - files.forEach(file => mocha.addFile(path.join(testsRoot, file))); - - try { - mocha.run(failures => { - if (failures > 0) { - reject(new Error(`${failures} tests failed.`)); - } else { - resolve(); - } - }); - } catch (err) { - reject(err); - } +async function main(): Promise { + // SF_EXTENSION_PATH runs the suite against another copy of the + // extension, for example the one installed from the packaged .vsix. + const extensionDevelopmentPath = process.env.SF_EXTENSION_PATH + ? path.resolve(process.env.SF_EXTENSION_PATH) + : path.resolve(__dirname, '..', '..'); + const extensionTestsPath = path.resolve(__dirname, 'suite', 'index'); + // VS Code refuses a user data directory whose IPC socket path would + // exceed the 103-character Unix socket limit, so keep it short. + const shortRoot = os.platform() === 'win32' ? os.tmpdir() : '/tmp'; + const userDataDir = fs.mkdtempSync(path.join(shortRoot, 'sfx.')); + try { + await runTests({ + extensionDevelopmentPath, + extensionTestsPath, + vscodeExecutablePath: process.env.VSCODE_EXECUTABLE_PATH || undefined, + version: process.env.VSCODE_TEST_VERSION || undefined, + launchArgs: [ + '--disable-extensions', + '--disable-workspace-trust', + '--skip-welcome', + '--skip-release-notes', + `--user-data-dir=${userDataDir}`, + ], }); - }); + } finally { + fs.rmSync(userDataDir, { recursive: true, force: true }); + } } + +main().catch(error => { + console.error(error); + process.exit(1); +}); diff --git a/src/test/suite/completion.ext.test.ts b/src/test/suite/completion.ext.test.ts new file mode 100644 index 0000000..a5f2d03 --- /dev/null +++ b/src/test/suite/completion.ext.test.ts @@ -0,0 +1,212 @@ +import * as assert from 'assert'; +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import * as vscode from 'vscode'; + +const extensions: Record = { + css: 'css', + scss: 'scss', + html: 'html', + vue: 'vue', + typescript: 'ts', + typescriptreact: 'tsx', +}; +const fixtureRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'sf-docs-')); +let fixtureCount = 0; + +/** + * Writes a real file and opens it, so the language comes from the file + * extension as in a user's workspace. `|` marks the cursor. + */ +async function open(language: string, marked: string): Promise<{ + document: vscode.TextDocument; + position: vscode.Position; +}> { + const offset = marked.indexOf('|'); + assert.ok(offset >= 0, 'fixture needs a cursor mark'); + fixtureCount += 1; + const file = path.join(fixtureRoot, `doc${fixtureCount}.${extensions[language]}`); + fs.writeFileSync(file, marked.slice(0, offset) + marked.slice(offset + 1)); + const document = await vscode.workspace.openTextDocument(file); + if (document.languageId !== language) { + await vscode.languages.setTextDocumentLanguage(document, language); + } + return { document, position: document.positionAt(offset) }; +} + +suiteTeardown(() => fs.rmSync(fixtureRoot, { recursive: true, force: true })); + +async function completions(language: string, marked: string): Promise { + const { document, position } = await open(language, marked); + const list = await vscode.commands.executeCommand( + 'vscode.executeCompletionItemProvider', + document.uri, + position, + ); + return list.items; +} + +async function hoverText(language: string, marked: string): Promise { + const { document, position } = await open(language, marked); + const hovers = await vscode.commands.executeCommand( + 'vscode.executeHoverProvider', + document.uri, + position, + ); + return hovers + .flatMap(hover => hover.contents) + .map(content => (typeof content === 'string' ? content : content.value)) + .join('\n'); +} + +const labelOf = (item: vscode.CompletionItem): string => + typeof item.label === 'string' ? item.label : item.label.label; +const find = (items: vscode.CompletionItem[], label: string): vscode.CompletionItem | undefined => + items.find(item => labelOf(item) === label); + +suite('completion provider', () => { + test('the first request after activation already returns SF variables', async () => { + const items = await completions('css', '.a { margin: var(--sf-sp|'); + const names = items.map(labelOf).filter(label => label.startsWith('--sf-space-')); + assert.ok(names.length >= 12, `expected spacing variables, got ${names.length}`); + const space = find(items, '--sf-space-1')!; + assert.equal(space.detail, 'mobile 12px · desktop 16px'); + assert.deepEqual( + [space.range instanceof vscode.Range ? space.range.start.character : -1], + ['.a { margin: var('.length], + ); + }); + + test('colour tokens carry a swatch colour', async () => { + const items = await completions('scss', '.a { color: var(--sf-primary|'); + const primary = find(items, '--sf-primary')!; + assert.equal(primary.kind, vscode.CompletionItemKind.Color); + assert.equal(primary.documentation, '#005bbe'); + assert.equal(primary.detail, 'light #005bbe · dark #acc7ff'); + }); + + test('fractional roles keep their escaped slash', async () => { + const items = await completions('css', '.a { border-radius: var(--sf-radius-1\\/|'); + assert.ok(find(items, '--sf-radius-1\\/2')); + }); + + test('public component variables are suggested', async () => { + const items = await completions('css', '.x { --sf-button-ra|'); + assert.ok(find(items, '--sf-button-radius')); + }); + + test('utility classes complete in class attributes with literal names', async () => { + const items = await completions('html', '
{ + const items = await completions('typescriptreact', 'const a =
{ + const items = await completions('html', ' { + const items = await completions('html', ''); + assert.match(text, /@media \(min-width: 44rem\) \{ \.md\\:flex \{ display: flex; \} \}/); + assert.match(text, /utility\.display` · released/); + }); + + test('tags show the summary, lifecycle and documentation', async () => { + const text = await hoverText('html', ''); + assert.match(text, /Buttons/); + assert.match(text, /smart\.buttons` · experimental/); + assert.match(text, /\[Documentation\]\(https:\/\/github\.com\/simai\/ui\/blob\//); + }); + + test('attributes show values and deprecation', async () => { + const text = await hoverText('html', ''); + assert.match(text, /\*\*Deprecated\*\* since 1\.3\.0/); + }); +}); + +suite('colour provider', () => { + test('colour tokens get swatches and nearest-token presentations', async () => { + const { document } = await open('css', '|.a { color: var(--sf-primary); background: var(--sf-space-1); }'); + const colors = await vscode.commands.executeCommand( + 'vscode.executeDocumentColorProvider', + document.uri, + ); + const ours = colors.filter(info => document.getText(info.range).startsWith('--sf-')); + assert.equal(ours.length, 1); + assert.equal(document.getText(ours[0].range), '--sf-primary'); + assert.equal(Math.round(ours[0].color.blue * 255), 0xbe); + + const presentations = await vscode.commands.executeCommand( + 'vscode.executeColorPresentationProvider', + ours[0].color, + { uri: document.uri, range: ours[0].range }, + ); + assert.ok(presentations.some(item => item.label === '--sf-primary')); + }); +}); diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts new file mode 100644 index 0000000..21a5e66 --- /dev/null +++ b/src/test/suite/index.ts @@ -0,0 +1,20 @@ +import * as path from 'path'; +import Mocha from 'mocha'; +import { globSync } from 'glob'; + +export function run(): Promise { + const mocha = new Mocha({ ui: 'tdd', color: true, timeout: 20000 }); + const testsRoot = __dirname; + for (const file of globSync('**/*.ext.test.js', { cwd: testsRoot })) { + mocha.addFile(path.join(testsRoot, file)); + } + return new Promise((resolve, reject) => { + mocha.run(failures => { + if (failures > 0) { + reject(new Error(`${failures} extension tests failed.`)); + } else { + resolve(); + } + }); + }); +} diff --git a/tsconfig.json b/tsconfig.json index 2f2f8f6..de0adc9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,10 @@ { "compilerOptions": { "module": "commonjs", - "target": "es6", + "target": "es2020", "outDir": "out", - "lib": ["es6"], + "lib": ["es2020"], + "esModuleInterop": true, "sourceMap": true, "rootDir": "src", "strict": true