gitextract_gl0n7f1_/ ├── .eslintrc.js ├── .flowconfig ├── .github/ │ ├── CODEOWNERS │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ └── feature.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── benchmarks.yml │ ├── tests.yml │ └── typos.toml ├── .gitignore ├── .prettierignore ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── .watchmanconfig ├── CHANGELOG.md ├── LICENSE ├── README.md ├── examples/ │ ├── example-bun/ │ │ ├── .eslintrc.js │ │ ├── README.md │ │ ├── bunfig.toml │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── build.mjs │ │ │ ├── dev.mjs │ │ │ └── start.mjs │ │ └── src/ │ │ ├── App.jsx │ │ ├── global.css │ │ ├── globalTokens.stylex.js │ │ ├── index.dev.html │ │ ├── index.html │ │ └── main.jsx │ ├── example-cli/ │ │ ├── .gitignore │ │ ├── .stylex.json5 │ │ ├── README.md │ │ ├── package.json │ │ ├── source/ │ │ │ ├── app/ │ │ │ │ ├── CardThemes.ts │ │ │ │ ├── CardTokens.stylex.ts │ │ │ │ ├── Counter.tsx │ │ │ │ ├── globalTokens.stylex.ts │ │ │ │ ├── globals.css │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ └── components/ │ │ │ └── Card.tsx │ │ └── tsconfig.json │ ├── example-esbuild/ │ │ ├── .eslintrc.js │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── scripts/ │ │ │ └── build.mjs │ │ └── src/ │ │ ├── App.jsx │ │ ├── global.css │ │ └── globalTokens.stylex.js │ ├── example-nextjs/ │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── InteractiveCard.tsx │ │ │ ├── app.css │ │ │ ├── darkMode.stylex.ts │ │ │ ├── globalTokens.stylex.ts │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── babel.config.js │ │ ├── components/ │ │ │ ├── Card.tsx │ │ │ └── CardTokens.stylex.ts │ │ ├── next.config.js │ │ ├── package.json │ │ ├── postcss.config.js │ │ └── tsconfig.json │ ├── example-react-router/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── server.js │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ └── MainArticle.tsx │ │ │ ├── entry.browser.tsx │ │ │ ├── entry.rsc.tsx │ │ │ ├── entry.ssr.tsx │ │ │ ├── routes/ │ │ │ │ ├── about/ │ │ │ │ │ └── route.tsx │ │ │ │ ├── config.ts │ │ │ │ ├── home/ │ │ │ │ │ └── route.tsx │ │ │ │ └── root/ │ │ │ │ ├── DevStyleXInject.tsx │ │ │ │ ├── client.tsx │ │ │ │ └── route.tsx │ │ │ └── stylex.css │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── example-redwoodsdk/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── DevStyleXInject.tsx │ │ │ │ ├── Document.tsx │ │ │ │ ├── components/ │ │ │ │ │ └── Copy.tsx │ │ │ │ ├── headers.ts │ │ │ │ ├── pages/ │ │ │ │ │ ├── Counter.tsx │ │ │ │ │ ├── Home.tsx │ │ │ │ │ └── Welcome.tsx │ │ │ │ ├── root.css │ │ │ │ └── shared/ │ │ │ │ └── links.ts │ │ │ ├── client.tsx │ │ │ └── worker.tsx │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── css.d.ts │ │ │ ├── rw.d.ts │ │ │ └── vite.d.ts │ │ ├── vite.config.mts │ │ ├── worker-configuration.d.ts │ │ └── wrangler.jsonc │ ├── example-rollup/ │ │ ├── README.md │ │ ├── babel.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ ├── rollup.config.mjs │ │ └── src/ │ │ ├── App.js │ │ └── index.js │ ├── example-rspack/ │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── rspack.config.js │ │ └── src/ │ │ ├── App.jsx │ │ ├── global.css │ │ └── main.jsx │ ├── example-storybook/ │ │ ├── .babelrc.cjs │ │ ├── .storybook/ │ │ │ ├── main.ts │ │ │ ├── preview.ts │ │ │ └── vitest.setup.ts │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── postcss.config.mjs │ │ ├── stories/ │ │ │ ├── Button.stories.ts │ │ │ ├── Button.tsx │ │ │ ├── Card.stories.ts │ │ │ ├── Card.tsx │ │ │ └── styles.css │ │ ├── vite-storybook.config.ts │ │ └── vitest.config.ts │ ├── example-vite/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.jsx │ │ │ ├── index.css │ │ │ └── main.jsx │ │ └── vite.config.mjs │ ├── example-vite-react/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ └── main.tsx │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── example-vite-rsc/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── DevStyleXInject.tsx │ │ │ ├── action.tsx │ │ │ ├── client.tsx │ │ │ ├── framework/ │ │ │ │ ├── entry.browser.tsx │ │ │ │ ├── entry.rsc.tsx │ │ │ │ └── entry.ssr.tsx │ │ │ ├── index.css │ │ │ └── root.tsx │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── example-waku/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── DevStyleXInject.tsx │ │ │ │ ├── counter.tsx │ │ │ │ ├── footer.tsx │ │ │ │ └── header.tsx │ │ │ ├── global.css │ │ │ ├── pages/ │ │ │ │ ├── _layout.tsx │ │ │ │ ├── about.tsx │ │ │ │ └── index.tsx │ │ │ └── pages.gen.ts │ │ ├── tsconfig.json │ │ └── waku.config.ts │ └── example-webpack/ │ ├── .babelrc.js │ ├── .eslintrc.js │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.jsx │ │ ├── app.css │ │ ├── components/ │ │ │ └── CTAButton.jsx │ │ ├── index.js │ │ └── tokens.stylex.js │ └── webpack.config.js ├── flow-typed/ │ ├── babel-plugins.js │ ├── environments/ │ │ ├── bom.js │ │ ├── cssom.js │ │ ├── dom.js │ │ ├── html.js │ │ ├── jsx.js │ │ ├── node.js │ │ └── streams.js │ ├── flow-api-translator.js │ ├── npm/ │ │ ├── @babel/ │ │ │ ├── cli_vx.x.x.js │ │ │ ├── core.js │ │ │ ├── eslint-parser_vx.x.x.js │ │ │ ├── generator.js │ │ │ ├── helper-module-imports.js │ │ │ ├── node_vx.x.x.js │ │ │ ├── parser.js │ │ │ ├── preset-env_vx.x.x.js │ │ │ ├── preset-flow_vx.x.x.js │ │ │ ├── preset-react_vx.x.x.js │ │ │ ├── preset-typescript_vx.x.x.js │ │ │ ├── traverse.js │ │ │ └── types.js │ │ ├── @chromatic-com/ │ │ │ └── storybook_vx.x.x.js │ │ ├── @csstools/ │ │ │ └── css-tokenizer_v3.x.x.js │ │ ├── ansis_vx.x.x.js │ │ ├── autoprefixer_vx.x.x.js │ │ ├── babel-loader_vx.x.x.js │ │ ├── benchmark_vx.x.x.js │ │ ├── brotli-size_vx.x.x.js │ │ ├── chalk_v4.x.x.js │ │ ├── clean-css_vx.x.x.js │ │ ├── clsx_v1.x.x.js │ │ ├── codemirror_vx.x.x.js │ │ ├── colors_v1.x.x.js │ │ ├── cross-env_vx.x.x.js │ │ ├── css-loader_vx.x.x.js │ │ ├── css-mediaquery_vx.x.x.js │ │ ├── css-shorthand-expand_vx.x.x.js │ │ ├── esbuild_vx.x.x.js │ │ ├── estree.js │ │ ├── fast-glob_vx.x.x.js │ │ ├── fb-watchman_vx.x.x.js │ │ ├── file-loader_vx.x.x.js │ │ ├── flow-bin_v0.x.x.js │ │ ├── flow-enums-runtime_v0.x.x.js │ │ ├── glob-parent_vx.x.x.js │ │ ├── html-webpack-plugin_vx.x.x.js │ │ ├── husky_vx.x.x.js │ │ ├── invariant_v2.x.x.js │ │ ├── is-glob_vx.x.x.js │ │ ├── jest-environment-jsdom_vx.x.x.js │ │ ├── jest_v27.x.x.js │ │ ├── jest_vx.x.x.js │ │ ├── js-yaml_v4.x.x.js │ │ ├── json5_vx.x.x.js │ │ ├── mkdirp_v1.x.x.js │ │ ├── next_vx.x.x.js │ │ ├── playwright_vx.x.x.js │ │ ├── postcss-loader_vx.x.x.js │ │ ├── postcss-nesting_vx.x.x.js │ │ ├── postcss-value-parser_vx.x.x.js │ │ ├── postcss_vx.x.x.js │ │ ├── react-codemirror2_vx.x.x.js │ │ ├── react-refresh_vx.x.x.js │ │ ├── react-syntax-highlighter_vx.x.x.js │ │ ├── rimraf_v5.x.x.js │ │ ├── rollup-plugin-jsx-remove-attributes_vx.x.x.js │ │ ├── rollup-plugin-node-externals_vx.x.x.js │ │ ├── rollup.js │ │ ├── scripts_vx.x.x.js │ │ ├── semver_v7.x.x.js │ │ ├── serve_vx.x.x.js │ │ ├── storybook_vx.x.x.js │ │ ├── string-natural-compare_v3.x.x.js │ │ ├── styled-jsx_vx.x.x.js │ │ ├── stylelint_vx.x.x.js │ │ ├── styleq_vx.x.x.js │ │ ├── terser_vx.x.x.js │ │ ├── typescript-eslint_vx.x.x.js │ │ ├── typescript_vx.x.x.js │ │ ├── unplugin_vx.x.x.js │ │ ├── vite-plugin-dts_vx.x.x.js │ │ ├── vitest_vx.x.x.js │ │ ├── webpack-cli_vx.x.x.js │ │ ├── webpack-dev-server_vx.x.x.js │ │ ├── webpack_v5.x.x.js │ │ └── yargs_v17.x.x.js │ └── stubs.js ├── flow-typed.config.json ├── package.json ├── packages/ │ ├── @stylexjs/ │ │ ├── babel-plugin/ │ │ │ ├── .babelrc │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── __fixtures__/ │ │ │ │ │ └── constants.stylex.js │ │ │ │ ├── evaluation-import-test.js │ │ │ │ ├── legacy/ │ │ │ │ │ ├── stylex-transform-call-test.js │ │ │ │ │ ├── stylex-transform-legacy-shorthands-test.js │ │ │ │ │ ├── transform-legacy-polyfills-test.js │ │ │ │ │ ├── transform-logical-properties-test.js │ │ │ │ │ ├── transform-logical-values-test.js │ │ │ │ │ └── transform-pre-plugin-test.js │ │ │ │ ├── transform-import-export-test.js │ │ │ │ ├── transform-polyfills-test.js │ │ │ │ ├── transform-process-test.js │ │ │ │ ├── transform-stylex-create-test.js │ │ │ │ ├── transform-stylex-createTheme-test.js │ │ │ │ ├── transform-stylex-defineConsts-test.js │ │ │ │ ├── transform-stylex-defineMarker-test.js │ │ │ │ ├── transform-stylex-defineVars-test.js │ │ │ │ ├── transform-stylex-keyframes-test.js │ │ │ │ ├── transform-stylex-positionTry-test.js │ │ │ │ ├── transform-stylex-props-test.js │ │ │ │ ├── transform-stylex-viewTransitionClass-test.js │ │ │ │ ├── transform-stylex-when-test.js │ │ │ │ ├── transform-value-normalization-test.js │ │ │ │ ├── validation-import-export-test.js │ │ │ │ ├── validation-stylex-create-test.js │ │ │ │ ├── validation-stylex-createTheme-test.js │ │ │ │ ├── validation-stylex-defineConsts-test.js │ │ │ │ ├── validation-stylex-defineMarker-test.js │ │ │ │ ├── validation-stylex-defineVars-test.js │ │ │ │ └── validation-stylex-keyframes-test.js │ │ │ ├── jest.config.js │ │ │ ├── package.json │ │ │ ├── rollup.config.mjs │ │ │ └── src/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── shared/ │ │ │ │ ├── README.md │ │ │ │ ├── common-types.d.ts │ │ │ │ ├── common-types.js │ │ │ │ ├── hash.js │ │ │ │ ├── index.js │ │ │ │ ├── messages.js │ │ │ │ ├── physical-rtl/ │ │ │ │ │ ├── generate-ltr.js │ │ │ │ │ └── generate-rtl.js │ │ │ │ ├── preprocess-rules/ │ │ │ │ │ ├── PreRule.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── PreRule-test.js │ │ │ │ │ │ └── flatten-raw-style-obj-test.js │ │ │ │ │ ├── application-order.js │ │ │ │ │ ├── basic-validation.js │ │ │ │ │ ├── flatten-raw-style-obj.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── legacy-expand-shorthands.js │ │ │ │ │ └── property-specificity.js │ │ │ │ ├── stylex-consts-utils.js │ │ │ │ ├── stylex-create-theme.d.ts │ │ │ │ ├── stylex-create-theme.js │ │ │ │ ├── stylex-create.js │ │ │ │ ├── stylex-defaultMarker.js │ │ │ │ ├── stylex-define-consts.js │ │ │ │ ├── stylex-define-vars.d.ts │ │ │ │ ├── stylex-define-vars.js │ │ │ │ ├── stylex-first-that-works.js │ │ │ │ ├── stylex-keyframes.js │ │ │ │ ├── stylex-position-try.js │ │ │ │ ├── stylex-vars-utils.js │ │ │ │ ├── stylex-view-transition-class.js │ │ │ │ ├── types/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── stylex-types-test.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ │ ├── utils/ │ │ │ │ │ ├── Rule.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── convert-to-className-test.js │ │ │ │ │ │ ├── split-css-value-test.js │ │ │ │ │ │ └── transform-value-test.js │ │ │ │ │ ├── convert-to-className.js │ │ │ │ │ ├── dashify.js │ │ │ │ │ ├── default-options.js │ │ │ │ │ ├── file-based-identifier.js │ │ │ │ │ ├── generate-css-rule.js │ │ │ │ │ ├── normalize-value.js │ │ │ │ │ ├── normalizers/ │ │ │ │ │ │ ├── convert-camel-case-values.js │ │ │ │ │ │ ├── detect-unclosed-fns.js │ │ │ │ │ │ ├── font-size-px-to-rem.js │ │ │ │ │ │ ├── leading-zero.js │ │ │ │ │ │ ├── quotes.js │ │ │ │ │ │ ├── timings.js │ │ │ │ │ │ ├── whitespace.js │ │ │ │ │ │ └── zero-dimensions.js │ │ │ │ │ ├── object-utils.js │ │ │ │ │ ├── rule-utils.js │ │ │ │ │ ├── split-css-value.js │ │ │ │ │ └── transform-value.js │ │ │ │ ├── validate.js │ │ │ │ └── when/ │ │ │ │ └── when.js │ │ │ ├── utils/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── evaluate-path-test.js │ │ │ │ │ ├── js-to-ast-test.js │ │ │ │ │ └── state-manager-test.js │ │ │ │ ├── add-sourcemap-data.js │ │ │ │ ├── ast-helpers.js │ │ │ │ ├── dev-classname.js │ │ │ │ ├── evaluate-path.js │ │ │ │ ├── evaluation-errors.js │ │ │ │ ├── helpers.js │ │ │ │ ├── js-to-ast.js │ │ │ │ ├── state-manager.js │ │ │ │ └── validate.js │ │ │ └── visitors/ │ │ │ ├── __tests__/ │ │ │ │ └── parse-stylex-create-arg-test.js │ │ │ ├── imports.js │ │ │ ├── parse-stylex-create-arg.js │ │ │ ├── stylex-create-theme.js │ │ │ ├── stylex-create.js │ │ │ ├── stylex-default-marker.js │ │ │ ├── stylex-define-consts.js │ │ │ ├── stylex-define-marker.js │ │ │ ├── stylex-define-vars.js │ │ │ ├── stylex-keyframes.js │ │ │ ├── stylex-merge.js │ │ │ ├── stylex-position-try.js │ │ │ ├── stylex-props.js │ │ │ └── stylex-view-transition-class.js │ │ ├── cli/ │ │ │ ├── .babelrc.js │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── __mocks__/ │ │ │ │ │ ├── snapshot/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── button.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── nonjs.txt │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── stylex_bundle.css │ │ │ │ │ ├── snapshot2/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── button.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── nonjs.txt │ │ │ │ │ │ └── pages/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── source/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── button.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── nonjs.txt │ │ │ │ │ │ └── pages/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── source2/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── button.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── nonjs.txt │ │ │ │ │ └── pages/ │ │ │ │ │ └── home.js │ │ │ │ └── compile-stylex-folder-test.js │ │ │ ├── package.json │ │ │ ├── rollup.config.mjs │ │ │ └── src/ │ │ │ ├── cache.js │ │ │ ├── config.js │ │ │ ├── errors.js │ │ │ ├── files.js │ │ │ ├── hash.js │ │ │ ├── index.js │ │ │ ├── modules.js │ │ │ ├── options.js │ │ │ ├── plugins.js │ │ │ ├── transform.js │ │ │ └── watcher.js │ │ ├── create-stylex-app/ │ │ │ ├── .babelrc.js │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.js │ │ │ │ ├── templates.js │ │ │ │ └── utils/ │ │ │ │ ├── fetch-template.js │ │ │ │ ├── files.js │ │ │ │ └── packages.js │ │ │ └── templates.json │ │ ├── eslint-plugin/ │ │ │ ├── .babelrc │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── stylex-enforce-extension-test.js │ │ │ │ ├── stylex-no-conflicting-props-test.js │ │ │ │ ├── stylex-no-legacy-contextual-styles-test.js │ │ │ │ ├── stylex-no-lookahead-selectors-test.js │ │ │ │ ├── stylex-no-nonstandard-styles-test.js │ │ │ │ ├── stylex-no-unused-test.js │ │ │ │ ├── stylex-sort-keys-test.js │ │ │ │ ├── stylex-valid-shorthands-test.js │ │ │ │ └── stylex-valid-styles-test.js │ │ │ ├── flow_modules/ │ │ │ │ ├── eslint/ │ │ │ │ │ ├── eslint-ast.js.flow │ │ │ │ │ ├── eslint-rule.js.flow │ │ │ │ │ └── index.js.flow │ │ │ │ └── estree/ │ │ │ │ └── index.js.flow │ │ │ ├── jest.config.js │ │ │ ├── package.json │ │ │ ├── rollup.config.mjs │ │ │ └── src/ │ │ │ ├── index.js │ │ │ ├── reference/ │ │ │ │ ├── cleanOrderPriorities.js │ │ │ │ ├── cssProperties.js │ │ │ │ ├── namedColors.js │ │ │ │ └── recessOrderPriorities.js │ │ │ ├── rules/ │ │ │ │ ├── isAbsoluteLength.js │ │ │ │ ├── isAnimationName.js │ │ │ │ ├── isCSSVariable.js │ │ │ │ ├── isHexColor.js │ │ │ │ ├── isNumber.js │ │ │ │ ├── isPercentage.js │ │ │ │ ├── isPositionTryFallbacks.js │ │ │ │ ├── isRelativeLength.js │ │ │ │ ├── isString.js │ │ │ │ ├── isStylexResolvedVarsToken.js │ │ │ │ ├── makeLiteralRule.js │ │ │ │ ├── makeRangeRule.js │ │ │ │ ├── makeRegExRule.js │ │ │ │ └── makeUnionRule.js │ │ │ ├── stylex-enforce-extension.js │ │ │ ├── stylex-no-conflicting-props.js │ │ │ ├── stylex-no-legacy-contextual-styles.js │ │ │ ├── stylex-no-lookahead-selectors.js │ │ │ ├── stylex-no-nonstandard-styles.js │ │ │ ├── stylex-no-unused.js │ │ │ ├── stylex-sort-keys.js │ │ │ ├── stylex-valid-shorthands.js │ │ │ ├── stylex-valid-styles.js │ │ │ └── utils/ │ │ │ ├── createImportTracker.js │ │ │ ├── evaluate.js │ │ │ ├── getDistance.js │ │ │ ├── getPropertyName.js │ │ │ ├── getPropertyPriorityAndType.js │ │ │ ├── getSourceCode.js │ │ │ ├── isWhiteSpaceOrEmpty.js │ │ │ ├── makeVariableCheckingRule.js │ │ │ ├── resolveKey.js │ │ │ ├── split-css-value.js │ │ │ └── splitShorthands.js │ │ ├── postcss-plugin/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── __auto_discovery_fixtures__/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── babel.config.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src/ │ │ │ │ │ ├── local-rsd.js │ │ │ │ │ ├── local-stylex.js │ │ │ │ │ └── types.d.ts │ │ │ │ ├── __fixtures__/ │ │ │ │ │ ├── .babelrc.js │ │ │ │ │ ├── import-sources-object.js │ │ │ │ │ ├── import-sources-string.js │ │ │ │ │ ├── styles-second.js │ │ │ │ │ └── styles.js │ │ │ │ └── index-test.js │ │ │ ├── jest.config.js │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── builder.js │ │ │ ├── bundler.js │ │ │ ├── discovery.js │ │ │ ├── index.js │ │ │ └── plugin.js │ │ ├── rollup-plugin/ │ │ │ ├── .babelrc.cjs │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── __fixtures__/ │ │ │ │ │ ├── .babelrc.json │ │ │ │ │ ├── index.js │ │ │ │ │ ├── npmStyles.js │ │ │ │ │ └── otherStyles.js │ │ │ │ └── index-test.js │ │ │ ├── package.json │ │ │ └── src/ │ │ │ └── index.js │ │ ├── shared/ │ │ │ ├── .babelrc │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── index.js │ │ │ └── utils/ │ │ │ └── property-priorities.js │ │ ├── stylex/ │ │ │ ├── .babelrc.js │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ ├── createOrderedCSSStyleSheet-test.js │ │ │ │ ├── createSheet-test.js │ │ │ │ ├── inject-test.js │ │ │ │ └── stylex-test.js │ │ │ ├── flow-tests/ │ │ │ │ ├── stylex-create.js.flow │ │ │ │ ├── test1.js.flow │ │ │ │ ├── test2.js.flow │ │ │ │ ├── test3.js.flow │ │ │ │ ├── test4.js.flow │ │ │ │ ├── theming/ │ │ │ │ │ ├── ButtonTokenThemes.js │ │ │ │ │ └── ButtonTokens.stylex.js │ │ │ │ └── theming1.js.flow │ │ │ ├── jest.config.js │ │ │ ├── package.json │ │ │ ├── rollup.config.mjs │ │ │ └── src/ │ │ │ ├── inject.js │ │ │ ├── stylesheet/ │ │ │ │ ├── createCSSStyleSheet.js │ │ │ │ ├── createOrderedCSSStyleSheet.js │ │ │ │ ├── createSheet.js │ │ │ │ └── utils.js │ │ │ ├── stylex.js │ │ │ └── types/ │ │ │ ├── StyleXCSSTypes.js │ │ │ ├── StyleXOpaqueTypes.js │ │ │ ├── StyleXTypes.d.ts │ │ │ ├── StyleXTypes.js │ │ │ ├── StyleXUtils.js │ │ │ └── VarTypes.js │ │ └── unplugin/ │ │ ├── .babelrc.cjs │ │ ├── README.md │ │ ├── __tests__/ │ │ │ └── unplugin.test.js │ │ ├── babel-plugins/ │ │ │ └── add-mjs-extension.js │ │ ├── package.json │ │ └── src/ │ │ ├── bun.d.ts │ │ ├── bun.js │ │ ├── consts.js │ │ ├── core.d.ts │ │ ├── core.js │ │ ├── dev-inject-middleware.js │ │ ├── esbuild.d.ts │ │ ├── esbuild.js │ │ ├── farm.d.ts │ │ ├── farm.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── rolldown.d.ts │ │ ├── rolldown.js │ │ ├── rollup.d.ts │ │ ├── rollup.js │ │ ├── rspack.d.ts │ │ ├── rspack.js │ │ ├── unloader.d.ts │ │ ├── unloader.js │ │ ├── vite.d.ts │ │ ├── vite.js │ │ ├── webpack.d.ts │ │ └── webpack.js │ ├── benchmarks/ │ │ ├── compare.js │ │ ├── package.json │ │ ├── perf/ │ │ │ ├── fixtures/ │ │ │ │ ├── colors.stylex.js │ │ │ │ ├── create-basic.js │ │ │ │ ├── create-complex.js │ │ │ │ ├── createTheme-basic.js │ │ │ │ ├── createTheme-complex.js │ │ │ │ └── sizes.stylex.js │ │ │ ├── helpers.js │ │ │ ├── run.js │ │ │ └── tests/ │ │ │ ├── transform-create-tests.js │ │ │ └── transform-create-theme-tests.js │ │ └── size/ │ │ ├── fixtures/ │ │ │ ├── index.js │ │ │ ├── lotsOfStyles.js │ │ │ └── lotsOfStylesDynamic.js │ │ ├── rollup.config.mjs │ │ └── run.js │ ├── docs/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── cli.json │ │ ├── content/ │ │ │ ├── blog/ │ │ │ │ ├── 2023-12-05-introducing-stylex.md │ │ │ │ ├── 2023-12-29-Release-v0.4.1.md │ │ │ │ ├── 2024-01-25-Release-v0.5.0.md │ │ │ │ ├── 2024-04-16-Release-v0.6.1.mdx │ │ │ │ ├── 2024-06-25-Release-v0.7.0.mdx │ │ │ │ ├── 2024-06-28-Release-v0.7.3.mdx │ │ │ │ ├── 2024-10-06-Release-v0.8.0.mdx │ │ │ │ ├── 2024-11-01-Release-v0.9.3.mdx │ │ │ │ ├── 2025-01-02-Release-v0.10.0.mdx │ │ │ │ ├── 2025-01-17-Release-v0.10.1.mdx │ │ │ │ ├── 2025-02-27-Release-v0.11.0.mdx │ │ │ │ ├── 2025-04-10-Release-v0.12.0.mdx │ │ │ │ ├── 2025-05-19-Release-v0.13.0.mdx │ │ │ │ ├── 2025-06-30-Release-v0.14.0.mdx │ │ │ │ ├── 2025-07-31-Release-v0.15.0.mdx │ │ │ │ ├── 2025-09-25-Release-v0.16.0.mdx │ │ │ │ ├── 2025-11-25-Release-v0.17.1.mdx │ │ │ │ └── 2026-01-01-new-year-new-website.mdx │ │ │ └── docs/ │ │ │ ├── acknowledgements.mdx │ │ │ ├── api/ │ │ │ │ ├── configuration/ │ │ │ │ │ ├── babel-plugin.mdx │ │ │ │ │ ├── eslint-plugin.mdx │ │ │ │ │ ├── meta.json │ │ │ │ │ ├── postcss-plugin.mdx │ │ │ │ │ └── unplugin.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── javascript/ │ │ │ │ │ ├── create.mdx │ │ │ │ │ ├── createTheme.mdx │ │ │ │ │ ├── defineConsts.mdx │ │ │ │ │ ├── defineVars.mdx │ │ │ │ │ ├── env.mdx │ │ │ │ │ ├── firstThatWorks.mdx │ │ │ │ │ ├── keyframes.mdx │ │ │ │ │ ├── meta.json │ │ │ │ │ ├── positionTry.mdx │ │ │ │ │ ├── props.mdx │ │ │ │ │ ├── types.mdx │ │ │ │ │ ├── viewTransitionClass.mdx │ │ │ │ │ └── when.mdx │ │ │ │ └── types/ │ │ │ │ ├── StaticStyles.mdx │ │ │ │ ├── StyleXStyles.mdx │ │ │ │ ├── StyleXStylesWithout.mdx │ │ │ │ ├── Theme.mdx │ │ │ │ ├── VarGroup.mdx │ │ │ │ └── meta.json │ │ │ ├── ecosystem.mdx │ │ │ ├── index.mdx │ │ │ ├── learn/ │ │ │ │ ├── index.mdx │ │ │ │ ├── installation/ │ │ │ │ │ ├── cli.mdx │ │ │ │ │ ├── esbuild.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ ├── meta.json │ │ │ │ │ ├── nextjs.mdx │ │ │ │ │ ├── postcss.mdx │ │ │ │ │ ├── rspack.mdx │ │ │ │ │ ├── vite/ │ │ │ │ │ │ ├── index.mdx │ │ │ │ │ │ ├── meta.json │ │ │ │ │ │ ├── react-router.mdx │ │ │ │ │ │ ├── redwoodsdk.mdx │ │ │ │ │ │ ├── vite-react.mdx │ │ │ │ │ │ ├── vite-rsc.mdx │ │ │ │ │ │ └── waku.mdx │ │ │ │ │ └── webpack.mdx │ │ │ │ ├── meta.json │ │ │ │ ├── recipes/ │ │ │ │ │ ├── context-driven-styles.mdx │ │ │ │ │ ├── descendant-styles.mdx │ │ │ │ │ ├── light-dark-themes.mdx │ │ │ │ │ ├── merge-themes.mdx │ │ │ │ │ ├── meta.json │ │ │ │ │ ├── reset-themes.mdx │ │ │ │ │ ├── shareable-tokens.mdx │ │ │ │ │ └── variants.mdx │ │ │ │ ├── static-types.mdx │ │ │ │ ├── styling-ui/ │ │ │ │ │ ├── defining-styles.mdx │ │ │ │ │ ├── meta.json │ │ │ │ │ └── using-styles.mdx │ │ │ │ ├── theming/ │ │ │ │ │ ├── creating-themes.mdx │ │ │ │ │ ├── defining-variables.mdx │ │ │ │ │ ├── meta.json │ │ │ │ │ ├── using-variables.mdx │ │ │ │ │ └── variable-types.mdx │ │ │ │ └── thinking-in-stylex.mdx │ │ │ ├── llm-resources.mdx │ │ │ └── meta.json │ │ ├── package.json │ │ ├── source.config.ts │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── AnimatedGradientBox/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── tokens.stylex.ts │ │ │ │ ├── CtaButton.tsx │ │ │ │ ├── DevStyleXHMR.tsx │ │ │ │ ├── Dial.tsx │ │ │ │ ├── Footer.tsx │ │ │ │ ├── Logo.tsx │ │ │ │ ├── LogoBold.tsx │ │ │ │ ├── Playground/ │ │ │ │ │ ├── Dialogs.tsx │ │ │ │ │ ├── DynamicPlayground.tsx │ │ │ │ │ ├── Menu.tsx │ │ │ │ │ ├── Tabs.tsx │ │ │ │ │ ├── demoConstants.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── StylexAnimatedLogo.tsx │ │ │ │ ├── TypingWord.tsx │ │ │ │ ├── ZStack.tsx │ │ │ │ ├── icons/ │ │ │ │ │ ├── Bluesky.tsx │ │ │ │ │ └── MetaOpenSource.tsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── docs.tsx │ │ │ │ │ ├── home/ │ │ │ │ │ │ ├── SidebarToggle.tsx │ │ │ │ │ │ ├── client.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── shared/ │ │ │ │ │ ├── client.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── mdx/ │ │ │ │ │ ├── Callout.tsx │ │ │ │ │ ├── Cards.tsx │ │ │ │ │ ├── CodeBlock.tsx │ │ │ │ │ ├── Details.tsx │ │ │ │ │ ├── Heading.tsx │ │ │ │ │ ├── Image.tsx │ │ │ │ │ ├── LLMFiles.tsx │ │ │ │ │ ├── Link.tsx │ │ │ │ │ ├── PackageInstall.tsx │ │ │ │ │ ├── ScrollableCodeBlock.tsx │ │ │ │ │ ├── Table.tsx │ │ │ │ │ ├── Tabs.tsx │ │ │ │ │ ├── VersionTag.tsx │ │ │ │ │ ├── WhenDemo.tsx │ │ │ │ │ ├── core.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── markers.stylex.ts │ │ │ │ │ └── mdx.stylex.ts │ │ │ │ ├── navigation-menu.tsx │ │ │ │ ├── provider.tsx │ │ │ │ ├── search-dialog.tsx │ │ │ │ ├── search-toggle.tsx │ │ │ │ ├── sidebar.tsx │ │ │ │ ├── theme-toggle.tsx │ │ │ │ └── ui/ │ │ │ │ ├── button.tsx │ │ │ │ ├── collapsible.tsx │ │ │ │ ├── popover.tsx │ │ │ │ └── scroll-area.tsx │ │ │ ├── contexts/ │ │ │ │ └── SidebarContext.tsx │ │ │ ├── hooks/ │ │ │ │ └── useStateWithCallback.tsx │ │ │ ├── pages/ │ │ │ │ ├── (home)/ │ │ │ │ │ ├── _layout.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── (playground)/ │ │ │ │ │ ├── _layout.tsx │ │ │ │ │ └── playground.tsx │ │ │ │ ├── _layout.tsx │ │ │ │ ├── api/ │ │ │ │ │ ├── blog-atom.xml.ts │ │ │ │ │ ├── blog-rss.xml.ts │ │ │ │ │ ├── llms-full.txt.ts │ │ │ │ │ └── search.ts │ │ │ │ ├── blog/ │ │ │ │ │ ├── [...slugs].tsx │ │ │ │ │ ├── _layout.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── docs/ │ │ │ │ ├── [...slugs].tsx │ │ │ │ └── _layout.tsx │ │ │ ├── styles/ │ │ │ │ └── globals.css │ │ │ ├── theming/ │ │ │ │ └── vars.stylex.ts │ │ │ └── waku.server.ts │ │ ├── static/ │ │ │ └── llm/ │ │ │ ├── stylex-authoring.md │ │ │ └── stylex-installation.md │ │ ├── tsconfig.json │ │ ├── vercel.json │ │ └── waku.config.ts │ ├── old-docs/ │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── .stylelintrc.js │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── blog/ │ │ │ ├── 2023-12-05-introducing-stylex.md │ │ │ ├── 2023-12-29-Release-v0.4.1.md │ │ │ ├── 2024-01-25-Release-v0.5.0.md │ │ │ ├── 2024-04-16-Release-v0.6.1.mdx │ │ │ ├── 2024-06-25-Release-v0.7.0.mdx │ │ │ ├── 2024-06-28-Release-v0.7.3.mdx │ │ │ ├── 2024-10-06-Release-v0.8.0.mdx │ │ │ ├── 2024-11-01-Release-v0.9.3.mdx │ │ │ ├── 2025-01-02-Release-v0.10.0.mdx │ │ │ ├── 2025-01-17-Release-v0.10.1.mdx │ │ │ ├── 2025-02-27-Release-v0.11.0.mdx │ │ │ ├── 2025-04-10-Release-v0.12.0.mdx │ │ │ ├── 2025-05-19-Release-v0.13.0.mdx │ │ │ ├── 2025-06-30-Release-v0.14.0.mdx │ │ │ ├── 2025-07-31-Release-v0.15.0.mdx │ │ │ ├── 2025-09-25-Release-v0.16.0.mdx │ │ │ ├── 2025-11-25-Release-v0.17.1.mdx │ │ │ └── authors.yml │ │ ├── components/ │ │ │ ├── AnimatedGradientBox/ │ │ │ │ ├── AnimatedGradientBox.js │ │ │ │ └── tokens.stylex.js │ │ │ ├── CtaButton.js │ │ │ ├── Dial.js │ │ │ ├── LoadingSpinner.js │ │ │ ├── Logo.js │ │ │ ├── LogoBold.js │ │ │ ├── LogoDownloadModal.js │ │ │ ├── Playground.js │ │ │ ├── StylexAnimatedLogo.js │ │ │ ├── VersionTag.js │ │ │ ├── YouTube.js │ │ │ ├── ZStack.js │ │ │ ├── examples/ │ │ │ │ └── dev-install.js │ │ │ ├── hooks/ │ │ │ │ ├── useDebounced.js │ │ │ │ ├── useId.js │ │ │ │ └── useViewTransition.js │ │ │ └── playground-utils/ │ │ │ └── files.js │ │ ├── docs/ │ │ │ ├── api/ │ │ │ │ ├── configuration/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── babel-plugin.mdx │ │ │ │ │ ├── eslint-plugin.mdx │ │ │ │ │ ├── postcss-plugin.mdx │ │ │ │ │ └── unplugin.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── javascript/ │ │ │ │ │ ├── _category_.json │ │ │ │ │ ├── create.mdx │ │ │ │ │ ├── createTheme.mdx │ │ │ │ │ ├── defineConsts.mdx │ │ │ │ │ ├── defineVars.mdx │ │ │ │ │ ├── firstThatWorks.mdx │ │ │ │ │ ├── keyframes.mdx │ │ │ │ │ ├── positionTry.mdx │ │ │ │ │ ├── props.mdx │ │ │ │ │ ├── types.mdx │ │ │ │ │ ├── viewTransitionClass.mdx │ │ │ │ │ └── when.mdx │ │ │ │ └── types/ │ │ │ │ ├── StaticStyles.mdx │ │ │ │ ├── StyleXStyles.mdx │ │ │ │ ├── StyleXStylesWithout.mdx │ │ │ │ ├── Theme.mdx │ │ │ │ ├── VarGroup.mdx │ │ │ │ └── _category_.json │ │ │ └── learn/ │ │ │ ├── 02-thinking-in-stylex.mdx │ │ │ ├── 03-installation.mdx │ │ │ ├── 04-styling-ui/ │ │ │ │ ├── 01-defining-styles.mdx │ │ │ │ ├── 02-using-styles.mdx │ │ │ │ └── _category_.json │ │ │ ├── 05-theming/ │ │ │ │ ├── 01-defining-variables.mdx │ │ │ │ ├── 02-using-variables.mdx │ │ │ │ ├── 03-creating-themes.mdx │ │ │ │ ├── 04-variable-types.mdx │ │ │ │ └── _category_.json │ │ │ ├── 06-recipes/ │ │ │ │ ├── 01-context-driven-styles.mdx │ │ │ │ ├── 02-variants.mdx │ │ │ │ ├── 03-descendant styles.mdx │ │ │ │ ├── 04-reset-themes.mdx │ │ │ │ ├── 05-merge-themes.mdx │ │ │ │ ├── 06-light-dark-themes.mdx │ │ │ │ └── _category_.json │ │ │ ├── 06-static-types.mdx │ │ │ ├── 07-ecosystem.mdx │ │ │ ├── 08-acknowledgements.mdx │ │ │ └── index.mdx │ │ ├── docusaurus.config.js │ │ ├── eslintrc-legacy.js │ │ ├── package.json │ │ ├── serve.json │ │ ├── sidebars.js │ │ ├── src/ │ │ │ ├── css/ │ │ │ │ └── custom.css │ │ │ ├── pages/ │ │ │ │ ├── index.js │ │ │ │ └── playground.js │ │ │ └── theme/ │ │ │ ├── Footer/ │ │ │ │ └── index.js │ │ │ ├── Logo/ │ │ │ │ └── index.js │ │ │ └── MDXComponents/ │ │ │ ├── Details.js │ │ │ └── DetailsTokens.stylex.js │ │ └── static/ │ │ ├── .nojekyll │ │ └── robots.txt │ ├── scripts/ │ │ ├── README.md │ │ ├── flow-translator/ │ │ │ ├── flow-module-utils.js │ │ │ ├── generate-types.js │ │ │ └── rewrite-imports.js │ │ └── package.json │ ├── shared-ui/ │ │ ├── package.json │ │ └── src/ │ │ ├── index.tsx │ │ └── tokens.stylex.ts │ ├── style-value-parser/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── __benchmarks__/ │ │ │ ├── alpha-value.bench.mjs │ │ │ ├── angle-percentage.bench.mjs │ │ │ ├── angle.bench.mjs │ │ │ ├── basic-shape.bench.mjs │ │ │ ├── blend-mode.bench.mjs │ │ │ ├── calc-constant.bench.mjs │ │ │ ├── color.bench.mjs │ │ │ ├── common-types.bench.mjs │ │ │ ├── custom-ident.bench.mjs │ │ │ ├── dashed-ident.bench.mjs │ │ │ ├── dimension.bench.mjs │ │ │ ├── easing-function.bench.mjs │ │ │ ├── filter-function.bench.mjs │ │ │ ├── flex.bench.mjs │ │ │ ├── frequency.bench.mjs │ │ │ ├── length-percentage.bench.mjs │ │ │ └── length.bench.mjs │ │ ├── jest.config.cjs │ │ ├── package.json │ │ └── src/ │ │ ├── __tests__/ │ │ │ └── token-parser-test.js │ │ ├── at-queries/ │ │ │ ├── __tests__/ │ │ │ │ ├── media-query-transform-test.js │ │ │ │ ├── parse-media-query-test.js │ │ │ │ └── validation-media-query-test.js │ │ │ ├── media-query-transform.js │ │ │ ├── media-query.js │ │ │ └── messages.js │ │ ├── base-types.js │ │ ├── css-types/ │ │ │ ├── __tests__/ │ │ │ │ ├── alpha-value-test.js │ │ │ │ ├── angle-percentage-test.js │ │ │ │ ├── angle-test.js │ │ │ │ ├── basic-shape.js │ │ │ │ ├── blend-mode-test.js │ │ │ │ ├── calc-constant.js │ │ │ │ ├── calc-test.js │ │ │ │ ├── color-test.js │ │ │ │ ├── custom-ident-test.js │ │ │ │ ├── dashed-ident-test.js │ │ │ │ ├── easing-function-test.js │ │ │ │ ├── filter-function-test.js │ │ │ │ ├── flex-test.js │ │ │ │ ├── frequency-test.js │ │ │ │ ├── length-percentage-test.js │ │ │ │ ├── length-test.js │ │ │ │ ├── position-test.js │ │ │ │ ├── resolution-test.js │ │ │ │ ├── time-test.js │ │ │ │ └── transform-function-test.js │ │ │ ├── alpha-value.js │ │ │ ├── angle-percentage.js │ │ │ ├── angle.js │ │ │ ├── basic-shape.js │ │ │ ├── blend-mode.js │ │ │ ├── calc-constant.js │ │ │ ├── calc.js │ │ │ ├── color.js │ │ │ ├── common-types.js │ │ │ ├── custom-ident.js │ │ │ ├── dashed-ident.js │ │ │ ├── dimension.js │ │ │ ├── easing-function.js │ │ │ ├── filter-function.js │ │ │ ├── flex.js │ │ │ ├── frequency.js │ │ │ ├── length-percentage.js │ │ │ ├── length.js │ │ │ ├── position.js │ │ │ ├── resolution.js │ │ │ ├── time.js │ │ │ └── transform-function.js │ │ ├── index.js │ │ ├── properties/ │ │ │ ├── __tests__/ │ │ │ │ ├── border-radius.test.js │ │ │ │ ├── box-shadow.test.js │ │ │ │ └── transform.js │ │ │ ├── border-radius.js │ │ │ ├── box-shadow.js │ │ │ └── transform.js │ │ ├── properties.js │ │ ├── token-parser.js │ │ └── token-types.js │ └── typescript-tests/ │ ├── package.json │ ├── src/ │ │ ├── babel-plugin.ts │ │ ├── env.ts │ │ ├── exports.ts │ │ ├── test1.tsx │ │ ├── test2.tsx │ │ ├── test3.tsx │ │ ├── test4.tsx │ │ ├── test5.tsx │ │ ├── themes.ts │ │ ├── theming/ │ │ │ ├── ButtonTokenThemes.ts │ │ │ └── ButtonTokens.stylex.ts │ │ ├── theming1.tsx │ │ └── typetests.ts │ └── tsconfig.json └── tools/ ├── README.md ├── eslint/ │ └── copyright-header.txt ├── husky/ │ └── pre-commit └── npm/ └── release.js