├── .atlassian └── OWNER ├── .changeset └── config.json ├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── actions │ └── task-checklist │ │ ├── .npmrc │ │ ├── action.yml │ │ ├── index.js │ │ ├── package.json │ │ └── yarn.lock ├── pull_request_template.md └── workflows │ ├── build.yml │ ├── release.yml │ ├── task-checklist.yml │ ├── test.yml │ └── visual-regression-test.yml ├── .gitignore ├── .loki ├── .gitignore └── reference │ ├── chrome_laptop_ClassNames_dynamic_Array.png │ ├── chrome_laptop_ClassNames_dynamic_Object_CSS.png │ ├── chrome_laptop_ClassNames_dynamic_String.png │ ├── chrome_laptop_ClassNames_dynamic_String_Template_Literal.png │ ├── chrome_laptop_ClassNames_static_Array.png │ ├── chrome_laptop_ClassNames_static_CN_Args.png │ ├── chrome_laptop_ClassNames_static_Object_CSS.png │ ├── chrome_laptop_ClassNames_static_String.png │ ├── chrome_laptop_ClassNames_static_String_Template_Literal.png │ ├── chrome_laptop_ast_binary_expression_Calc_Utility.png │ ├── chrome_laptop_ast_binary_expression_Division.png │ ├── chrome_laptop_ast_binary_expression_Multiplication.png │ ├── chrome_laptop_ast_binary_expression_Negative_Value.png │ ├── chrome_laptop_ast_binary_expression_Nested_Binary.png │ ├── chrome_laptop_ast_binary_expression_Non_Static_Values.png │ ├── chrome_laptop_ast_binary_expression_Order_Of_Operations.png │ ├── chrome_laptop_ast_binary_expression_Static_Values.png │ ├── chrome_laptop_ast_module_traversal_Example.png │ ├── chrome_laptop_ast_static_evaluation_Css_Prop.png │ ├── chrome_laptop_ast_static_evaluation_Styled.png │ ├── chrome_laptop_atomic_pseudo_states_Active.png │ ├── chrome_laptop_atomic_pseudo_states_Focus.png │ ├── chrome_laptop_atomic_pseudo_states_Focus_Within.png │ ├── chrome_laptop_atomic_pseudo_states_Hover.png │ ├── chrome_laptop_atomic_pseudo_states_Link.png │ ├── chrome_laptop_atomic_pseudo_states_Target.png │ ├── chrome_laptop_atomic_pseudo_states_Visited.png │ ├── chrome_laptop_atomic_style_buckets_Example.png │ ├── chrome_laptop_benchmarks_compiled_Dynamic.png │ ├── chrome_laptop_benchmarks_compiled_Static.png │ ├── chrome_laptop_composition_user_components_Blue_Wrapped.png │ ├── chrome_laptop_composition_user_components_Green_Css_Prop.png │ ├── chrome_laptop_composition_user_components_Green_Styled.png │ ├── chrome_laptop_composition_user_components_Red_Wrapped.png │ ├── chrome_laptop_conditional_rules_css_prop_Not_Primary_Lozenge.png │ ├── chrome_laptop_conditional_rules_css_prop_Not_Primary_Lozenge_With_Array.png │ ├── chrome_laptop_conditional_rules_css_prop_Primary_Lozenge.png │ ├── chrome_laptop_conditional_rules_css_prop_Primary_Lozenge_With_Array.png │ ├── chrome_laptop_conditional_rules_styled_Bolded_Primary_Nested_Text_With_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Object_Styles.png │ ├── chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Condition_With_Destructed_Values.png │ ├── chrome_laptop_conditional_rules_styled_Condition_With_Destructured_Props_Key_Value_String.png │ ├── chrome_laptop_conditional_rules_styled_Condition_With_No_Value_Path.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Not_Bolded_Text_With_Nested_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Object_Styles.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Mixins.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Object_Styles.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Ternary_And_Boolean_Object_Style.png │ ├── chrome_laptop_conditional_rules_styled_Primary_Text_With_Ternary_Operator_Template_Literal.png │ ├── chrome_laptop_conditional_rules_styled_Secondary_Text_With_Mixins.png │ ├── chrome_laptop_conditional_rules_styled_Text_With_Complex_Mixin.png │ ├── chrome_laptop_conditional_rules_styled_Text_With_Inline_Mixin.png │ ├── chrome_laptop_conditional_rules_styled_Text_With_Key_Value_String.png │ ├── chrome_laptop_css_combinators_Adjacent_Sibling_Combinator.png │ ├── chrome_laptop_css_combinators_Child_Combinator.png │ ├── chrome_laptop_css_combinators_General_Sibling_Combinator.png │ ├── chrome_laptop_css_map_Conditional_Styles.png │ ├── chrome_laptop_css_map_Dynamic_Variant.png │ ├── chrome_laptop_css_map_Merge_Styles.png │ ├── chrome_laptop_css_map_Variant_As_Prop.png │ ├── chrome_laptop_css_object_expression_Imported_Variable.png │ ├── chrome_laptop_css_object_expression_Inline.png │ ├── chrome_laptop_css_object_expression_Local_Variable.png │ ├── chrome_laptop_css_object_expression_Spread_Imported_Tagged_Templated_Expression.png │ ├── chrome_laptop_css_object_expression_Spread_Imported_Variable.png │ ├── chrome_laptop_css_object_expression_Static.png │ ├── chrome_laptop_css_prop_dynamic_object_Dynamic_Css_Prop.png │ ├── chrome_laptop_css_prop_dynamic_object_Important_Child.png │ ├── chrome_laptop_css_prop_dynamic_object_Interpolations_With_Minus.png │ ├── chrome_laptop_css_prop_dynamic_object_Interpolations_With_Zero_And_Minus.png │ ├── chrome_laptop_css_prop_file_imports_Call_Expression_Multiple_Url.png │ ├── chrome_laptop_css_prop_file_imports_Call_Expression_Url.png │ ├── chrome_laptop_css_prop_file_imports_Tagged_Template_Expression_Multiple_Url.png │ ├── chrome_laptop_css_prop_file_imports_Tagged_Template_Expression_Url.png │ ├── chrome_laptop_css_prop_jsx_import_source_pragma_Local_JSX_Namespace.png │ ├── chrome_laptop_css_prop_jsx_import_source_pragma_No_Class_Name.png │ ├── chrome_laptop_css_prop_jsx_import_source_pragma_With_Class_Name.png │ ├── chrome_laptop_css_prop_jsx_pragma_Local_JSX_Namespace.png │ ├── chrome_laptop_css_prop_jsx_pragma_No_Class_Name.png │ ├── chrome_laptop_css_prop_jsx_pragma_With_Class_Name.png │ ├── chrome_laptop_css_prop_keyframes_inline_Object_Call_Expression.png │ ├── chrome_laptop_css_prop_keyframes_inline_Shorthand_Object_Call_Expression.png │ ├── chrome_laptop_css_prop_keyframes_inline_Shorthand_Tagged_Template_Expression.png │ ├── chrome_laptop_css_prop_keyframes_inline_Tagged_Template_Expression.png │ ├── chrome_laptop_css_prop_static_object_Object_Expression_Disabled_Next_Line.png │ ├── chrome_laptop_css_prop_static_object_Object_Expression_Disabled_Same_Line.png │ ├── chrome_laptop_css_prop_static_object_Object_Literal.png │ ├── chrome_laptop_css_prop_static_object_Object_Literal_Imported_Obj.png │ ├── chrome_laptop_css_prop_static_object_Object_Literal_Local_Obj.png │ ├── chrome_laptop_css_prop_static_object_Object_Literal_Map_With_Keys.png │ ├── chrome_laptop_css_prop_static_object_Object_Literal_Spread_From_Func.png │ ├── chrome_laptop_css_prop_static_object_Object_Literal_Spread_From_Obj.png │ ├── chrome_laptop_css_prop_string_Template_Literal.png │ ├── chrome_laptop_css_prop_string_Using_Mixin_Import_Array.png │ ├── chrome_laptop_css_prop_string_Using_Mixin_Import_Identifier.png │ ├── chrome_laptop_css_prop_string_Using_Mixin_Import_Spread.png │ ├── chrome_laptop_css_tagged_template_expression_Imported_Variable.png │ ├── chrome_laptop_css_tagged_template_expression_Inline.png │ ├── chrome_laptop_css_tagged_template_expression_Local_Variable.png │ ├── chrome_laptop_css_tagged_template_expression_Static.png │ ├── chrome_laptop_edge_cases_interpolations_Content_Interpolation.png │ ├── chrome_laptop_edge_cases_interpolations_Prevent_CSS_Variables_Leaking.png │ ├── chrome_laptop_edge_cases_interpolations_Should_Not_Be_Visible.png │ ├── chrome_laptop_edge_cases_ordering_Media_Ordering.png │ ├── chrome_laptop_edge_cases_shadow_variables_Clashing_Internal_Names.png │ ├── chrome_laptop_edge_cases_shadow_variables_Clashing_Variable_Names.png │ ├── chrome_laptop_keyframes_object_call_expression_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Inline_Css_Prop_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Inline_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Runtime_Keyframes.png │ ├── chrome_laptop_keyframes_object_call_expression_Shadowed_Keyframes.png │ ├── chrome_laptop_keyframes_object_call_expression_Shorthand_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Shorthand_Inline_Css_Prop_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Shorthand_Inline_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Styled_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Styled_Shorthand_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Styled_Shorthand_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_object_call_expression_Styled_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Inline_Css_Prop_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Inline_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Runtime_Keyframes.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Shadowed_Keyframes.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Shorthand_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Shorthand_Inline_Css_Prop_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Shorthand_Inline_Css_Prop_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Styled_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Styled_Shorthand_Object_Call_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Styled_Shorthand_Tagged_Template_Expression.png │ ├── chrome_laptop_keyframes_tagged_template_expression_Styled_Tagged_Template_Expression.png │ ├── chrome_laptop_media_queries_styled_Object_Literal.png │ ├── chrome_laptop_media_queries_styled_Template_Literal.png │ ├── chrome_laptop_mixins_simple_functions_Object_Literal.png │ ├── chrome_laptop_mixins_simple_functions_Template_Literal.png │ ├── chrome_laptop_styled_combinators_Adjacent_Sibling_Combinator.png │ ├── chrome_laptop_styled_combinators_Child_Combinator.png │ ├── chrome_laptop_styled_combinators_General_Sibling_Combinator.png │ ├── chrome_laptop_styled_dynamic_object_Object_Literal.png │ ├── chrome_laptop_styled_file_imports_Call_Expression_Multiple_Url.png │ ├── chrome_laptop_styled_file_imports_Call_Expression_Url.png │ ├── chrome_laptop_styled_file_imports_Tagged_Template_Expression_Multiple_Url.png │ ├── chrome_laptop_styled_file_imports_Tagged_Template_Expression_Url.png │ ├── chrome_laptop_styled_interpolations_Object_Literal.png │ ├── chrome_laptop_styled_interpolations_Stacking.png │ ├── chrome_laptop_styled_interpolations_Template_Literal.png │ ├── chrome_laptop_styled_keyframes_inline_Object_Call_Expression.png │ ├── chrome_laptop_styled_keyframes_inline_Shorthand_Object_Call_Expression.png │ ├── chrome_laptop_styled_keyframes_inline_Shorthand_Tagged_Template_Expression.png │ ├── chrome_laptop_styled_keyframes_inline_Tagged_Template_Expression.png │ ├── chrome_laptop_styled_static_object_Object_Literal.png │ ├── chrome_laptop_styled_static_object_Object_Literal_Map_With_Keys.png │ ├── chrome_laptop_styled_static_object_Object_Literal_With_Selector.png │ ├── chrome_laptop_styled_static_object_Styled_Args.png │ ├── chrome_laptop_styled_string_Using_Mixin_Import_Array.png │ ├── chrome_laptop_styled_string_Using_Mixin_Import_Identifier.png │ └── chrome_laptop_styled_string_Using_Mixin_Import_Spread.png ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .storybook ├── .babelrc.json ├── main.js └── preview.js ├── .vscode ├── launch.json └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── babel.config.json ├── benchmark.config.json ├── examples ├── parcel │ ├── .compiledcssrc.json │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── class-name-compression-map.json │ ├── lib │ │ ├── parcel-alias.ts │ │ └── parcel-resolver-alias.ts │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app.jsx │ │ ├── async.jsx │ │ ├── constants.ts │ │ ├── index.html │ │ ├── index.jsx │ │ └── ui │ │ │ ├── annotated.jsx │ │ │ ├── css-map.jsx │ │ │ ├── custom-file-extension.customjsx │ │ │ └── typescript.tsx │ └── tsconfig.json ├── ssr │ ├── .babelrc │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── razzle.config.js │ ├── sandbox.config.json │ ├── src │ │ ├── app.jsx │ │ ├── client.jsx │ │ ├── index.js │ │ └── server.jsx │ └── tsconfig.json └── webpack │ ├── CHANGELOG.md │ ├── class-name-compression-map.json │ ├── package.json │ ├── src │ ├── app.jsx │ ├── common │ │ └── constants.ts │ ├── index.jsx │ ├── styles.css │ └── ui │ │ ├── annotated.jsx │ │ ├── async.js │ │ ├── css-map.jsx │ │ ├── custom-file-extension.customjsx │ │ └── typescript.tsx │ ├── tsconfig.json │ └── webpack.config.js ├── fixtures ├── babel-component-extracted │ ├── .babelrc │ ├── package.json │ └── src │ │ └── index.jsx ├── babel-component │ ├── .babelrc │ ├── CHANGELOG.md │ ├── package.json │ └── src │ │ └── index.jsx ├── module-a │ ├── CHANGELOG.md │ ├── index.d.ts │ ├── index.js │ └── package.json ├── parcel-optimizer-test-app │ ├── .compiledcssrc │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── package-lock.json │ ├── package.json │ └── src │ │ ├── index.html │ │ └── index.jsx ├── parcel-transformer-test-app │ ├── .compiledcssrc │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── package.json │ └── src │ │ ├── index.html │ │ └── index.jsx ├── parcel-transformer-test-compress-class-name-app │ ├── .compiledcssrc │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── class-name-compression-map.json │ ├── package-lock.json │ ├── package.json │ └── src │ │ ├── index.html │ │ └── index.jsx ├── parcel-transformer-test-custom-resolve-app │ ├── .compiledcssrc │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── package-lock.json │ ├── package.json │ └── src │ │ ├── foo.js │ │ ├── index.html │ │ └── index.jsx ├── parcel-transformer-test-custom-resolver-app │ ├── .compiledcssrc │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── package-lock.json │ ├── package.json │ └── src │ │ ├── index.html │ │ └── index.jsx ├── parcel-transformer-test-extract-app │ ├── .compiledcssrc │ ├── .parcelrc │ ├── CHANGELOG.md │ ├── package-lock.json │ ├── package.json │ └── src │ │ ├── index.html │ │ └── index.jsx ├── resolver-webpack │ ├── CHANGELOG.md │ ├── index.js │ ├── main.js │ └── package.json ├── resolver │ ├── CHANGELOG.md │ ├── index.js │ ├── main.js │ └── package.json └── strict-api-test │ ├── package.json │ └── src │ └── index.ts ├── jest.config.json ├── package.json ├── packages ├── babel-plugin-strip-runtime │ ├── .snyk │ ├── CHANGELOG.md │ ├── README.md │ ├── index.js │ ├── package.json │ ├── src │ │ ├── __tests__ │ │ │ ├── extract-styles.test.ts │ │ │ ├── jsx-pragma.test.ts │ │ │ ├── strip-runtime-source-code.test.ts │ │ │ ├── strip-runtime-transpiled-code.test.ts │ │ │ └── transform.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── utils │ │ │ ├── is-automatic-runtime.ts │ │ │ ├── is-cc-component.ts │ │ │ ├── is-create-element.ts │ │ │ ├── remove-style-declarations.ts │ │ │ └── to-uri-component.ts │ ├── tsconfig.json │ └── types │ │ └── babel__helper-plugin-utils.d.ts ├── babel-plugin │ ├── CHANGELOG.md │ ├── README.md │ ├── index.js │ ├── package.json │ ├── src │ │ ├── __fixtures__ │ │ │ ├── mixins │ │ │ │ ├── alias.js │ │ │ │ ├── objects.js │ │ │ │ ├── reexport.js │ │ │ │ ├── simple.js │ │ │ │ └── strings.js │ │ │ └── resolver.js │ │ ├── __perf__ │ │ │ └── module-traversal-cache.test.ts │ │ ├── __tests__ │ │ │ ├── css-builder.test.ts │ │ │ ├── custom-import-source.test.ts │ │ │ ├── errors.test.ts │ │ │ ├── expression-evaluation.test.ts │ │ │ ├── index.test.ts │ │ │ ├── jsx-automatic.test.ts │ │ │ ├── module-imports.test.ts │ │ │ ├── module-traversal.test.ts │ │ │ ├── resolver.test.ts │ │ │ └── rule-hoisting.test.ts │ │ ├── babel-plugin.ts │ │ ├── class-names │ │ │ ├── __tests__ │ │ │ │ ├── behaviour.test.ts │ │ │ │ ├── call-expression.test.ts │ │ │ │ └── tagged-template-expression.test.ts │ │ │ └── index.ts │ │ ├── constants.ts │ │ ├── css-map │ │ │ ├── __tests__ │ │ │ │ ├── at-rules-and-selectors.test.ts │ │ │ │ └── index.test.ts │ │ │ ├── index.ts │ │ │ └── process-selectors.ts │ │ ├── css-prop │ │ │ ├── __tests__ │ │ │ │ ├── behaviour.test.ts │ │ │ │ ├── css-map.test.ts │ │ │ │ ├── jsx-pragma.test.ts │ │ │ │ ├── object-literal.test.ts │ │ │ │ └── string-literal.test.ts │ │ │ └── index.ts │ │ ├── css │ │ │ └── __tests__ │ │ │ │ └── cleanup.test.ts │ │ ├── index.ts │ │ ├── keyframes │ │ │ ├── __fixtures__ │ │ │ │ └── index.ts │ │ │ └── __tests__ │ │ │ │ ├── behaviour.test.ts │ │ │ │ ├── call-expression.test.ts │ │ │ │ └── tagged-template-expression.test.ts │ │ ├── styled │ │ │ ├── __tests__ │ │ │ │ ├── behaviour.test.ts │ │ │ │ ├── call-expression.test.ts │ │ │ │ ├── content-property.test.ts │ │ │ │ └── tagged-template-expression.test.ts │ │ │ └── index.ts │ │ ├── test-utils.ts │ │ ├── types.ts │ │ ├── utils │ │ │ ├── __mocks__ │ │ │ │ └── cache.ts │ │ │ ├── __tests__ │ │ │ │ ├── cache.test.ts │ │ │ │ ├── normalize-props.usage.test.ts │ │ │ │ └── object-property-to-string.test.ts │ │ │ ├── append-runtime-imports.ts │ │ │ ├── ast.ts │ │ │ ├── build-compiled-component.ts │ │ │ ├── build-css-variables.ts │ │ │ ├── build-display-name.ts │ │ │ ├── build-styled-component.ts │ │ │ ├── cache.ts │ │ │ ├── comments.ts │ │ │ ├── compress-class-names-for-runtime.ts │ │ │ ├── constants.ts │ │ │ ├── create-result-pair.ts │ │ │ ├── css-builders.ts │ │ │ ├── css-map.ts │ │ │ ├── evaluate-expression.ts │ │ │ ├── get-jsx-attribute.ts │ │ │ ├── get-runtime-class-name-library.ts │ │ │ ├── has-numeric-value.ts │ │ │ ├── hoist-sheet.ts │ │ │ ├── is-compiled.ts │ │ │ ├── is-empty.ts │ │ │ ├── is-jsx-function.ts │ │ │ ├── manipulate-template-literal.ts │ │ │ ├── normalize-props-usage.ts │ │ │ ├── object-property-to-string.ts │ │ │ ├── resolve-binding.ts │ │ │ ├── transform-css-items.ts │ │ │ ├── traverse-expression │ │ │ │ ├── index.ts │ │ │ │ ├── traverse-binary-expression.ts │ │ │ │ ├── traverse-call-expression.ts │ │ │ │ ├── traverse-function.ts │ │ │ │ ├── traverse-identifier.ts │ │ │ │ ├── traverse-member-expression │ │ │ │ │ ├── index.ts │ │ │ │ │ └── traverse-access-path │ │ │ │ │ │ ├── evaluate-path │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── namespace-import.ts │ │ │ │ │ │ └── object.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── resolve-expression │ │ │ │ │ │ ├── function-args.ts │ │ │ │ │ │ ├── identifier.ts │ │ │ │ │ │ └── index.ts │ │ │ │ └── traverse-unary-expression.ts │ │ │ ├── traversers │ │ │ │ ├── get-export.ts │ │ │ │ ├── index.ts │ │ │ │ ├── object.ts │ │ │ │ ├── set-imported-compiled-imports.ts │ │ │ │ └── types.ts │ │ │ └── types.ts │ │ └── xcss-prop │ │ │ ├── __tests__ │ │ │ └── transformation.test.ts │ │ │ └── index.ts │ ├── tsconfig.json │ └── types │ │ ├── babel__helper-plugin-utils.d.ts │ │ └── babel__jsx-plugin-syntax.d.ts ├── benchmark │ ├── CHANGELOG.md │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json ├── codemods │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── plugins │ │ │ ├── default.ts │ │ │ └── types.ts │ │ ├── transforms │ │ │ ├── emotion-to-compiled │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── transformer.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── styled-components-inner-ref-to-ref │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── transformer.test.ts │ │ │ │ └── index.ts │ │ │ └── styled-components-to-compiled │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ ├── styled-components-to-compiled-attrs.test.ts │ │ │ │ ├── styled-components-to-compiled-components.test.ts │ │ │ │ ├── styled-components-to-compiled-imports.test.ts │ │ │ │ └── styled-components-to-compiled-tagged-templates.test.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ └── utils │ │ │ ├── add-comment.ts │ │ │ ├── apply-visitor.ts │ │ │ ├── convert-to-named-import.ts │ │ │ ├── import-declarations.ts │ │ │ ├── index.ts │ │ │ └── with-plugin.ts │ └── tsconfig.json ├── css │ ├── .snyk │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── __tests__ │ │ │ ├── generate-compression-map.test.ts │ │ │ └── transform.test.ts │ │ ├── generate-compression-map.ts │ │ ├── index.ts │ │ ├── plugins │ │ │ ├── __tests__ │ │ │ │ ├── atomicify-rules.test.ts │ │ │ │ ├── discard-duplicates.test.ts │ │ │ │ ├── discard-empty-rules.test.ts │ │ │ │ ├── flatten-multiple-selectors.test.ts │ │ │ │ ├── increase-specificity.test.ts │ │ │ │ ├── merge-duplicate-at-rules.test.ts │ │ │ │ ├── parent-orphaned-pseudos.test.ts │ │ │ │ ├── sort-at-rules.test.ts │ │ │ │ ├── sort-pseudo-selectors.test.ts │ │ │ │ └── sort-shorthand-declarations.test.ts │ │ │ ├── at-rules │ │ │ │ ├── parse-media-query.ts │ │ │ │ ├── parsers.ts │ │ │ │ ├── sort-at-rules.ts │ │ │ │ └── types.ts │ │ │ ├── atomicify-rules.ts │ │ │ ├── discard-duplicates.ts │ │ │ ├── discard-empty-rules.ts │ │ │ ├── expand-shorthands │ │ │ │ ├── __tests__ │ │ │ │ │ ├── background.test.ts │ │ │ │ │ ├── flex-flow.test.ts │ │ │ │ │ ├── flex.test.ts │ │ │ │ │ ├── margin.test.ts │ │ │ │ │ ├── outline.test.ts │ │ │ │ │ ├── overflow.test.ts │ │ │ │ │ ├── padding.test.ts │ │ │ │ │ ├── place-content.test.ts │ │ │ │ │ ├── place-items.test.ts │ │ │ │ │ ├── place-self.test.ts │ │ │ │ │ ├── text-decoration.test.ts │ │ │ │ │ └── utils.test.ts │ │ │ │ ├── background.ts │ │ │ │ ├── flex-flow.ts │ │ │ │ ├── flex.ts │ │ │ │ ├── index.ts │ │ │ │ ├── margin.ts │ │ │ │ ├── outline.ts │ │ │ │ ├── overflow.ts │ │ │ │ ├── padding.ts │ │ │ │ ├── place-content.ts │ │ │ │ ├── place-items.ts │ │ │ │ ├── place-self.ts │ │ │ │ ├── text-decoration.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── extract-stylesheets.ts │ │ │ ├── flatten-multiple-selectors.ts │ │ │ ├── increase-specificity.ts │ │ │ ├── merge-duplicate-at-rules.ts │ │ │ ├── normalize-css.ts │ │ │ ├── normalize-current-color.ts │ │ │ ├── parent-orphaned-pseudos.ts │ │ │ ├── sort-atomic-style-sheet.ts │ │ │ └── sort-shorthand-declarations.ts │ │ ├── sort.ts │ │ ├── transform.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ ├── class-name-generator.test.ts │ │ │ └── css-affix-interpolation.test.ts │ │ │ ├── class-name-generator.ts │ │ │ ├── css-affix-interpolation.ts │ │ │ ├── css-property.ts │ │ │ ├── sort-pseudo-selectors.ts │ │ │ └── style-ordering.ts │ ├── tsconfig.json │ └── types │ │ ├── cssnano-preset-default.d.ts │ │ ├── postcss-normalize-whitespace.d.ts │ │ └── postcss-selector-parser.d.ts ├── eslint-plugin │ ├── CHANGELOG.md │ ├── README.md │ ├── add-pkg-info-transform.js │ ├── package.json │ ├── src │ │ ├── configs │ │ │ ├── flat-recommended.ts │ │ │ └── recommended.ts │ │ ├── index.ts │ │ ├── rules │ │ │ ├── jsx-pragma │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── local-cx-xcss │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-css-prop-without-css-function │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-css-tagged-template-expression │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-emotion-css │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-empty-styled-expression │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-exported-css │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-exported-keyframes │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-invalid-css-map │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-js-xcss │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-keyframes-tagged-template-expression │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-styled-tagged-template-expression │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ ├── no-suppress-xcss │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ │ └── shorthand-property-sorting │ │ │ │ ├── README.md │ │ │ │ ├── __tests__ │ │ │ │ └── rule.test.ts │ │ │ │ └── index.ts │ │ ├── test-utils.ts │ │ └── utils │ │ │ ├── __tests__ │ │ │ └── context-compat.test.ts │ │ │ ├── ast-to-string.ts │ │ │ ├── ast.ts │ │ │ ├── context-compat.ts │ │ │ ├── create-no-exported-rule │ │ │ ├── check-if-compiled-export.ts │ │ │ ├── index.ts │ │ │ └── is-styled-component.ts │ │ │ ├── create-no-tagged-template-expression-rule │ │ │ ├── generate.ts │ │ │ ├── get-tagged-template-expression-offset.ts │ │ │ ├── index.ts │ │ │ ├── to-arguments.ts │ │ │ └── types.ts │ │ │ ├── css-map.ts │ │ │ ├── index.ts │ │ │ ├── is-compiled-import.ts │ │ │ ├── jsx.ts │ │ │ └── styled-import.ts │ └── tsconfig.json ├── jest │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── matchers.ts │ │ └── types.ts │ └── tsconfig.json ├── parcel-config │ ├── CHANGELOG.md │ ├── README.md │ ├── config.json │ └── package.json ├── parcel-optimizer │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── __tests__ │ │ │ └── optimizer.parceltest.ts │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── parcel-transformer-external │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── __tests__ │ │ │ └── transformer.parceltest.ts │ │ └── index.ts │ └── tsconfig.json ├── parcel-transformer │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── __tests__ │ │ │ └── transformer.parceltest.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.json ├── react │ ├── CHANGELOG.md │ ├── README.md │ ├── jsx-dev-runtime │ │ └── package.json │ ├── jsx-runtime │ │ └── package.json │ ├── package.json │ ├── runtime │ │ ├── README.md │ │ └── package.json │ ├── src │ │ ├── __tests__ │ │ │ ├── browser.test.tsx │ │ │ ├── display-names.test.ts │ │ │ ├── jest-matcher.test.tsx │ │ │ ├── server-side-hydrate.test.tsx │ │ │ └── ssr.test.tsx │ │ ├── class-names │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.ts │ │ ├── create-strict-api │ │ │ ├── __tests__ │ │ │ │ ├── __fixtures__ │ │ │ │ │ ├── strict-api-recursive.ts │ │ │ │ │ └── strict-api.ts │ │ │ │ ├── css-func.test.tsx │ │ │ │ ├── generics.test.tsx │ │ │ │ ├── index.test.tsx │ │ │ │ ├── mixed.test.tsx │ │ │ │ ├── package.test.tsx │ │ │ │ └── pass-through-xcss.test.tsx │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── css-map │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.ts │ │ ├── css │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ └── types.test.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── jsx │ │ │ ├── __tests__ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── jsx-import-source-pragma.test.tsx │ │ │ │ └── jsx-pragma.test.tsx │ │ │ ├── jsx-dev-runtime.ts │ │ │ ├── jsx-local-namespace.ts │ │ │ └── jsx-runtime.ts │ │ ├── keyframes │ │ │ ├── __fixtures__ │ │ │ │ └── index.ts │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.ts │ │ ├── runtime.ts │ │ ├── runtime │ │ │ ├── __perf__ │ │ │ │ ├── ac.test.ts │ │ │ │ ├── ax.test.ts │ │ │ │ ├── cs.test.tsx │ │ │ │ ├── sheet.test.ts │ │ │ │ └── utils │ │ │ │ │ ├── cs.tsx │ │ │ │ │ └── sheet.ts │ │ │ ├── __tests__ │ │ │ │ ├── ac.test.ts │ │ │ │ ├── ax.test.ts │ │ │ │ ├── css-custom-property.test.ts │ │ │ │ ├── style-ssr.test.tsx │ │ │ │ └── style.test.tsx │ │ │ ├── ac.ts │ │ │ ├── ax.ts │ │ │ ├── cache.ts │ │ │ ├── css-custom-property.ts │ │ │ ├── dev-warnings.ts │ │ │ ├── index.ts │ │ │ ├── is-server-environment.ts │ │ │ ├── sheet.ts │ │ │ ├── shorthand.ts │ │ │ ├── style-cache.tsx │ │ │ ├── style.tsx │ │ │ └── types.ts │ │ ├── styled │ │ │ ├── __tests__ │ │ │ │ └── index.test.tsx │ │ │ └── index.ts │ │ ├── types.ts │ │ ├── utils │ │ │ └── error.ts │ │ └── xcss-prop │ │ │ ├── __tests__ │ │ │ ├── media-query-strict.test.tsx │ │ │ ├── media-query.test.tsx │ │ │ └── xcss-prop.test.tsx │ │ │ └── index.ts │ ├── tsconfig.browser.json │ ├── tsconfig.cjs.json │ ├── tsconfig.json │ └── tsconfig.options.json ├── tsconfig.browser.json ├── tsconfig.esm.json ├── tsconfig.json ├── tsconfig.options.json ├── utils │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── array.ts │ │ ├── constants.ts │ │ ├── default-parser-babel-plugins.ts │ │ ├── error.ts │ │ ├── hash.ts │ │ ├── increase-specificity.ts │ │ ├── index.ts │ │ ├── jsx.ts │ │ ├── kebab-case.ts │ │ ├── preserve-leading-comments.ts │ │ ├── shorthand.ts │ │ └── to-boolean.ts │ └── tsconfig.json └── webpack-loader │ ├── CHANGELOG.md │ ├── README.md │ ├── css-loader.js │ ├── css-loader │ ├── README.md │ ├── compiled-css.css │ └── package.json │ ├── index.js │ ├── package.json │ ├── src │ ├── __fixtures__ │ │ ├── async-styles.ts │ │ ├── babel.tsx │ │ ├── binding-not-found.tsx │ │ ├── common │ │ │ ├── colors.ts │ │ │ └── css-prop.tsx │ │ ├── compiled-error.tsx │ │ ├── custom-resolver.tsx │ │ ├── extracted-component.compiled.css │ │ ├── extracted-component.tsx │ │ ├── important-styles.tsx │ │ ├── lib │ │ │ ├── babel-cjs.d.ts │ │ │ ├── babel-cjs.js │ │ │ ├── babel-esm.d.ts │ │ │ ├── babel-esm.js │ │ │ ├── loader-alias.ts │ │ │ ├── other-css.ts │ │ │ └── webpack-alias.ts │ │ ├── loader-alias.tsx │ │ ├── local-styles.tsx │ │ ├── no-compiled-styles.ts │ │ ├── non-compiled-import-source.tsx │ │ ├── relative-styles.tsx │ │ └── webpack-alias.tsx │ ├── __tests__ │ │ ├── compiled-loader.test.ts │ │ ├── extract-plugin.test.ts │ │ └── test-utils.ts │ ├── compiled-loader.ts │ ├── create-default-resolver.ts │ ├── css-loader.ts │ ├── extract-plugin.ts │ ├── index.ts │ ├── types.ts │ └── utils.ts │ ├── tsconfig.json │ └── types │ ├── loader-utils.d.ts │ └── mini-css-extract-plugin.d.ts ├── renovate.json ├── scripts ├── postbuild.sh ├── postinstall.sh ├── should-nightly-run.sh └── tsconfig.json ├── security-assistant.yml ├── stories ├── assets │ ├── carat-down.svg │ └── carat-up.svg ├── binary-expression.tsx ├── class-names-dynamic.tsx ├── class-names-static.tsx ├── compiled.tsx ├── composing-styles-on-user-defined-components.tsx ├── conditional-rules-css-props.tsx ├── conditional-rules-styled.tsx ├── css-combinators.tsx ├── css-map.tsx ├── css-object-expression.tsx ├── css-prop-dynamic-object.tsx ├── css-prop-file-imports.tsx ├── css-prop-keyframes.tsx ├── css-prop-static-object.tsx ├── css-prop-string.tsx ├── css-tagged-template-expression.tsx ├── edge-cases-interpolations.tsx ├── edge-cases-ordering.tsx ├── edge-cases-shadow-variables.tsx ├── jsx-import-source-pragma.tsx ├── jsx-pragma.tsx ├── keyframes-object-call-expression.tsx ├── keyframes-tagged-template-expression.tsx ├── keyframes │ ├── globals.ts │ ├── object-call-expression.ts │ └── tagged-template-literal.ts ├── media-queries.tsx ├── mixins │ └── index.ts ├── module-traversal.tsx ├── pseudo-states.tsx ├── simple-function-mixins.tsx ├── static-evaluation.tsx ├── style-buckets.tsx ├── styled-combinators.tsx ├── styled-dynamic-object.tsx ├── styled-file-imports.tsx ├── styled-interpolation-function-behavior.tsx ├── styled-keyframes.tsx ├── styled-static-object.tsx ├── styled-string.tsx └── types.d.ts ├── test ├── setup.ts └── test-imports.js ├── tsconfig.json ├── tsconfig.paths.json ├── types ├── jest-matchers │ └── index.d.ts └── json-source-map │ └── index.d.ts ├── website ├── README.md ├── babel.config.js ├── netlify.toml ├── package.json ├── packages │ ├── docs │ │ ├── .babelrc │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── components │ │ │ │ ├── app.tsx │ │ │ │ ├── page-title.ts │ │ │ │ ├── scroll-top.ts │ │ │ │ └── side-nav.tsx │ │ │ ├── examples │ │ │ │ ├── class-names.tsx │ │ │ │ ├── composition.tsx │ │ │ │ ├── css-prop.tsx │ │ │ │ ├── how-it-works.tsx │ │ │ │ └── styled.tsx │ │ │ ├── index.html │ │ │ ├── index.tsx │ │ │ ├── pages │ │ │ │ ├── about-compiled.mdx │ │ │ │ ├── api-class-names.mdx │ │ │ │ ├── api-css-prop.mdx │ │ │ │ ├── api-css.mdx │ │ │ │ ├── api-cssmap.mdx │ │ │ │ ├── api-keyframes.mdx │ │ │ │ ├── api-styled.mdx │ │ │ │ ├── atomic-css.mdx │ │ │ │ ├── composition.mdx │ │ │ │ ├── css-extraction-webpack.mdx │ │ │ │ ├── deprecated-features.mdx │ │ │ │ ├── how-it-works.mdx │ │ │ │ ├── installation.mdx │ │ │ │ ├── issues-with-emotion.mdx │ │ │ │ ├── limitations.mdx │ │ │ │ ├── media-queries-and-other-at-rules.mdx │ │ │ │ ├── migrating.mdx │ │ │ │ ├── pkg-babel-plugin-strip-runtime.mdx │ │ │ │ ├── pkg-babel-plugin.mdx │ │ │ │ ├── pkg-codemods.mdx │ │ │ │ ├── pkg-css.mdx │ │ │ │ ├── pkg-eslint-plugin.mdx │ │ │ │ ├── pkg-jest.mdx │ │ │ │ ├── pkg-parcel-config.mdx │ │ │ │ ├── pkg-parcel-optimizer.mdx │ │ │ │ ├── pkg-parcel-transformer.mdx │ │ │ │ ├── pkg-react-runtime.mdx │ │ │ │ ├── pkg-react.mdx │ │ │ │ ├── pkg-webpack-loader.mdx │ │ │ │ ├── server-side-rendering.mdx │ │ │ │ ├── shorthand.mdx │ │ │ │ ├── testing.mdx │ │ │ │ └── writing-css.mdx │ │ │ └── utils │ │ │ │ ├── export-meta.js │ │ │ │ └── string.ts │ │ ├── tsconfig.json │ │ ├── types │ │ │ └── global.d.ts │ │ └── webpack.config.js │ ├── examples │ │ ├── .babelrc │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── class-names-button.tsx │ │ │ ├── class-names-composition.tsx │ │ │ ├── class-names-dynamic.tsx │ │ │ ├── class-names-obj.tsx │ │ │ ├── css-prop-button.tsx │ │ │ ├── css-prop-composition-correct.tsx │ │ │ ├── css-prop-composition-identifier.tsx │ │ │ ├── css-prop-composition-incorrect.tsx │ │ │ ├── css-prop-composition-multiple.tsx │ │ │ ├── css-prop-composition-no-style.tsx │ │ │ ├── css-prop-conditional-rules.tsx │ │ │ ├── css-prop-dynamic-decl.tsx │ │ │ ├── css-prop-obj.tsx │ │ │ ├── css-prop-string.tsx │ │ │ ├── index.ts │ │ │ ├── mixins.ts │ │ │ ├── styled-as-prop.ts │ │ │ ├── styled-button.ts │ │ │ ├── styled-composition.ts │ │ │ ├── styled-dynamic-decl.ts │ │ │ ├── styled-obj.ts │ │ │ ├── styled-string.ts │ │ │ └── styled-transient-props.ts │ │ └── tsconfig.json │ ├── landing │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── components │ │ │ │ ├── example.tsx │ │ │ │ └── landing.tsx │ │ │ ├── index.html │ │ │ ├── index.tsx │ │ │ └── pages │ │ │ │ └── landing-content.mdx │ │ ├── tsconfig.json │ │ └── webpack.config.js │ └── ui │ │ ├── README.md │ │ ├── global.css │ │ ├── package.json │ │ ├── src │ │ ├── components │ │ │ ├── anchor.tsx │ │ │ ├── code-block.tsx │ │ │ ├── comparison.tsx │ │ │ ├── content.ts │ │ │ ├── example.tsx │ │ │ ├── footer.tsx │ │ │ ├── header.tsx │ │ │ ├── heading.tsx │ │ │ ├── helpers.ts │ │ │ ├── hero.tsx │ │ │ ├── hide-small.ts │ │ │ ├── index.ts │ │ │ ├── links.tsx │ │ │ ├── lozenge.tsx │ │ │ ├── mdx-components.tsx │ │ │ ├── stack.ts │ │ │ └── text.tsx │ │ ├── icon │ │ │ ├── github.tsx │ │ │ ├── index.tsx │ │ │ └── npm.tsx │ │ ├── index.ts │ │ ├── layout │ │ │ ├── index.ts │ │ │ └── root.tsx │ │ └── utils │ │ │ ├── colors.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── types │ │ └── global.d.ts ├── renovate.json └── yarn.lock └── yarn.lock /.atlassian/OWNER: -------------------------------------------------------------------------------- 1 | mdougall 2 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@1.0.1/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "linked": [["@compiled/babel-plugin", "@compiled/babel-plugin-strip-runtime"]], 6 | "access": "public", 7 | "baseBranch": "master" 8 | } 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # http://editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | 9 | # Change these settings to your own preference 10 | indent_style = space 11 | indent_size = 2 12 | 13 | # We recommend you to keep these unchanged 14 | end_of_line = lf 15 | charset = utf-8 16 | trim_trailing_whitespace = true 17 | insert_final_newline = true -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | .loki/reference filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @JakeLane @pancaspe87 @liamqma @dddlr @kylorhall-atlassian @danieldelcore 2 | **/package.json 3 | yarn.lock 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /.github/actions/task-checklist/.npmrc: -------------------------------------------------------------------------------- 1 | registry="https://registry.yarnpkg.com" 2 | -------------------------------------------------------------------------------- /.github/actions/task-checklist/action.yml: -------------------------------------------------------------------------------- 1 | name: Task Checklist 2 | runs: 3 | using: 'composite' 4 | steps: 5 | - name: Install dependencies 6 | run: cd ${{ github.action_path }} && yarn install 7 | shell: bash 8 | - name: Check tasks in PR description 9 | run: cd ${{ github.action_path }} && yarn run check-tasks 10 | shell: bash 11 | -------------------------------------------------------------------------------- /.github/actions/task-checklist/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "task-checklist", 3 | "private": "true", 4 | "version": "1.0.0", 5 | "main": "index.js", 6 | "license": "Apache-2.0", 7 | "dependencies": { 8 | "@actions/core": "^1.11.1", 9 | "@actions/github": "^6.0.0" 10 | }, 11 | "scripts": { 12 | "check-tasks": "node index.js" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### What is this change? 2 | 3 | Describe what change you are making here. 4 | 5 | ### Why are we making this change? 6 | 7 | Give the full context for your change here. 8 | 9 | ### How are we making this change? 10 | 11 | (Optional.) 12 | 13 | --- 14 | 15 | ### PR checklist 16 | 17 | Don't delete me! 18 | 19 | I have... 20 | 21 | - [ ] Updated or added applicable tests 22 | - [ ] Updated the documentation in `website/` 23 | - [ ] Added a changeset (if making any changes that affect Compiled's behaviour) 24 | -------------------------------------------------------------------------------- /.github/workflows/task-checklist.yml: -------------------------------------------------------------------------------- 1 | name: Check all tasks are completed 2 | 3 | on: 4 | pull_request: 5 | types: [opened, edited] 6 | 7 | jobs: 8 | task-checklist: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - uses: ./.github/actions/task-checklist 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | .parcel-cache 4 | .tmp 5 | 6 | coverage 7 | dist 8 | node_modules 9 | storybook-static 10 | 11 | *.log 12 | *.tsbuildinfo 13 | -------------------------------------------------------------------------------- /.loki/.gitignore: -------------------------------------------------------------------------------- 1 | current 2 | difference 3 | -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_dynamic_Array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_dynamic_Array.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_dynamic_Object_CSS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_dynamic_Object_CSS.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_dynamic_String.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_dynamic_String.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_dynamic_String_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_dynamic_String_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_static_Array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_static_Array.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_static_CN_Args.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_static_CN_Args.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_static_Object_CSS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_static_Object_CSS.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_static_String.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_static_String.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ClassNames_static_String_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ClassNames_static_String_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Calc_Utility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Calc_Utility.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Division.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Division.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Multiplication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Multiplication.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Negative_Value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Negative_Value.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Nested_Binary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Nested_Binary.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Non_Static_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Non_Static_Values.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Order_Of_Operations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Order_Of_Operations.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_binary_expression_Static_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_binary_expression_Static_Values.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_module_traversal_Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_module_traversal_Example.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_static_evaluation_Css_Prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_static_evaluation_Css_Prop.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_ast_static_evaluation_Styled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_ast_static_evaluation_Styled.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Active.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Focus.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Focus_Within.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Focus_Within.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Hover.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Link.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Target.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_pseudo_states_Visited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_pseudo_states_Visited.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_atomic_style_buckets_Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_atomic_style_buckets_Example.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_benchmarks_compiled_Dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_benchmarks_compiled_Dynamic.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_benchmarks_compiled_Static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_benchmarks_compiled_Static.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_composition_user_components_Blue_Wrapped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_composition_user_components_Blue_Wrapped.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_composition_user_components_Green_Css_Prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_composition_user_components_Green_Css_Prop.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_composition_user_components_Green_Styled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_composition_user_components_Green_Styled.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_composition_user_components_Red_Wrapped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_composition_user_components_Red_Wrapped.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_css_prop_Not_Primary_Lozenge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_css_prop_Not_Primary_Lozenge.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_css_prop_Not_Primary_Lozenge_With_Array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_css_prop_Not_Primary_Lozenge_With_Array.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_css_prop_Primary_Lozenge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_css_prop_Primary_Lozenge.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_css_prop_Primary_Lozenge_With_Array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_css_prop_Primary_Lozenge_With_Array.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Nested_Text_With_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Nested_Text_With_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Object_Styles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Object_Styles.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Bolded_Primary_Text_With_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Condition_With_Destructed_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Condition_With_Destructed_Values.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Condition_With_Destructured_Props_Key_Value_String.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Condition_With_Destructured_Props_Key_Value_String.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Condition_With_No_Value_Path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Condition_With_No_Value_Path.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Not_Bolded_Text_With_Nested_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Not_Bolded_Text_With_Nested_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Object_Styles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Object_Styles.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Not_Primary_Text_With_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Maybe_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Mixins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Mixins.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Nested_Ternary_Operator_Template_Literal_Css_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Object_Styles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Object_Styles.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Ternary_And_Boolean_Object_Style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Ternary_And_Boolean_Object_Style.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Ternary_Operator_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Primary_Text_With_Ternary_Operator_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Secondary_Text_With_Mixins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Secondary_Text_With_Mixins.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Text_With_Complex_Mixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Text_With_Complex_Mixin.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Text_With_Inline_Mixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Text_With_Inline_Mixin.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_conditional_rules_styled_Text_With_Key_Value_String.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_conditional_rules_styled_Text_With_Key_Value_String.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_combinators_Adjacent_Sibling_Combinator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_combinators_Adjacent_Sibling_Combinator.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_combinators_Child_Combinator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_combinators_Child_Combinator.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_combinators_General_Sibling_Combinator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_combinators_General_Sibling_Combinator.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_map_Conditional_Styles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_map_Conditional_Styles.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_map_Dynamic_Variant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_map_Dynamic_Variant.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_map_Merge_Styles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_map_Merge_Styles.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_map_Variant_As_Prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_map_Variant_As_Prop.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_object_expression_Imported_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_object_expression_Imported_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_object_expression_Inline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_object_expression_Inline.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_object_expression_Local_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_object_expression_Local_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_object_expression_Spread_Imported_Tagged_Templated_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_object_expression_Spread_Imported_Tagged_Templated_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_object_expression_Spread_Imported_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_object_expression_Spread_Imported_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_object_expression_Static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_object_expression_Static.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_dynamic_object_Dynamic_Css_Prop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_dynamic_object_Dynamic_Css_Prop.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_dynamic_object_Important_Child.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_dynamic_object_Important_Child.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_dynamic_object_Interpolations_With_Minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_dynamic_object_Interpolations_With_Minus.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_dynamic_object_Interpolations_With_Zero_And_Minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_dynamic_object_Interpolations_With_Zero_And_Minus.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_file_imports_Call_Expression_Multiple_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_file_imports_Call_Expression_Multiple_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_file_imports_Call_Expression_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_file_imports_Call_Expression_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_file_imports_Tagged_Template_Expression_Multiple_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_file_imports_Tagged_Template_Expression_Multiple_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_file_imports_Tagged_Template_Expression_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_file_imports_Tagged_Template_Expression_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_jsx_import_source_pragma_Local_JSX_Namespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_jsx_import_source_pragma_Local_JSX_Namespace.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_jsx_import_source_pragma_No_Class_Name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_jsx_import_source_pragma_No_Class_Name.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_jsx_import_source_pragma_With_Class_Name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_jsx_import_source_pragma_With_Class_Name.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_jsx_pragma_Local_JSX_Namespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_jsx_pragma_Local_JSX_Namespace.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_jsx_pragma_No_Class_Name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_jsx_pragma_No_Class_Name.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_jsx_pragma_With_Class_Name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_jsx_pragma_With_Class_Name.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_keyframes_inline_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_keyframes_inline_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_keyframes_inline_Shorthand_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_keyframes_inline_Shorthand_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_keyframes_inline_Shorthand_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_keyframes_inline_Shorthand_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_keyframes_inline_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_keyframes_inline_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Expression_Disabled_Next_Line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Expression_Disabled_Next_Line.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Expression_Disabled_Same_Line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Expression_Disabled_Same_Line.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Imported_Obj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Imported_Obj.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Local_Obj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Local_Obj.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Map_With_Keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Map_With_Keys.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Spread_From_Func.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Spread_From_Func.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Spread_From_Obj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_static_object_Object_Literal_Spread_From_Obj.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_string_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_string_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_string_Using_Mixin_Import_Array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_string_Using_Mixin_Import_Array.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_string_Using_Mixin_Import_Identifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_string_Using_Mixin_Import_Identifier.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_prop_string_Using_Mixin_Import_Spread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_prop_string_Using_Mixin_Import_Spread.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_tagged_template_expression_Imported_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_tagged_template_expression_Imported_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_tagged_template_expression_Inline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_tagged_template_expression_Inline.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_tagged_template_expression_Local_Variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_tagged_template_expression_Local_Variable.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_css_tagged_template_expression_Static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_css_tagged_template_expression_Static.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_edge_cases_interpolations_Content_Interpolation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_edge_cases_interpolations_Content_Interpolation.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_edge_cases_interpolations_Prevent_CSS_Variables_Leaking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_edge_cases_interpolations_Prevent_CSS_Variables_Leaking.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_edge_cases_interpolations_Should_Not_Be_Visible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_edge_cases_interpolations_Should_Not_Be_Visible.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_edge_cases_ordering_Media_Ordering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_edge_cases_ordering_Media_Ordering.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_edge_cases_shadow_variables_Clashing_Internal_Names.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_edge_cases_shadow_variables_Clashing_Internal_Names.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_edge_cases_shadow_variables_Clashing_Variable_Names.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_edge_cases_shadow_variables_Clashing_Variable_Names.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Inline_Css_Prop_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Inline_Css_Prop_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Inline_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Inline_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Runtime_Keyframes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Runtime_Keyframes.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Shadowed_Keyframes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Shadowed_Keyframes.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Shorthand_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Shorthand_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Shorthand_Inline_Css_Prop_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Shorthand_Inline_Css_Prop_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Shorthand_Inline_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Shorthand_Inline_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Shorthand_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Shorthand_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Shorthand_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Shorthand_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_object_call_expression_Styled_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Inline_Css_Prop_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Inline_Css_Prop_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Inline_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Inline_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Runtime_Keyframes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Runtime_Keyframes.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shadowed_Keyframes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shadowed_Keyframes.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shorthand_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shorthand_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shorthand_Inline_Css_Prop_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shorthand_Inline_Css_Prop_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shorthand_Inline_Css_Prop_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Shorthand_Inline_Css_Prop_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Shorthand_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Shorthand_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Shorthand_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Shorthand_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_keyframes_tagged_template_expression_Styled_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_media_queries_styled_Object_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_media_queries_styled_Object_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_media_queries_styled_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_media_queries_styled_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_mixins_simple_functions_Object_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_mixins_simple_functions_Object_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_mixins_simple_functions_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_mixins_simple_functions_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_combinators_Adjacent_Sibling_Combinator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_combinators_Adjacent_Sibling_Combinator.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_combinators_Child_Combinator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_combinators_Child_Combinator.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_combinators_General_Sibling_Combinator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_combinators_General_Sibling_Combinator.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_dynamic_object_Object_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_dynamic_object_Object_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_file_imports_Call_Expression_Multiple_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_file_imports_Call_Expression_Multiple_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_file_imports_Call_Expression_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_file_imports_Call_Expression_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_file_imports_Tagged_Template_Expression_Multiple_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_file_imports_Tagged_Template_Expression_Multiple_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_file_imports_Tagged_Template_Expression_Url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_file_imports_Tagged_Template_Expression_Url.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_interpolations_Object_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_interpolations_Object_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_interpolations_Stacking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_interpolations_Stacking.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_interpolations_Template_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_interpolations_Template_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_keyframes_inline_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_keyframes_inline_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_keyframes_inline_Shorthand_Object_Call_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_keyframes_inline_Shorthand_Object_Call_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_keyframes_inline_Shorthand_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_keyframes_inline_Shorthand_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_keyframes_inline_Tagged_Template_Expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_keyframes_inline_Tagged_Template_Expression.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_static_object_Object_Literal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_static_object_Object_Literal.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_static_object_Object_Literal_Map_With_Keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_static_object_Object_Literal_Map_With_Keys.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_static_object_Object_Literal_With_Selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_static_object_Object_Literal_With_Selector.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_static_object_Styled_Args.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_static_object_Styled_Args.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_string_Using_Mixin_Import_Array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_string_Using_Mixin_Import_Array.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_string_Using_Mixin_Import_Identifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_string_Using_Mixin_Import_Identifier.png -------------------------------------------------------------------------------- /.loki/reference/chrome_laptop_styled_string_Using_Mixin_Import_Spread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atlassian-labs/compiled/c3f3d633afb01c496c194ec541a8cbb6bfe76d05/.loki/reference/chrome_laptop_styled_string_Using_Mixin_Import_Spread.png -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 18.17.1 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | CHANGELOG.md 2 | coverage 3 | dist 4 | storybook-static 5 | **/__fixtures__/*.css 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSameLine": true, 3 | "bracketSpacing": true, 4 | "semi": true, 5 | "tabWidth": 2, 6 | "printWidth": 100, 7 | "singleQuote": true, 8 | "trailingComma": "es5", 9 | "useTabs": false 10 | } 11 | -------------------------------------------------------------------------------- /.storybook/.babelrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "@compiled/babel-plugin", 5 | { 6 | "importReact": false, 7 | "optimizeCss": false, 8 | "increaseSpecificity": true, 9 | "transformerBabelPlugins": [ 10 | [ 11 | "@babel/plugin-proposal-decorators", 12 | { 13 | "legacy": true 14 | } 15 | ] 16 | ] 17 | } 18 | ] 19 | ], 20 | "presets": ["@babel/preset-typescript", ["@babel/preset-react", { "runtime": "automatic" }]] 21 | } 22 | -------------------------------------------------------------------------------- /.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | addons: ['storybook-addon-performance/register', 'storybook-addon-pseudo-states'], 3 | core: { 4 | builder: 'webpack5', 5 | }, 6 | stories: ['../stories/*.tsx'], 7 | // Workaround for https://github.com/storybookjs/storybook/issues/15336 8 | typescript: { reactDocgen: false }, 9 | }; 10 | -------------------------------------------------------------------------------- /.storybook/preview.js: -------------------------------------------------------------------------------- 1 | import { addDecorator } from '@storybook/react'; 2 | import { withPerformance } from 'storybook-addon-performance'; 3 | 4 | addDecorator(withPerformance); 5 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib" 3 | } 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | This project adheres to [Semantic Versioning 2.0](http://semver.org/). 4 | All release notes and upgrade notes can be found on our [Github Releases](https://github.com/compiled/css-in-js/releases) page. 5 | -------------------------------------------------------------------------------- /benchmark.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleNameMapper": { 3 | "^@compiled/react/runtime$": "/packages/react/src/runtime.ts", 4 | "^@compiled/(.*)$": "/packages/$1/src/index.ts" 5 | }, 6 | "testEnvironment": "node", 7 | "testMatch": ["**/__perf__/*.test.{ts,tsx}"], 8 | "watchPlugins": ["jest-watch-typeahead/filename", "jest-watch-typeahead/testname"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/parcel/.compiledcssrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "importReact": true, 3 | "extensions": [".js", ".jsx", ".ts", ".tsx", ".customjsx"], 4 | "transformerBabelPlugins": [ 5 | [ 6 | "@babel/plugin-proposal-decorators", 7 | { 8 | "legacy": true 9 | } 10 | ] 11 | ], 12 | "extract": true, 13 | "optimizeCss": false, 14 | "classNameCompressionMapFilePath": "./class-name-compression-map.json" 15 | } 16 | -------------------------------------------------------------------------------- /examples/parcel/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@parcel/config-default", 4 | "@compiled/parcel-config" 5 | ], 6 | "transformers": { 7 | "*.{js,mjs,jsx,cjs,ts,tsx}": [ 8 | // Manually remove the babel transformer so we don't use the root babel config 9 | "@compiled/parcel-transformer-external", 10 | "@compiled/parcel-transformer", 11 | "@parcel/transformer-js", 12 | "@parcel/transformer-react-refresh-wrap" 13 | ], 14 | "*.customjsx": [ 15 | "@compiled/parcel-transformer-external", 16 | "@compiled/parcel-transformer", 17 | "@parcel/transformer-js", 18 | "@parcel/transformer-react-refresh-wrap", 19 | "..." 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /examples/parcel/class-name-compression-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "1wyb12am": "a", 3 | "syaz5scu": "b", 4 | "syazruxl": "c", 5 | "k48pbfng": "d", 6 | "30l35scu": "e", 7 | "f8pj13q2": "f", 8 | "1e0c1o8l": "g", 9 | "ca0qftgi": "h", 10 | "u5f3ftgi": "i", 11 | "n3tdftgi": "j", 12 | "19bvftgi": "k", 13 | "19itak0l": "l", 14 | "2rko1l7b": "m", 15 | "syaz1aj3": "n", 16 | "1p1dangw": "o", 17 | "bfhkbf54": "p" 18 | } 19 | -------------------------------------------------------------------------------- /examples/parcel/lib/parcel-alias.ts: -------------------------------------------------------------------------------- 1 | import { css } from '@compiled/react'; 2 | 3 | export const parcelAliasStyles = css({ 4 | padding: 8, 5 | color: 'indigo', 6 | fontSize: 24, 7 | }); 8 | -------------------------------------------------------------------------------- /examples/parcel/lib/parcel-resolver-alias.ts: -------------------------------------------------------------------------------- 1 | import { css } from '@compiled/react'; 2 | 3 | export const parcelResolverAliasStyles = css({ 4 | color: 'coral', 5 | fontSize: 24, 6 | fontWeight: 'bold', 7 | padding: 8, 8 | }); 9 | -------------------------------------------------------------------------------- /examples/parcel/package-lock.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/parcel/src/async.jsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import '@compiled/react'; 3 | 4 | export default Async = () => ( 5 | <> 6 |
hello from async component
7 | 8 | ); 9 | -------------------------------------------------------------------------------- /examples/parcel/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const primary = 'red'; 2 | 3 | // unused type to test babelPlugins option 4 | export type UnusedType = string; 5 | -------------------------------------------------------------------------------- /examples/parcel/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Parcel app 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /examples/parcel/src/index.jsx: -------------------------------------------------------------------------------- 1 | import React, { StrictMode } from 'react'; 2 | import { render } from 'react-dom'; 3 | 4 | import { App } from './app'; 5 | 6 | render( 7 | 8 | 9 | , 10 | document.getElementById('root') 11 | ); 12 | -------------------------------------------------------------------------------- /examples/parcel/src/ui/annotated.jsx: -------------------------------------------------------------------------------- 1 | import { css } from '@compiled/react'; 2 | import React from 'react'; 3 | 4 | @annotation 5 | class Annotated extends React.Component { 6 | static annotated = false; 7 | 8 | render() { 9 | return Annotated.annotated ? ( 10 |
Annotation class with green background div
11 | ) : ( 12 |
Annotation did not work!
13 | ); 14 | } 15 | } 16 | 17 | function annotation(target) { 18 | target.annotated = true; 19 | return target; 20 | } 21 | 22 | export default Annotated; 23 | -------------------------------------------------------------------------------- /examples/parcel/src/ui/css-map.jsx: -------------------------------------------------------------------------------- 1 | import { css, cssMap } from '@compiled/react'; 2 | 3 | const base = css({ 4 | backgroundColor: 'blue', 5 | }); 6 | 7 | const styles = cssMap({ 8 | danger: { 9 | color: 'red', 10 | }, 11 | success: { 12 | color: 'green', 13 | }, 14 | }); 15 | 16 | export default ({ variant, children }) =>
{children}
; 17 | -------------------------------------------------------------------------------- /examples/parcel/src/ui/custom-file-extension.customjsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@compiled/react'; 2 | 3 | export const CustomFileExtensionStyled = styled.div({ 4 | color: 'orange', 5 | fontWeight: 500, 6 | 7 | ':hover': { 8 | color: 'red', 9 | }, 10 | 11 | ':focus': { 12 | color: 'blue', 13 | }, 14 | }); 15 | 16 | export const customFileExtensionCss = { 17 | color: 'orange', 18 | fontWeight: 500, 19 | 20 | ':hover': { 21 | color: 'red', 22 | }, 23 | 24 | ':focus': { 25 | color: 'blue', 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /examples/parcel/src/ui/typescript.tsx: -------------------------------------------------------------------------------- 1 | /** @jsxImportSource @compiled/react */ 2 | import { primary } from '../constants'; 3 | 4 | interface TypeScriptProps { 5 | color: string; 6 | } 7 | 8 | export const TypeScript = ({ color }: TypeScriptProps): JSX.Element => ( 9 |
18 | hello from typescript file 19 |
20 | ); 21 | -------------------------------------------------------------------------------- /examples/parcel/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "noEmit": true 5 | }, 6 | "include": ["**/*.tsx", "**/*.ts"], 7 | "references": [ 8 | { "path": "../../packages/parcel-optimizer/tsconfig.json" }, 9 | { "path": "../../packages/parcel-transformer/tsconfig.json" }, 10 | { "path": "../../packages/react/tsconfig.browser.json" } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /examples/ssr/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["razzle/babel"], 3 | "plugins": [ 4 | [ 5 | "@compiled/babel-plugin", 6 | { 7 | "optimizeCss": false 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /examples/ssr/.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | npm-debug.log* 4 | .DS_Store 5 | 6 | coverage 7 | node_modules 8 | build 9 | cache 10 | .env.local 11 | .env.development.local 12 | .env.test.local 13 | .env.production.local 14 | -------------------------------------------------------------------------------- /examples/ssr/README.md: -------------------------------------------------------------------------------- 1 | # @compiled/ssr-app 2 | -------------------------------------------------------------------------------- /examples/ssr/razzle.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | options: { 3 | verbose: true, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /examples/ssr/sandbox.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "container": { 3 | "port": 3000 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /examples/ssr/src/client.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { hydrate } from 'react-dom'; 3 | 4 | import App from './app'; 5 | 6 | hydrate(, document.getElementById('root')); 7 | 8 | if (module.hot) { 9 | module.hot.accept(); 10 | } 11 | -------------------------------------------------------------------------------- /examples/ssr/src/index.js: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | 3 | let app = require('./server').default; 4 | 5 | if (module.hot) { 6 | module.hot.accept('./server', function () { 7 | console.log('🔁 HMR Reloading `./server`...'); 8 | try { 9 | app = require('./server').default; 10 | } catch (error) { 11 | console.error(error); 12 | } 13 | }); 14 | console.info('✅ Server-side HMR Enabled!'); 15 | } 16 | 17 | const port = process.env.PORT || 3000; 18 | 19 | export default express() 20 | .use((req, res) => app.handle(req, res)) 21 | .listen(port, function (err) { 22 | if (err) { 23 | console.error(err); 24 | return; 25 | } 26 | console.log(`> Started on port ${port}`); 27 | }); 28 | -------------------------------------------------------------------------------- /examples/ssr/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "../../packages/babel-plugin/tsconfig.json" }, 5 | { "path": "../../packages/react/tsconfig.json" }, 6 | { "path": "../../packages/react/tsconfig.browser.json" }, 7 | { "path": "../../packages/react/tsconfig.cjs.json" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /examples/webpack/class-name-compression-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "1wyb12am": "a", 3 | "syaz32ev": "b", 4 | "k48pbfng": "c", 5 | "30l35scu": "d", 6 | "f8pj13q2": "e", 7 | "19itptrx": "f", 8 | "1kt92a4o": "g", 9 | "171dak0l": "h", 10 | "1swkri7e": "i", 11 | "1tjq14ap": "j", 12 | "yzbc5scu": "k", 13 | "19pk1ul9": "l", 14 | "syaz13q2": "m", 15 | "1wyb1ul9": "n", 16 | "19itlf8h": "o", 17 | "ca0q1vi7": "p", 18 | "u5f31vi7": "q", 19 | "n3td1vi7": "r", 20 | "19bv1vi7": "s", 21 | "k48p1fw0": "t", 22 | "syaz1cnh": "u", 23 | "19it1srw": "v", 24 | "bfhk1j28": "w", 25 | "syazruxl": "x", 26 | "bfhkbf54": "y" 27 | } 28 | -------------------------------------------------------------------------------- /examples/webpack/src/common/constants.ts: -------------------------------------------------------------------------------- 1 | export const primary = 'pink'; 2 | 3 | // unused type to test babelPlugins option 4 | export type UnusedType = string; 5 | -------------------------------------------------------------------------------- /examples/webpack/src/index.jsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from 'react'; 2 | import { render } from 'react-dom'; 3 | 4 | import { App } from './app'; 5 | 6 | import './styles.css'; 7 | 8 | function createRoot() { 9 | const element = document.createElement('div'); 10 | element.id = 'root'; 11 | document.body.appendChild(element); 12 | return element; 13 | } 14 | 15 | render( 16 | 17 | 18 | , 19 | document.getElementById('root') || createRoot() 20 | ); 21 | 22 | if (module.hot) { 23 | module.hot.accept(); 24 | } 25 | -------------------------------------------------------------------------------- /examples/webpack/src/styles.css: -------------------------------------------------------------------------------- 1 | body::before { 2 | display: block; 3 | content: 'CSS FROM A FILE OUTSIDE OF COMPILED'; 4 | } 5 | -------------------------------------------------------------------------------- /examples/webpack/src/ui/annotated.jsx: -------------------------------------------------------------------------------- 1 | import { css } from '@compiled/react'; 2 | import React from 'react'; 3 | 4 | @annotation 5 | class Annotated extends React.Component { 6 | static annotated = false; 7 | 8 | render() { 9 | return Annotated.annotated ? ( 10 |
Annotation class with green background div
11 | ) : ( 12 |
Annotation did not work!
13 | ); 14 | } 15 | } 16 | 17 | function annotation(target) { 18 | target.annotated = true; 19 | return target; 20 | } 21 | 22 | export default Annotated; 23 | -------------------------------------------------------------------------------- /examples/webpack/src/ui/async.js: -------------------------------------------------------------------------------- 1 | import { styled } from '@compiled/react'; 2 | 3 | const Async = styled.button` 4 | font-weight: 700; 5 | color: purple; 6 | border: 2px solid pink; 7 | background-color: transparent; 8 | 9 | :focus { 10 | color: blue; 11 | } 12 | 13 | :hover { 14 | color: red; 15 | } 16 | 17 | @media (min-width: 500px) { 18 | border: 2px solid red; 19 | } 20 | `; 21 | 22 | export default Async; 23 | -------------------------------------------------------------------------------- /examples/webpack/src/ui/css-map.jsx: -------------------------------------------------------------------------------- 1 | import { css, cssMap } from '@compiled/react'; 2 | 3 | const base = css({ 4 | backgroundColor: 'blue', 5 | }); 6 | 7 | const styles = cssMap({ 8 | danger: { 9 | color: 'red', 10 | }, 11 | success: { 12 | color: 'green', 13 | }, 14 | }); 15 | 16 | export default ({ variant, children }) =>
{children}
; 17 | -------------------------------------------------------------------------------- /examples/webpack/src/ui/custom-file-extension.customjsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@compiled/react'; 2 | 3 | export const CustomFileExtensionStyled = styled.div({ 4 | color: 'orange', 5 | fontWeight: 500, 6 | 7 | ':hover': { 8 | color: 'red', 9 | }, 10 | 11 | ':focus': { 12 | color: 'blue', 13 | }, 14 | }); 15 | 16 | export const customFileExtensionCss = { 17 | color: 'orange', 18 | fontWeight: 500, 19 | 20 | ':hover': { 21 | color: 'red', 22 | }, 23 | 24 | ':focus': { 25 | color: 'blue', 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /examples/webpack/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "../../packages/babel-plugin/tsconfig.json" }, 5 | { "path": "../../packages/react/tsconfig.browser.json" }, 6 | // This should technically be in babel-component, but the build setup needs to change quite a bit for that to work 7 | { "path": "../../packages/react/tsconfig.cjs.json" }, 8 | { "path": "../../packages/webpack-loader/tsconfig.json" } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /fixtures/babel-component-extracted/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env", { "targets": { "browsers": "last 1 version" } }], 4 | ["@babel/preset-react", { "runtime": "automatic" }] 5 | ], 6 | "plugins": [ 7 | [ 8 | "@compiled/babel-plugin", 9 | { "importReact": false, "optimizeCss": false, "flattenMultipleSelectors": true } 10 | ], 11 | [ 12 | "@compiled/babel-plugin-strip-runtime", 13 | { "extractStylesToDirectory": { "source": "src", "dest": "dist" } } 14 | ] 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /fixtures/babel-component-extracted/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/babel-component-extracted-fixture", 3 | "version": "0.1.0", 4 | "private": true, 5 | "main": "./dist/index.js", 6 | "scripts": { 7 | "build": "TEST_PKG_VERSION='0.0.0' babel ./src --out-dir=./dist" 8 | }, 9 | "dependencies": { 10 | "@compiled/react": "*" 11 | }, 12 | "devDependencies": { 13 | "@babel/cli": "^7.26.4", 14 | "@babel/core": "^7.26.10", 15 | "@babel/preset-env": "^7.26.9", 16 | "@babel/preset-react": "^7.26.3", 17 | "@compiled/babel-plugin": "*", 18 | "@compiled/babel-plugin-strip-runtime": "*" 19 | }, 20 | "peerDependencies": { 21 | "react": "^17.0.1" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /fixtures/babel-component-extracted/src/index.jsx: -------------------------------------------------------------------------------- 1 | import { styled, css } from '@compiled/react'; 2 | 3 | const Button = styled.button({ 4 | color: 'blue', 5 | fontSize: '30px', 6 | border: '2px solid transparent', 7 | padding: '32px', 8 | backgroundColor: 'yellow', 9 | 10 | '&:hover': { 11 | borderColor: 'blue', 12 | backgroundColor: 'blue', 13 | color: 'white', 14 | }, 15 | 16 | '&:hover, &:focus': { 17 | backgroundColor: 'blue', 18 | color: 'white', 19 | }, 20 | }); 21 | 22 | export default function BabelComponent({ children }) { 23 | return ( 24 |
25 | 26 |
27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /fixtures/babel-component/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env", { "targets": { "browsers": "last 1 version" } }], 4 | ["@babel/preset-react", { "runtime": "automatic" }] 5 | ], 6 | "plugins": [ 7 | [ 8 | "@compiled/babel-plugin", 9 | { "importReact": false, "optimizeCss": false, "flattenMultipleSelectors": true } 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /fixtures/babel-component/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/babel-component-fixture", 3 | "version": "0.1.0", 4 | "private": true, 5 | "main": "./dist/index.js", 6 | "scripts": { 7 | "build": "TEST_PKG_VERSION='0.0.0' babel ./src --out-dir=./dist" 8 | }, 9 | "dependencies": { 10 | "@compiled/react": "*" 11 | }, 12 | "devDependencies": { 13 | "@babel/cli": "^7.26.4", 14 | "@babel/core": "^7.26.10", 15 | "@babel/preset-env": "^7.26.9", 16 | "@babel/preset-react": "^7.26.3", 17 | "@compiled/babel-plugin": "*" 18 | }, 19 | "peerDependencies": { 20 | "react": "^17.0.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /fixtures/babel-component/src/index.jsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@compiled/react'; 2 | 3 | const Button = styled.button` 4 | color: blue; 5 | font-size: 30px; 6 | border: 2px solid transparent; 7 | padding: 32px; 8 | 9 | &:hover { 10 | border-color: blue; 11 | background-color: blue; 12 | color: white; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | background-color: blue; 18 | color: white; 19 | } 20 | `; 21 | 22 | export default function BabelComponent({ children }) { 23 | return ( 24 |
25 | 26 |
27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /fixtures/module-a/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @compiled-private/module-a 2 | 3 | ## 0.1.0 4 | 5 | ### Minor Changes 6 | 7 | - a41e41e6: Update monorepo node version to v18, and drop support for node v12 8 | 9 | ## 0.0.2 10 | 11 | ### Patch Changes 12 | 13 | - 254a6f6: Added ESLint rule to prevent use of extraneous packages, and added these usages of these packages as dependencies. Added new namespace `@compiled-private` to prevent name clashes with existing npm packages. 14 | -------------------------------------------------------------------------------- /fixtures/module-a/index.d.ts: -------------------------------------------------------------------------------- 1 | export const colors: { 2 | primary: string; 3 | danger: string; 4 | }; 5 | 6 | export const objectStyles: { 7 | fontSize: number; 8 | color: string; 9 | backgroundColor: (bgColor?: string) => string | undefined; 10 | }; 11 | 12 | export const colorMixin: (radius: number) => { 13 | color: string; 14 | backgroundColor: string; 15 | borderRadius: number; 16 | }; 17 | -------------------------------------------------------------------------------- /fixtures/module-a/index.js: -------------------------------------------------------------------------------- 1 | export const colors = { 2 | primary: 'purple', 3 | danger: 'orange', 4 | }; 5 | 6 | const fontSize = (() => 12)(); 7 | 8 | export const objectStyles = { 9 | fontSize, 10 | color: colors.danger, 11 | backgroundColor: (bgColor) => bgColor, 12 | }; 13 | 14 | export const colorMixin = (radius) => ({ 15 | color: colors.primary, 16 | backgroundColor: colors.danger, 17 | borderRadius: radius, 18 | }); 19 | -------------------------------------------------------------------------------- /fixtures/module-a/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled-private/module-a", 3 | "version": "0.1.0", 4 | "private": true, 5 | "main": "./index.js", 6 | "types": "./index.d.ts" 7 | } 8 | -------------------------------------------------------------------------------- /fixtures/parcel-optimizer-test-app/.compiledcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "extract": true, 3 | "inlineCss": true 4 | } 5 | -------------------------------------------------------------------------------- /fixtures/parcel-optimizer-test-app/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@parcel/config-default" 4 | ], 5 | "transformers": { 6 | "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": ["@compiled/parcel-transformer", "..."] 7 | }, 8 | "optimizers": { 9 | "*.html": ["@compiled/parcel-optimizer", "..."] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fixtures/parcel-optimizer-test-app/package-lock.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /fixtures/parcel-optimizer-test-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/parcel-optimizer-test-app", 3 | "version": "0.1.6", 4 | "private": true, 5 | "dependencies": { 6 | "@compiled/react": "^0.18.0", 7 | "react": "^17.0.2", 8 | "react-dom": "^17.0.2" 9 | }, 10 | "devDependencies": { 11 | "@compiled/parcel-optimizer": "*", 12 | "@parcel/config-default": "^2.8.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fixtures/parcel-optimizer-test-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-app/.compiledcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "importReact": false, 3 | "extract": false, 4 | "optimizeCss": false 5 | } 6 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-app/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "transformers": { 4 | "*.{js,jsx}": [ 5 | "@compiled/parcel-transformer-external", 6 | "@compiled/parcel-transformer", 7 | "..." 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/parcel-transformer-test-app", 3 | "version": "0.1.6", 4 | "private": true, 5 | "dependencies": { 6 | "@compiled/react": "^0.18.0", 7 | "react": "^17.0.2", 8 | "react-dom": "^17.0.2" 9 | }, 10 | "devDependencies": { 11 | "@compiled/parcel-transformer": "*", 12 | "@parcel/config-default": "^2.8.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-app/src/index.jsx: -------------------------------------------------------------------------------- 1 | console.log('File START'); 2 | 3 | import { css } from '@compiled/react'; 4 | 5 | const styles = css({ backgroundColor: 'green' }); 6 | 7 | const App = () => ( 8 | <> 9 |
hello from parcel
10 | 11 | ); 12 | 13 | console.log('File END'); 14 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/.compiledcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "importReact": false, 3 | "extract": true, 4 | "optimizeCss": false, 5 | "inlineCss": true, 6 | "classNameCompressionMapFilePath": "./class-name-compression-map.json" 7 | } 8 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "transformers": { 4 | "*.{js,jsx}": [ 5 | "@compiled/parcel-transformer-external", 6 | "@compiled/parcel-transformer", 7 | "..." 8 | ] 9 | }, 10 | "optimizers": { 11 | "*.html": [ 12 | "@compiled/parcel-optimizer", 13 | "..." 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/class-name-compression-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "1wyb12am": "a", 3 | "syaz5scu": "b" 4 | } 5 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/package-lock.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/parcel-transformer-test-compress-class-name-app", 3 | "version": "0.2.5", 4 | "private": true, 5 | "dependencies": { 6 | "@compiled/react": "^0.18.0", 7 | "react": "^17.0.2", 8 | "react-dom": "^17.0.2" 9 | }, 10 | "devDependencies": { 11 | "@compiled/parcel-transformer": "*", 12 | "@compiled/parcel-transformer-external": "*", 13 | "@parcel/config-default": "^2.8.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-compress-class-name-app/src/index.jsx: -------------------------------------------------------------------------------- 1 | import '@compiled/react'; 2 | 3 | const App = () => ( 4 | <> 5 |
CSS prop
6 | 7 | ); 8 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/.compiledcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "importReact": false, 3 | "extract": false, 4 | "optimizeCss": false, 5 | "resolve": { 6 | "alias": { 7 | "~": "../" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "transformers": { 4 | "*.{js,jsx}": [ 5 | "@compiled/parcel-transformer-external", 6 | "@compiled/parcel-transformer", 7 | "..." 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/package-lock.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/parcel-transformer-test-custom-resolve-app", 3 | "version": "0.1.7", 4 | "private": true, 5 | "dependencies": { 6 | "@compiled/react": "^0.18.0", 7 | "react": "^17.0.2", 8 | "react-dom": "^17.0.2" 9 | }, 10 | "devDependencies": { 11 | "@compiled/parcel-transformer": "*", 12 | "@compiled/parcel-transformer-external": "*", 13 | "@parcel/config-default": "^2.8.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/src/foo.js: -------------------------------------------------------------------------------- 1 | export const color = 'red'; 2 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolve-app/src/index.jsx: -------------------------------------------------------------------------------- 1 | import '@compiled/react'; 2 | import { color } from '~/src/foo.js'; 3 | 4 | const App = () => ( 5 | <> 6 |
CSS prop
7 | 8 | ); 9 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/.compiledcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "importReact": false, 3 | "extract": false, 4 | "optimizeCss": false, 5 | "resolver": "@compiled-private/resolver" 6 | } 7 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "transformers": { 4 | "*.{js,jsx}": ["@compiled/parcel-transformer", "..."] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @compiled/parcel-transformer-test-custom-resolver-app 2 | 3 | ## 0.1.3 4 | 5 | ### Patch Changes 6 | 7 | - Updated dependencies [9a15e742] 8 | - @compiled/react@0.18.0 9 | 10 | ## 0.1.2 11 | 12 | ### Patch Changes 13 | 14 | - Updated dependencies [4b2e5eeb] 15 | - Updated dependencies [39d9a02c] 16 | - Updated dependencies [20528e91] 17 | - Updated dependencies [5701b914] 18 | - @compiled/react@0.17.0 19 | 20 | ## 0.1.1 21 | 22 | ### Patch Changes 23 | 24 | - Updated dependencies [f8d01fa2] 25 | - @compiled/react@0.16.0 26 | 27 | ## 0.1.0 28 | 29 | ### Minor Changes 30 | 31 | - 809cc389: Add resolver test application 32 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/package-lock.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/parcel-transformer-test-custom-resolver-app", 3 | "version": "0.1.3", 4 | "private": true, 5 | "dependencies": { 6 | "@compiled/react": "^0.18.0", 7 | "react": "^17.0.2", 8 | "react-dom": "^17.0.2" 9 | }, 10 | "devDependencies": { 11 | "@compiled/parcel-transformer": "*", 12 | "@parcel/config-default": "^2.8.3" 13 | }, 14 | "alias": { 15 | "test": "../resolver/main.js" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-custom-resolver-app/src/index.jsx: -------------------------------------------------------------------------------- 1 | import { css } from '@compiled/react'; 2 | import { primary } from 'test'; 3 | 4 | const App = () =>
; 5 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-extract-app/.compiledcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "importReact": false, 3 | "extract": true, 4 | "optimizeCss": false, 5 | "inlineCss": true 6 | } 7 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-extract-app/.parcelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@parcel/config-default", 3 | "transformers": { 4 | "*.{js,jsx}": [ 5 | "@compiled/parcel-transformer-external", 6 | "@compiled/parcel-transformer", 7 | "..." 8 | ] 9 | }, 10 | "optimizers": { 11 | "*.html": [ 12 | "@compiled/parcel-optimizer", 13 | "..." 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-extract-app/package-lock.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-extract-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/parcel-transformer-test-extract-app", 3 | "version": "0.1.6", 4 | "private": true, 5 | "dependencies": { 6 | "@compiled/react": "^0.18.0", 7 | "react": "^17.0.2", 8 | "react-dom": "^17.0.2" 9 | }, 10 | "devDependencies": { 11 | "@compiled/babel-component-extracted-fixture": "*", 12 | "@compiled/babel-component-fixture": "*", 13 | "@compiled/parcel-transformer": "*", 14 | "@compiled/parcel-transformer-external": "*", 15 | "@parcel/config-default": "^2.8.3" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-extract-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /fixtures/parcel-transformer-test-extract-app/src/index.jsx: -------------------------------------------------------------------------------- 1 | import BabelComponentExtracted from '@compiled/babel-component-extracted-fixture/dist/index'; 2 | import BabelComponent from '@compiled/babel-component-fixture'; 3 | import { css } from '@compiled/react'; 4 | 5 | const App = () => ( 6 | <> 7 |
CSS prop
8 | Babel component 9 | Component from NPM 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /fixtures/resolver-webpack/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @compiled-private/resolver-webpack 2 | 3 | ## 0.1.0 4 | 5 | ### Minor Changes 6 | 7 | - 809cc389: Add resolver fixture 8 | -------------------------------------------------------------------------------- /fixtures/resolver-webpack/index.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path'); 2 | 3 | module.exports = { 4 | resolveSync(_, request) { 5 | if (request === 'test') { 6 | return join(__dirname, 'main.js'); 7 | } 8 | 9 | throw new Error('Unreachable code'); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /fixtures/resolver-webpack/main.js: -------------------------------------------------------------------------------- 1 | export const primary = 'very-very red color'; 2 | -------------------------------------------------------------------------------- /fixtures/resolver-webpack/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled-private/resolver-webpack", 3 | "version": "0.1.0", 4 | "private": true, 5 | "main": "index.js" 6 | } 7 | -------------------------------------------------------------------------------- /fixtures/resolver/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @compiled-private/resolver 2 | 3 | ## 0.1.0 4 | 5 | ### Minor Changes 6 | 7 | - 809cc389: Add resolver fixture 8 | -------------------------------------------------------------------------------- /fixtures/resolver/index.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path'); 2 | 3 | module.exports = { 4 | resolveSync(_, request) { 5 | if (request === 'test') { 6 | return join(__dirname, 'main.js'); 7 | } 8 | 9 | throw new Error('Unreachable code'); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /fixtures/resolver/main.js: -------------------------------------------------------------------------------- 1 | export const primary = 'red'; 2 | -------------------------------------------------------------------------------- /fixtures/resolver/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled-private/resolver", 3 | "version": "0.1.0", 4 | "private": true, 5 | "main": "index.js" 6 | } 7 | -------------------------------------------------------------------------------- /fixtures/strict-api-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fixture/strict-api-test", 3 | "version": "0.1.0", 4 | "private": true, 5 | "main": "./src/index.ts", 6 | "dependencies": { 7 | "@compiled/react": "*" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /fixtures/strict-api-test/src/index.ts: -------------------------------------------------------------------------------- 1 | import { createStrictAPI } from '@compiled/react'; 2 | 3 | const { css, XCSSProp, cssMap, cx } = createStrictAPI<{ 4 | '&:hover': { 5 | color: 'var(--ds-text-hover)'; 6 | background: 'var(--ds-surface-hover)' | 'var(--ds-surface-sunken-hover)'; 7 | }; 8 | color: 'var(--ds-text)'; 9 | background: 'var(--ds-surface)' | 'var(--ds-surface-sunken)'; 10 | }>(); 11 | 12 | export { css, XCSSProp, cssMap, cx }; 13 | -------------------------------------------------------------------------------- /jest.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleNameMapper": { 3 | "^@compiled/react/runtime$": "/packages/react/src/runtime.ts", 4 | "^@compiled/react/(.*)$": "/packages/react/src/jsx/$1.ts", 5 | "^@compiled/(.*)$": "/packages/$1/src/index.ts" 6 | }, 7 | "setupFilesAfterEnv": ["jest-extended", "./test/setup.ts"], 8 | "testEnvironment": "jsdom", 9 | "testMatch": ["**/src/**/*.test.{ts,tsx}"], 10 | "testPathIgnorePatterns": ["__perf__"], 11 | "transformIgnorePatterns": ["node_modules/(?!(@compiled|@parcel|ordered-binary))"], 12 | "watchPathIgnorePatterns": ["dist/"], 13 | "watchPlugins": ["jest-watch-typeahead/filename", "jest-watch-typeahead/testname"] 14 | } 15 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/.snyk: -------------------------------------------------------------------------------- 1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. 2 | version: v1.25.0 3 | # ignores vulnerabilities until expiry date; change duration by modifying expiry date 4 | ignore: 5 | 'snyk:lic:npm:postcss-values-parser:MPL-2.0': 6 | - '*': 7 | reason: Given the library is employed during the build step which is non-distributed, it is compliant. 8 | expires: 2033-09-15T05:46:34.098Z 9 | created: 2023-09-15T05:46:34.102Z 10 | patch: {} 11 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/README.md: -------------------------------------------------------------------------------- 1 | # @compiled/babel-plugin-strip-runtime 2 | 3 | Babel plugin used to strip away Compiled's runtime. 4 | 5 | ## Installation 6 | 7 | ```bash 8 | npm i @compiled/babel-plugin-strip-runtime --save-dev 9 | ``` 10 | 11 | ## Usage 12 | 13 | Detailed docs and example usage can be [found on the documentation website](https://compiledcssinjs.com/docs/pkg-babel-plugin-strip-runtime). 14 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This exists for local sessions so source files don't need to be built. 3 | * This is an unfortunate hack if you're reading this and have a spare 4 | * eng health week please find a better way to not have to do this. 5 | */ 6 | module.exports = require('./src'); 7 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/src/utils/is-cc-component.ts: -------------------------------------------------------------------------------- 1 | import * as t from '@babel/types'; 2 | 3 | /** 4 | * Returns `true` if `node` looks like `CC` identifier. 5 | * 6 | * @param node 7 | * @returns 8 | */ 9 | export const isCCComponent = (node: t.Node): boolean => { 10 | if (t.isIdentifier(node) && node.name === 'CC') { 11 | return true; 12 | } 13 | 14 | if (t.isMemberExpression(node) && t.isIdentifier(node.property) && node.property.name === 'CC') { 15 | return true; 16 | } 17 | 18 | return false; 19 | }; 20 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/src/utils/is-create-element.ts: -------------------------------------------------------------------------------- 1 | import * as t from '@babel/types'; 2 | 3 | /** 4 | * Return true if (and only if) the current node is a 5 | * `React.createElement()` function call. 6 | * 7 | * @param node 8 | * @returns if the node is `React.createElement()` 9 | */ 10 | export const isCreateElement = (node: t.Node): node is t.CallExpression => { 11 | return ( 12 | t.isMemberExpression(node) && 13 | t.isIdentifier(node.object) && 14 | node.object.name === 'React' && 15 | t.isIdentifier(node.property) && 16 | node.property.name === 'createElement' 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/src/utils/to-uri-component.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Escapes a CSS rule to be a valid query param. 3 | * Also escapes escalamation marks (!) to not confuse webpack. 4 | * 5 | * @param rule 6 | * @returns 7 | */ 8 | export const toURIComponent = (rule: string): string => { 9 | const component = encodeURIComponent(rule).replace(/!/g, '%21'); 10 | 11 | return component; 12 | }; 13 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.options.json", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "outDir": "dist" 6 | }, 7 | "references": [{ "path": "../babel-plugin" }, { "path": "../css" }] 8 | } 9 | -------------------------------------------------------------------------------- /packages/babel-plugin-strip-runtime/types/babel__helper-plugin-utils.d.ts: -------------------------------------------------------------------------------- 1 | declare module '@babel/helper-plugin-utils' { 2 | import { PluginObj } from '@babel/core'; 3 | 4 | export interface Api { 5 | assertVersion(version: number): void; 6 | } 7 | 8 | export function declare(cb: (api: Api) => PluginObj): PluginObj; 9 | } 10 | -------------------------------------------------------------------------------- /packages/babel-plugin/README.md: -------------------------------------------------------------------------------- 1 | # @compiled/babel-plugin 2 | 3 | Babel plugin used to transform your code. 4 | 5 | ## Installation 6 | 7 | ```bash 8 | npm i @compiled/babel-plugin --save-dev 9 | ``` 10 | 11 | ## Usage 12 | 13 | Detailed docs and example usage can be [found on the documentation website](https://compiledcssinjs.com/docs/pkg-babel-plugin). 14 | -------------------------------------------------------------------------------- /packages/babel-plugin/index.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-var-requires 2 | const tsNode = require('ts-node'); 3 | // eslint-disable-next-line @typescript-eslint/no-var-requires 4 | const tsPaths = require('tsconfig-paths'); 5 | 6 | tsNode.register({ 7 | transpileOnly: true, 8 | project: __dirname + '/tsconfig.json', 9 | }); 10 | 11 | tsPaths.register(); 12 | 13 | /** 14 | * This exists for local sessions so source files don't need to be built. 15 | * This is an unfortunate hack if you're reading this and have a spare 16 | * eng health week please find a better way to not have to do this. 17 | */ 18 | module.exports = require('./src'); 19 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/__fixtures__/mixins/alias.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import { css as css2 } from '@compiled/react'; 3 | 4 | export const stylesWithAlias = { 5 | default: css2({ 6 | color: 'black', 7 | }), 8 | success: css2({ 9 | color: 'green', 10 | }), 11 | fail: css2({ 12 | color: 'red', 13 | }), 14 | }; 15 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/__fixtures__/mixins/reexport.js: -------------------------------------------------------------------------------- 1 | import { colors } from '@compiled-private/module-a'; 2 | 3 | export const reexport = colors.primary; 4 | 5 | export const objectReexport = { 6 | foo: colors.danger, 7 | }; 8 | 9 | export { primary as default, secondary, default as reexportedDefault } from './simple'; 10 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/__fixtures__/mixins/simple.js: -------------------------------------------------------------------------------- 1 | export const primary = 'red'; 2 | 3 | export const secondary = 'pink'; 4 | 5 | export default 'red'; 6 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/__fixtures__/mixins/strings.js: -------------------------------------------------------------------------------- 1 | import { primary } from './simple'; 2 | 3 | export const bold = ` 4 | font-size: 12px; 5 | font-weight: bold; 6 | `; 7 | 8 | const fontSize = 16; 9 | 10 | export const italics = ` 11 | font-size: ${fontSize}px; 12 | font-weight: italic; 13 | `; 14 | 15 | export const danger = ` 16 | color: ${primary}; 17 | font-size: 10px; 18 | `; 19 | 20 | export const ID_SELECTOR = '#id-selector'; 21 | 22 | const id = 'joined-selector'; 23 | 24 | export const JOINED_SELECTOR = `#${id}`; 25 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/__fixtures__/resolver.js: -------------------------------------------------------------------------------- 1 | const { join } = require('path'); 2 | 3 | module.exports = { 4 | resolveSync(_, request) { 5 | if (request === 'test') { 6 | return join(__dirname, 'mixins', 'simple.js'); 7 | } 8 | 9 | throw new Error('Unreachable code'); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const DOM_PROPS_IDENTIFIER_NAME = '__cmpldp'; 2 | export const PROPS_IDENTIFIER_NAME = '__cmplp'; 3 | export const REF_IDENTIFIER_NAME = '__cmplr'; 4 | export const STYLE_IDENTIFIER_NAME = '__cmpls'; 5 | 6 | export const COMPILED_DIRECTIVE_DISABLE_LINE = '@compiled-disable-line'; 7 | export const COMPILED_DIRECTIVE_DISABLE_NEXT_LINE = '@compiled-disable-next-line'; 8 | export const COMPILED_DIRECTIVE_TRANSFORM_CSS_PROP = 'transform-css-prop'; 9 | 10 | export const DEFAULT_CODE_EXTENSIONS = ['.js', '.jsx', '.ts', '.tsx']; 11 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/css/__tests__/cleanup.test.ts: -------------------------------------------------------------------------------- 1 | import { transform } from '../../test-utils'; 2 | 3 | describe('css', () => { 4 | it('should remove css node if assigned to a variable', () => { 5 | const actual = transform(` 6 | import { css } from '@compiled/react'; 7 | 8 | const styles = css\`color: red;\`; 9 | `); 10 | 11 | expect(actual).toInclude('const styles = null;'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './babel-plugin'; 2 | export type { PluginOptions, Metadata, Resolver, State, Tag, TransformResult } from './types'; 3 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/__mocks__/cache.ts: -------------------------------------------------------------------------------- 1 | const { Cache } = jest.requireActual('../cache'); 2 | 3 | Cache.getUniqueKey = (key: string, namespace?: string) => 4 | namespace ? `${namespace}----${key}` : key; 5 | 6 | export { Cache }; 7 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/build-display-name.ts: -------------------------------------------------------------------------------- 1 | import template from '@babel/template'; 2 | import type * as t from '@babel/types'; 3 | 4 | const displayNameTemplate = template( 5 | ` 6 | if (process.env.NODE_ENV !== 'production') { 7 | %%identifier%%.displayName = %%displayName%%; 8 | } 9 | `, 10 | { syntacticPlaceholders: true } 11 | ); 12 | 13 | /** 14 | * Assigns a display name string to the identifier. 15 | * 16 | * @param identifier 17 | * @param displayName 18 | * @returns 19 | */ 20 | export const buildDisplayName = (identifier: string, displayName: string = identifier): t.Node => { 21 | return displayNameTemplate({ 22 | identifier, 23 | displayName: `'${displayName}'`, 24 | }) as t.Node; 25 | }; 26 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/constants.ts: -------------------------------------------------------------------------------- 1 | export const CONDITIONAL_PATHS: ['consequent', 'alternate'] = ['consequent', 'alternate']; 2 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/create-result-pair.ts: -------------------------------------------------------------------------------- 1 | import type * as t from '@babel/types'; 2 | 3 | import type { Metadata } from '../types'; 4 | 5 | export const createResultPair = ( 6 | value: t.Expression, 7 | meta: Metadata 8 | ): { 9 | value: t.Expression; 10 | meta: Metadata; 11 | } => ({ 12 | value, 13 | meta, 14 | }); 15 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/get-jsx-attribute.ts: -------------------------------------------------------------------------------- 1 | import * as t from '@babel/types'; 2 | 3 | export const getJSXAttribute = ( 4 | node: t.Node, 5 | name: string 6 | ): [t.JSXAttribute | undefined, number] => { 7 | if (!t.isJSXElement(node)) { 8 | return [undefined, -1]; 9 | } 10 | 11 | let i = -1; 12 | const jsxAttribute = node.openingElement.attributes.find( 13 | (attribute, index): attribute is t.JSXAttribute => { 14 | if (t.isJSXAttribute(attribute) && attribute.name.name === name) { 15 | i = index; 16 | return true; 17 | } 18 | 19 | return false; 20 | } 21 | ); 22 | 23 | return [jsxAttribute, i]; 24 | }; 25 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/get-runtime-class-name-library.ts: -------------------------------------------------------------------------------- 1 | import type { Metadata } from '../types'; 2 | 3 | // If classNameCompressionMap is provided, import and use `ac`, otherwise use `ax`. 4 | // Although `ac` does what `ax` does plus handling compressed class names, `ax` is more performant than `ac`. 5 | // Therefore, we use `ax` by default unless classNameCompressionMap is provided. 6 | export const getRuntimeClassNameLibrary = (meta: Metadata): string => { 7 | return meta.state.opts.classNameCompressionMap ? 'ac' : 'ax'; 8 | }; 9 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/has-numeric-value.ts: -------------------------------------------------------------------------------- 1 | import * as t from '@babel/types'; 2 | 3 | export const hasNumericValue = (expression: t.Expression): boolean => 4 | t.isNumericLiteral(expression) || 5 | (t.isStringLiteral(expression) && !Number.isNaN(Number(expression.value))); 6 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/is-empty.ts: -------------------------------------------------------------------------------- 1 | import * as t from '@babel/types'; 2 | 3 | export const isEmptyValue = (expression: t.Expression): boolean => 4 | t.isIdentifier(expression, { name: 'undefined' }) || 5 | t.isNullLiteral(expression) || 6 | t.isStringLiteral(expression, { value: '' }); 7 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/traverse-expression/index.ts: -------------------------------------------------------------------------------- 1 | export { traverseBinaryExpression } from './traverse-binary-expression'; 2 | export { traverseFunction } from './traverse-function'; 3 | export { traverseCallExpression } from './traverse-call-expression'; 4 | export { traverseIdentifier } from './traverse-identifier'; 5 | export { traverseMemberExpression } from './traverse-member-expression'; 6 | export { traverseUnaryExpression } from './traverse-unary-expression'; 7 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/traverse-expression/traverse-member-expression/traverse-access-path/evaluate-path/object.ts: -------------------------------------------------------------------------------- 1 | import type * as t from '@babel/types'; 2 | 3 | import type { Metadata } from '../../../../../types'; 4 | import { createResultPair } from '../../../../create-result-pair'; 5 | import { getObjectPropertyValue } from '../../../../traversers'; 6 | 7 | export const evaluateObjectPath = ( 8 | expression: t.ObjectExpression, 9 | meta: Metadata, 10 | propertyName: string 11 | ): ReturnType => { 12 | const result = getObjectPropertyValue(expression, propertyName); 13 | 14 | return createResultPair(result ? (result.node as t.Expression) : expression, meta); 15 | }; 16 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/traversers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './object'; 2 | export * from './get-export'; 3 | export * from './set-imported-compiled-imports'; 4 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/traversers/object.ts: -------------------------------------------------------------------------------- 1 | import traverse from '@babel/traverse'; 2 | import * as t from '@babel/types'; 3 | 4 | import type { Result } from './types'; 5 | 6 | export const getObjectPropertyValue = ( 7 | object: t.ObjectExpression, 8 | propertyName: string 9 | ): Result | undefined => { 10 | let result; 11 | 12 | traverse(object, { 13 | noScope: true, 14 | ObjectProperty(path) { 15 | if (t.isIdentifier(path.node.key, { name: propertyName })) { 16 | result = { path, node: path.node.value }; 17 | path.stop(); 18 | } 19 | }, 20 | }); 21 | 22 | return result; 23 | }; 24 | -------------------------------------------------------------------------------- /packages/babel-plugin/src/utils/traversers/types.ts: -------------------------------------------------------------------------------- 1 | import type { NodePath } from '@babel/traverse'; 2 | import type * as t from '@babel/types'; 3 | 4 | export type Result = { 5 | node: t.Node; 6 | path: NodePath; 7 | }; 8 | -------------------------------------------------------------------------------- /packages/babel-plugin/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.options.json", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "outDir": "dist" 6 | }, 7 | "references": [{ "path": "../benchmark" }, { "path": "../css" }, { "path": "../utils" }] 8 | } 9 | -------------------------------------------------------------------------------- /packages/babel-plugin/types/babel__helper-plugin-utils.d.ts: -------------------------------------------------------------------------------- 1 | declare module '@babel/helper-plugin-utils' { 2 | import { PluginObj } from '@babel/core'; 3 | 4 | export interface Api { 5 | assertVersion(version: number): void; 6 | } 7 | 8 | export function declare(cb: (api: Api) => PluginObj): PluginObj; 9 | } 10 | -------------------------------------------------------------------------------- /packages/babel-plugin/types/babel__jsx-plugin-syntax.d.ts: -------------------------------------------------------------------------------- 1 | declare module '@babel/plugin-syntax-jsx'; 2 | -------------------------------------------------------------------------------- /packages/benchmark/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @compiled/benchmark 2 | 3 | ## 1.1.0 4 | 5 | ### Minor Changes 6 | 7 | - a41e41e6: Update monorepo node version to v18, and drop support for node v12 8 | 9 | ## 1.0.1 10 | 11 | ### Patch Changes 12 | 13 | - 79cfb08: Internal refactor changing how the TypeScript compiler picks up source files. 14 | -------------------------------------------------------------------------------- /packages/benchmark/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@compiled/benchmark", 3 | "version": "1.1.0", 4 | "private": true, 5 | "main": "dist/index.js", 6 | "module": "dist/index.js", 7 | "types": "dist/index.d.ts", 8 | "dependencies": { 9 | "benchmark": "^2.1.4" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/benchmark/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.options.json", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "outDir": "dist" 6 | }, 7 | "references": [{ "path": "../jest" }] 8 | } 9 | -------------------------------------------------------------------------------- /packages/codemods/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const REACT_IMPORT_PATH = 'react'; 2 | export const REACT_IMPORT_NAME = 'React'; 3 | -------------------------------------------------------------------------------- /packages/codemods/src/utils/apply-visitor.ts: -------------------------------------------------------------------------------- 1 | import type { Program } from 'jscodeshift'; 2 | 3 | import type { CodemodPluginInstance } from '../plugins/types'; 4 | 5 | export const applyVisitor = ({ 6 | plugins, 7 | originalProgram, 8 | currentProgram, 9 | }: { 10 | plugins: CodemodPluginInstance[]; 11 | originalProgram: Program; 12 | currentProgram: Program; 13 | }): void => { 14 | for (const plugin of plugins) { 15 | const programImpl = plugin.visitor?.program; 16 | if (programImpl) { 17 | programImpl({ 18 | originalProgram, 19 | program: currentProgram, 20 | }); 21 | } 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /packages/codemods/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export { addCommentBefore } from './add-comment'; 2 | export { applyVisitor } from './apply-visitor'; 3 | export { 4 | convertDefaultImportToNamedImport, 5 | convertMixedImportToNamedImport, 6 | } from './convert-to-named-import'; 7 | export { getImportDeclarationCollection, hasImportDeclaration } from './import-declarations'; 8 | export { withPlugin } from './with-plugin'; 9 | -------------------------------------------------------------------------------- /packages/codemods/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.options.json", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "outDir": "dist" 6 | }, 7 | "references": [{ "path": "../jest" }, { "path": "../utils" }] 8 | } 9 | -------------------------------------------------------------------------------- /packages/css/.snyk: -------------------------------------------------------------------------------- 1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. 2 | version: v1.25.0 3 | # ignores vulnerabilities until expiry date; change duration by modifying expiry date 4 | ignore: 5 | 'snyk:lic:npm:postcss-values-parser:MPL-2.0': 6 | - '*': 7 | reason: Given the library is employed during the build step which is non-distributed, it is compliant. 8 | expires: 2033-09-15T05:46:34.098Z 9 | created: 2023-09-15T05:46:34.102Z 10 | patch: {} 11 | -------------------------------------------------------------------------------- /packages/css/README.md: -------------------------------------------------------------------------------- 1 | # @compiled/css 2 | 3 | CSS utilities used by the Babel plugin. 4 | 5 | ## Installation 6 | 7 | ```bash 8 | npm i @compiled/css 9 | ``` 10 | 11 | ## Usage 12 | 13 | Detailed docs and example usage can be [found on the documentation website](https://compiledcssinjs.com/docs/pkg-css). 14 | -------------------------------------------------------------------------------- /packages/css/src/index.ts: -------------------------------------------------------------------------------- 1 | export { addUnitIfNeeded } from './utils/css-property'; 2 | export { transformCss } from './transform'; 3 | export { 4 | cssAffixInterpolation, 5 | AfterInterpolation, 6 | BeforeInterpolation, 7 | } from './utils/css-affix-interpolation'; 8 | export { sort } from './sort'; 9 | export { generateCompressionMap } from './generate-compression-map'; 10 | -------------------------------------------------------------------------------- /packages/css/src/plugins/discard-empty-rules.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'postcss'; 2 | 3 | const isValueEmpty = (value: string): boolean => 4 | value === 'undefined' || value === 'null' || value.trim() === ''; 5 | 6 | /** 7 | * Discards any rule with an empty value. 8 | */ 9 | export const discardEmptyRules = (): Plugin => { 10 | return { 11 | postcssPlugin: 'discard-empty-rules', 12 | Declaration(node) { 13 | if (isValueEmpty(node.value)) { 14 | const { parent } = node; 15 | node.remove(); 16 | 17 | if (parent?.type === 'rule' && parent.nodes.length === 0) { 18 | parent.remove(); 19 | } 20 | } 21 | }, 22 | }; 23 | }; 24 | 25 | export const postcss = true; 26 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/background.ts: -------------------------------------------------------------------------------- 1 | import type { ConversionFunction } from './types'; 2 | import { isColor } from './utils'; 3 | 4 | /** 5 | * Only background-color is expanded. 6 | * https://developer.mozilla.org/en-US/docs/Web/CSS/background 7 | */ 8 | export const background: ConversionFunction = (value) => { 9 | if (value.nodes.length === 1 && isColor(value.nodes[0])) { 10 | return [{ prop: 'background-color', value: value.nodes[0].toString() }]; 11 | } 12 | 13 | return [{ value: value.nodes.join(' ') }]; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/margin.ts: -------------------------------------------------------------------------------- 1 | import type { ConversionFunction } from './types'; 2 | 3 | /** 4 | * https://developer.mozilla.org/en-US/docs/Web/CSS/margin 5 | */ 6 | export const margin: ConversionFunction = (value) => { 7 | const [top, right = top, bottom = top, left = right] = value.nodes; 8 | 9 | return [ 10 | { prop: 'margin-top', value: top.toString() }, 11 | { prop: 'margin-right', value: right.toString() }, 12 | { prop: 'margin-bottom', value: bottom.toString() }, 13 | { prop: 'margin-left', value: left.toString() }, 14 | ]; 15 | }; 16 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/overflow.ts: -------------------------------------------------------------------------------- 1 | import type { ConversionFunction } from './types'; 2 | 3 | /** 4 | * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow 5 | */ 6 | export const overflow: ConversionFunction = (value) => { 7 | const [overflowX, overflowY = overflowX] = value.nodes; 8 | 9 | return [ 10 | { prop: 'overflow-x', value: overflowX.toString() }, 11 | { prop: 'overflow-y', value: overflowY.toString() }, 12 | ]; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/padding.ts: -------------------------------------------------------------------------------- 1 | import type { ConversionFunction } from './types'; 2 | 3 | /** 4 | * https://developer.mozilla.org/en-US/docs/Web/CSS/padding 5 | */ 6 | export const padding: ConversionFunction = (value) => { 7 | const [top, right = top, bottom = top, left = right] = value.nodes; 8 | 9 | return [ 10 | { prop: 'padding-top', value: top.toString() }, 11 | { prop: 'padding-right', value: right.toString() }, 12 | { prop: 'padding-bottom', value: bottom.toString() }, 13 | { prop: 'padding-left', value: left.toString() }, 14 | ]; 15 | }; 16 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/place-items.ts: -------------------------------------------------------------------------------- 1 | import type { ConversionFunction } from './types'; 2 | 3 | /** 4 | * https://developer.mozilla.org/en-US/docs/Web/CSS/place-items 5 | */ 6 | export const placeItems: ConversionFunction = (value) => { 7 | const [alignItems, justifyItems = alignItems] = value.nodes; 8 | 9 | return [ 10 | { prop: 'align-items', value: alignItems.toString() }, 11 | { prop: 'justify-items', value: justifyItems.toString() }, 12 | ]; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/place-self.ts: -------------------------------------------------------------------------------- 1 | import type { ConversionFunction } from './types'; 2 | 3 | /** 4 | * https://developer.mozilla.org/en-US/docs/Web/CSS/place-self 5 | */ 6 | export const placeSelf: ConversionFunction = (value) => { 7 | const [alignSelf, justifySelf = alignSelf] = value.nodes; 8 | 9 | return [ 10 | { prop: 'align-self', value: alignSelf.toString() }, 11 | { prop: 'justify-self', value: justifySelf.toString() }, 12 | ]; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/css/src/plugins/expand-shorthands/types.ts: -------------------------------------------------------------------------------- 1 | import type { Root as ValuesRoot } from 'postcss-values-parser'; 2 | 3 | export type ConversionFunction = (value: ValuesRoot) => { prop?: string; value: string | number }[]; 4 | -------------------------------------------------------------------------------- /packages/css/src/plugins/extract-stylesheets.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'postcss'; 2 | 3 | /** 4 | * PostCSS plugin which will callback when traversing through each root declaration. 5 | */ 6 | export const extractStyleSheets = (opts?: { callback: (sheet: string) => void }): Plugin => { 7 | return { 8 | postcssPlugin: 'extract-style-sheets', 9 | OnceExit(root) { 10 | root.each((node) => { 11 | opts?.callback(node.toString()); 12 | }); 13 | }, 14 | }; 15 | }; 16 | 17 | export const postcss = true; 18 | -------------------------------------------------------------------------------- /packages/css/src/plugins/normalize-current-color.ts: -------------------------------------------------------------------------------- 1 | import type { Plugin } from 'postcss'; 2 | 3 | /** 4 | * Will normalize "currentcolor" and "current-color" to "currentColor". 5 | */ 6 | export const normalizeCurrentColor = (): Plugin => { 7 | return { 8 | postcssPlugin: 'normalize-current-color', 9 | Declaration(declaration) { 10 | const lowerValue = declaration.value.toLowerCase(); 11 | if (lowerValue === 'currentcolor' || lowerValue === 'current-color') { 12 | declaration.value = 'currentColor'; 13 | } 14 | }, 15 | }; 16 | }; 17 | 18 | export const postcss = true; 19 | -------------------------------------------------------------------------------- /packages/css/src/utils/style-ordering.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Ordered style buckets using the long pseudo-selector. 3 | * 4 | * If changed, make sure that it aligns with the definition in `packages/react/src/runtime/sheet.ts`. 5 | */ 6 | export const styleOrder: readonly string[] = [ 7 | ':link', 8 | ':visited', 9 | ':focus-within', 10 | ':focus', 11 | ':focus-visible', 12 | ':hover', 13 | ':active', 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/css/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.options.json", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "outDir": "dist" 6 | }, 7 | "references": [{ "path": "../utils" }] 8 | } 9 | -------------------------------------------------------------------------------- /packages/css/types/cssnano-preset-default.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'cssnano-preset-default'; 2 | -------------------------------------------------------------------------------- /packages/css/types/postcss-normalize-whitespace.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'postcss-normalize-whitespace' { 2 | import type { Plugin } from 'postcss'; 3 | 4 | const Export: () => Plugin; 5 | 6 | export default Export; 7 | } 8 | -------------------------------------------------------------------------------- /packages/css/types/postcss-selector-parser.d.ts: -------------------------------------------------------------------------------- 1 | // TODO: Remove this file once https://github.com/postcss/postcss-selector-parser/pull/224 gets merged 2 | 3 | import selectorParser from 'postcss-selector-parser'; 4 | 5 | declare module 'postcss-selector-parser' { 6 | function nesting(opts?: selectorParser.NodeOptions): selectorParser.Nesting; 7 | 8 | interface Container { 9 | reduce( 10 | callback: ( 11 | previousValue: T, 12 | currentValue: selectorParser.Node, 13 | currentIndex: number, 14 | array: readonly selectorParser.Node[] 15 | ) => T, 16 | initialValue: T 17 | ): T; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/eslint-plugin/src/rules/no-js-xcss/README.md: -------------------------------------------------------------------------------- 1 | # `no-js-xcss` 2 | 3 | Disallows using xcss prop inside JavaScript files. 4 | 5 | Components that use xcss prop have explicitly declared what styles via the type system they should and should not accept, consumers must adhere to this API. Without TypeScript it's impossible to ensure this is met. 6 | 7 | 👎 Examples of **incorrect** code for this rule: 8 | 9 | ```js 10 | // my-component.jsx 11 |