diff --git a/.cursor/rules/design.mdc b/.cursor/rules/design.mdc index 859c4e0d7505..c5d7fc29e8d9 100644 --- a/.cursor/rules/design.mdc +++ b/.cursor/rules/design.mdc @@ -1,6 +1,6 @@ --- description: Design system and UI consistency guidelines for Label Studio -globs: **/*.tsx,**/*.jsx,**/*.scss,**/*.css +globs: **/*.tsx,**/*.jsx,**/*.css alwaysApply: false --- @@ -51,7 +51,7 @@ This rule provides guidance for creating user interfaces consistent with the Hum ## Design Tokens -**Location**: `web/libs/ui/src/tokens/tokens.scss` +**Location**: `web/libs/ui/src/tokens/tokens.prefix.css` **Always Use Semantic Tokens**: @@ -143,9 +143,9 @@ import { cn } from '@humansignal/core';
``` -**SCSS Modules** (co-located `.module.scss`): -```scss -// Create component tokens → semantic tokens +**CSS Modules** (co-located `.module.css`): +```css +/* Component tokens → semantic tokens */ .component { --component-bg: var(--color-neutral-surface); --component-text: var(--color-neutral-content); @@ -156,7 +156,7 @@ import { cn } from '@humansignal/core'; padding: var(--component-spacing); } -// Variant pattern +/* Variant pattern */ .variant-primary { --component-bg: var(--color-primary-surface); --component-text: var(--color-primary-surface-content); @@ -187,7 +187,7 @@ See `react.mdc` for complete React patterns. ``` button/ button.tsx - button.module.scss + button.module.css button.stories.tsx button.test.tsx index.ts @@ -196,7 +196,7 @@ button/ **Pattern**: ```tsx import { forwardRef } from 'react'; -import styles from './button.module.scss'; +import styles from './button.module.css'; import { cn } from '@humansignal/core'; export interface ButtonProps { @@ -315,7 +315,7 @@ export const Primary: Story = { **Files**: - Components: `web/libs/ui/src/lib/` -- Tokens: `web/libs/ui/src/tokens/tokens.scss` +- Tokens: `web/libs/ui/src/tokens/tokens.prefix.css` - Storybook: `yarn nx storybook storybook` **Related Rules**: diff --git a/.cursor/rules/react.mdc b/.cursor/rules/react.mdc index 6f9885673929..a20634cb8bb9 100644 --- a/.cursor/rules/react.mdc +++ b/.cursor/rules/react.mdc @@ -31,7 +31,7 @@ globs: **/*.jsx,**/*.tsx ``` component-name/ component-name.tsx - component-name.module.scss + component-name.module.css component-name.test.tsx index.ts ``` @@ -64,7 +64,7 @@ globs: **/*.jsx,**/*.tsx ## Tooling - Use Biome for code linting and formatting -- Follow CSS/SCSS linting rules defined in .stylelintrc.json +- Follow CSS linting rules defined in biome.json (css section) - Use TypeScript for type safety - Keep bundle size in check by monitoring imports @@ -104,7 +104,7 @@ globs: **/*.jsx,**/*.tsx ## Code Organization - Use proper file naming conventions which is kebab-case ie. ListItem -> `list-item.tsx` - Prefer one component per folder, but group related components together when necessary, and ensure there is only one component per file. -- Component folders should have a SCSS `.module.scss` with the name of the component kebab-case ie. ListItem -> `list-item.module.scss` +- Component folders should have a CSS `.module.css` with the name of the component kebab-case ie. ListItem -> `list-item.module.css` - Implement proper directory structure - UI components live within `web/libs/ui` - Application components that are shared across applications such as certain page-level blocks live within `web/libs/app-common` diff --git a/.cursor/rules/tailwind.mdc b/.cursor/rules/tailwind.mdc index 275900589fcf..95db159f5611 100644 --- a/.cursor/rules/tailwind.mdc +++ b/.cursor/rules/tailwind.mdc @@ -1,6 +1,6 @@ --- description: Tailwind CSS and UI component best practices for the LabelStudio clientside application -globs: **/*.css,tailwind.config.ts,tailwind.config.js,**/*.scss,**/*.tsx,**/*.jsx +globs: **/*.css,tailwind.config.ts,tailwind.config.js,**/*.tsx,**/*.jsx --- # Tailwind CSS Best Practices @@ -8,16 +8,16 @@ globs: **/*.css,tailwind.config.ts,tailwind.config.js,**/*.scss,**/*.tsx,**/*.js ## Component Styling - Use utility classes over custom CSS - Group related utilities with @apply when needed -- Use custom component styles as a SCSS module only when necessary to improve the readability and maintainability of the components +- Use custom component styles as a CSS module only when necessary to improve the readability and maintainability of the components - Use proper responsive design utilities - Use proper state variants - Keep component styles consistent ## Tokens -- All tokens from Figma are programatically generated and defined in the `web/libs/ui/src/tokens/tokens.scss` file +- All tokens from Figma are programatically generated and defined in the `web/libs/ui/src/tokens/tokens.prefix.css` file - Tokens can be regenerated by exporting from Figma using the plugin `Figma Variable Exporter` and replacing the contents of `web/design-tokens.json` with the newly exported json file then using the `cd web/ && yarn design-tokens` command - When regenerating tokens, ensure that the project root level `make fmt-all` command is run to ensure all the files are linted and formatted properly -- Do not use any of the tokens not defined through the Figma Variable Exporter plugin and established in the `web/libs/ui/src/tokens/tokens.scss` file +- Do not use any of the tokens not defined through the Figma Variable Exporter plugin and established in the `web/libs/ui/src/tokens/tokens.prefix.css` file - Do not use any of the default tailwind css classes, only use the ones defined through the `web/libs/ui/src/tokens/tokens.js` file ## Layout diff --git a/.github/workflows/cicd_pipeline.yml b/.github/workflows/cicd_pipeline.yml index 35baa85d8290..bdb76b64fc71 100644 --- a/.github/workflows/cicd_pipeline.yml +++ b/.github/workflows/cicd_pipeline.yml @@ -140,15 +140,6 @@ jobs: with: head_sha: ${{ github.event.pull_request.head.sha || github.event.after }} - stylelint: - name: "Linter" - needs: - - changed_files - if: needs.changed_files.outputs.frontend == 'true' - uses: ./.github/workflows/stylelint.yml - with: - head_sha: ${{ github.event.pull_request.head.sha || github.event.after }} - build-frontend-docs: name: "Build" needs: @@ -509,7 +500,6 @@ jobs: - bandit - ruff - biome - - stylelint - pytest - migrations - build-docker @@ -521,7 +511,7 @@ jobs: - name: Decide whether the needed jobs succeeded or failed uses: re-actors/alls-green@release/v1 with: - allowed-skips: gitleaks, bandit, ruff, biome, stylelint, pytest, migrations, conda-test, build-docker, tests-yarn-unit, tests-yarn-lsf, cursor-review + allowed-skips: gitleaks, bandit, ruff, biome, pytest, migrations, conda-test, build-docker, tests-yarn-unit, tests-yarn-lsf, cursor-review allowed-failures: | [ "gitleaks", diff --git a/.github/workflows/cicd_pipeline_develop.yml b/.github/workflows/cicd_pipeline_develop.yml index a479a0e0883a..0cc96923ef4d 100644 --- a/.github/workflows/cicd_pipeline_develop.yml +++ b/.github/workflows/cicd_pipeline_develop.yml @@ -35,12 +35,6 @@ jobs: with: head_sha: ${{ github.event.pull_request.head.sha || github.event.after }} - stylelint: - name: "Linter" - uses: ./.github/workflows/stylelint.yml - with: - head_sha: ${{ github.event.pull_request.head.sha || github.event.after }} - build-docker: name: "Build" permissions: @@ -122,7 +116,6 @@ jobs: - bandit - ruff - biome - - stylelint - pytest - migrations - build-docker @@ -133,5 +126,5 @@ jobs: - name: Decide whether the needed jobs succeeded or failed uses: re-actors/alls-green@release/v1 with: - allowed-skips: gitleaks, bandit, ruff, biome, stylelint, pytest, migrations, conda-test, build-docker, tests-yarn-unit, tests-yarn-lsf + allowed-skips: gitleaks, bandit, ruff, biome, pytest, migrations, conda-test, build-docker, tests-yarn-unit, tests-yarn-lsf jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/stylelint.yml b/.github/workflows/stylelint.yml deleted file mode 100644 index f7f0c6cfba5e..000000000000 --- a/.github/workflows/stylelint.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: "stylelint" - -on: - workflow_call: - inputs: - head_sha: - required: true - type: string - -env: - NODE: "22" - FRONTEND_MONOREPO_DIR: "web" - -jobs: - main: - name: "stylelint" - runs-on: ubuntu-latest - timeout-minutes: 20 - steps: - - uses: hmarr/debug-action@v3.0.0 - - - name: Checkout - uses: actions/checkout@v6 - with: - ref: ${{ inputs.head_sha }} - - - name: Setup frontend environment - uses: ./.github/actions/setup-frontend-environment - with: - node-version: "${{ env.NODE }}" - directory: "${{ env.FRONTEND_MONOREPO_DIR }}" - - - name: Run stylelint - working-directory: ${{ env.FRONTEND_MONOREPO_DIR }} - run: | - yarn stylelint "**/*.scss" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b3f897048ab0..07bd753beeaf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,9 +17,3 @@ repos: language: system pass_filenames: false files: ^web/.* - - id: stylelint - name: stylelint - entry: bash -c 'cd web && npx stylelint **/*.scss --fix' - language: node - types: [ scss ] - files: ^.*\.scss$ diff --git a/.pre-commit-dev.yaml b/.pre-commit-dev.yaml index 17fbc116a4b7..63560f34e34e 100644 --- a/.pre-commit-dev.yaml +++ b/.pre-commit-dev.yaml @@ -16,9 +16,3 @@ repos: language: system pass_filenames: false files: ^web/.* - - id: stylelint - name: stylelint - entry: bash -c 'cd web && npx stylelint **/*.scss --fix' - language: node - types: [ scss ] - files: ^.*\.scss$ diff --git a/DESIGN.md b/DESIGN.md index 540e50ba7c63..727a4c1552fc 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -97,7 +97,7 @@ For domain terminology (Project, Task, Annotation, etc.), see `terminology.mdc` ## Design Tokens -**Location**: `web/libs/ui/src/tokens/tokens.scss` +**Location**: `web/libs/ui/src/tokens/tokens.prefix.css` **Always use semantic tokens** instead of numeric values: @@ -118,27 +118,27 @@ For domain terminology (Project, Task, Annotation, etc.), see `terminology.mdc` - **Accent**: Decorative colors (grape, blueberry, kale, kiwi, mango, canteloupe, persimmon, plum, fig, sand) **Color Token Structure**: -```scss -// Surface colors (for backgrounds of interactive elements) +```css +/* Surface colors (for backgrounds of interactive elements) */ --color-primary-surface --color-primary-surface-hover --color-primary-surface-active -// Content colors (for text) +/* Content colors (for text) */ --color-neutral-content --color-neutral-content-subtle --color-neutral-content-subtler ---color-neutral-content-subtlest // Use for disabled text +--color-neutral-content-subtlest /* Use for disabled text */ -// Background colors (for page/container backgrounds) +/* Background colors (for page/container backgrounds) */ --color-neutral-background --color-primary-background -// Border colors +/* Border colors */ --color-neutral-border --color-primary-border-subtle -// Icon colors +/* Icon colors */ --color-primary-icon --color-negative-icon ``` @@ -225,12 +225,12 @@ See `tailwind.mdc` for complete guidelines. **Responsive**: `sm:`, `md:`, `lg:` utilities -### SCSS Modules +### CSS Modules -Co-locate `.module.scss` with components. +Co-locate `.module.css` with components. **Component Tokens Pattern**: -```scss +```css .base { --background-color: var(--color-primary-surface); --text-color: var(--color-primary-surface-content); @@ -244,7 +244,7 @@ Co-locate `.module.scss` with components. } ``` -**Tailwind in SCSS**: `@apply flex items-center gap-tight;` +**Tailwind in CSS**: `@apply flex items-center gap-tight;` **Canvas Elements**: @@ -265,7 +265,7 @@ See `react.mdc` for complete React patterns. - `@humansignal/ui` components: kebab-case (`button.tsx`, `empty-state.tsx`) - Application components: PascalCase acceptable (`DataManager.tsx`) -- Co-locate: `.tsx`, `.module.scss`, `.stories.tsx`, `.test.tsx` +- Co-locate: `.tsx`, `.module.css`, `.stories.tsx`, `.test.tsx` - Every component must have Storybook stories --- @@ -338,7 +338,7 @@ Before creating new components, check `@humansignal/ui` and Storybook. Never hard-code values. Use semantic tokens: `text-primary-content p-tight text-body-medium` Create component tokens: -```scss +```css .component { --component-bg: var(--color-neutral-surface); background: var(--component-bg); @@ -393,7 +393,7 @@ Exceptions: draft content, preferences, immediate toggles. ### Key Files - Components: `web/libs/ui/src/lib/` -- Tokens: `web/libs/ui/src/tokens/tokens.scss` +- Tokens: `web/libs/ui/src/tokens/tokens.prefix.css` - Icons: `@humansignal/icons` - Storybook: `yarn nx storybook storybook` diff --git a/web/.gitignore b/web/.gitignore index 3b58e691ba62..72abc6f4997c 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -26,7 +26,6 @@ dist !.vscode/extensions.json # misc -/.sass-cache /connect.lock /coverage /libpeerconnection.log @@ -121,4 +120,3 @@ libs/datamanager/.cache dist .cursor/rules/nx-rules.mdc .github/instructions/nx.instructions.md -.scss-snapshots/ diff --git a/web/.stylelintignore b/web/.stylelintignore deleted file mode 100644 index 463f030af435..000000000000 --- a/web/.stylelintignore +++ /dev/null @@ -1 +0,0 @@ -libs/editor/src/assets/styles/antd-no-reset.css diff --git a/web/.stylelintrc.json b/web/.stylelintrc.json deleted file mode 100644 index 78b2c859f1b3..000000000000 --- a/web/.stylelintrc.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "extends": ["stylelint-config-tailwindcss/scss", "stylelint-config-standard-scss"], - "rules": { - "selector-class-pattern": null, - "custom-property-pattern": null, - "no-descending-specificity": null, - "scss/no-global-function-names": null, - "scss/function-no-unknown": null, - "selector-pseudo-class-no-unknown": [ - true, - { - "ignorePseudoClasses": ["global"] - } - ], - "scss/at-rule-no-unknown": [ - true, - { - "ignoreAtRules": ["position-try"] - } - ], - "property-no-unknown": [ - true, - { - "ignoreProperties": ["position-try-fallbacks", "anchor-name", "position-anchor", "position-visibility"] - } - ], - "function-no-unknown": [ - true, - { - "ignoreFunctions": ["anchor-size", "anchor", "map-get", "unquote"] - } - ], - "declaration-block-no-redundant-longhand-properties": [ - true, - { - "ignoreShorthands": ["inset"] - } - ], - "comment-empty-line-before": [ - "always", - { - "except": ["first-nested"], - "ignore": ["stylelint-commands", "after-comment"] - } - ], - "declaration-empty-line-before": [ - "always", - { - "except": ["first-nested", "after-comment", "after-declaration"], - "ignore": ["inside-single-line-block"] - } - ] - } -} diff --git a/web/README.md b/web/README.md index 1e9405df4acf..b695cff14195 100644 --- a/web/README.md +++ b/web/README.md @@ -65,7 +65,7 @@ To start the development server with HMR: - `yarn test:integration`: Run integration tests for all apps and libraries. - `yarn test:unit`: Run unit tests for all apps and libraries. - `yarn lint`: Run biome linter across all files with autofix. - - `yarn lint-scss`: Run stylelint linter across all scss files with autofix. + - `yarn lint-css`: Run Biome CSS linter across all CSS files with autofix. ### Git Hooks This project uses python `pre-commit` hooks to ensure code quality. To install the hooks, run `make configure-hooks` in the project root directory. diff --git a/web/apps/labelstudio/src/app/App.jsx b/web/apps/labelstudio/src/app/App.jsx index 1c56460beeb1..f5e88227ef2c 100644 --- a/web/apps/labelstudio/src/app/App.jsx +++ b/web/apps/labelstudio/src/app/App.jsx @@ -23,7 +23,7 @@ import { queryClient } from "@humansignal/core/lib/utils/query-client"; import { RootPage } from "./RootPage"; import { ff } from "@humansignal/core"; import "@humansignal/ui/src/tailwind.css"; -import "./App.scss"; +import "./App.prefix.css"; import { AuthProvider } from "@humansignal/core/providers/AuthProvider"; const baseURL = new URL(APP_SETTINGS.hostname || location.origin); diff --git a/web/apps/labelstudio/src/app/App.scss b/web/apps/labelstudio/src/app/App.prefix.css similarity index 96% rename from web/apps/labelstudio/src/app/App.scss rename to web/apps/labelstudio/src/app/App.prefix.css index e0948eb0360e..3ba587288114 100644 --- a/web/apps/labelstudio/src/app/App.scss +++ b/web/apps/labelstudio/src/app/App.prefix.css @@ -1,4 +1,4 @@ -@import '../themes/default/variables'; +@import '../themes/default/variables.prefix.css'; body { --header-height: 48px; diff --git a/web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.jsx b/web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.jsx index 77612fabf40d..e82ad4f72a21 100644 --- a/web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.jsx +++ b/web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.jsx @@ -6,7 +6,7 @@ import { cn } from "../../utils/bem"; import { absoluteURL } from "../../utils/helpers"; import { Dropdown } from "@humansignal/ui"; import { Menu } from "../Menu/Menu"; -import "./Breadcrumbs.scss"; +import "./Breadcrumbs.prefix.css"; export const Breadcrumbs = () => { const config = useConfig(); diff --git a/web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.scss b/web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.scss rename to web/apps/labelstudio/src/components/Breadcrumbs/Breadcrumbs.prefix.css diff --git a/web/apps/labelstudio/src/components/Card/Card.jsx b/web/apps/labelstudio/src/components/Card/Card.jsx index ec85c88a4459..6a5d73b1f410 100644 --- a/web/apps/labelstudio/src/components/Card/Card.jsx +++ b/web/apps/labelstudio/src/components/Card/Card.jsx @@ -1,6 +1,6 @@ import { cn } from "../../utils/bem"; import { Tooltip } from "@humansignal/ui"; -import "./Card.scss"; +import "./Card.prefix.css"; export const Card = ({ header, extra, children, style }) => { const rootClass = cn("card"); diff --git a/web/apps/labelstudio/src/components/Card/Card.scss b/web/apps/labelstudio/src/components/Card/Card.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Card/Card.scss rename to web/apps/labelstudio/src/components/Card/Card.prefix.css diff --git a/web/apps/labelstudio/src/components/Columns/Columns.jsx b/web/apps/labelstudio/src/components/Columns/Columns.jsx index 23a4424a8c6d..2aa3afe1b90c 100644 --- a/web/apps/labelstudio/src/components/Columns/Columns.jsx +++ b/web/apps/labelstudio/src/components/Columns/Columns.jsx @@ -1,6 +1,6 @@ import React from "react"; import { cn } from "../../utils/bem"; -import "./Columns.scss"; +import "./Columns.prefix.css"; export const Columns = ({ children, count, size, gap }) => { /**@type {import('react').RefObject} */ diff --git a/web/apps/labelstudio/src/components/Columns/Columns.scss b/web/apps/labelstudio/src/components/Columns/Columns.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Columns/Columns.scss rename to web/apps/labelstudio/src/components/Columns/Columns.prefix.css diff --git a/web/apps/labelstudio/src/components/DescriptionList/DescriptionList.jsx b/web/apps/labelstudio/src/components/DescriptionList/DescriptionList.jsx index dac077ca249f..6938f0f273b2 100644 --- a/web/apps/labelstudio/src/components/DescriptionList/DescriptionList.jsx +++ b/web/apps/labelstudio/src/components/DescriptionList/DescriptionList.jsx @@ -1,5 +1,5 @@ import { cn } from "../../utils/bem"; -import "./DescriptionList.scss"; +import "./DescriptionList.prefix.css"; import { IconInfoOutline } from "@humansignal/icons"; import { Tooltip } from "@humansignal/ui"; diff --git a/web/apps/labelstudio/src/components/DescriptionList/DescriptionList.scss b/web/apps/labelstudio/src/components/DescriptionList/DescriptionList.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/DescriptionList/DescriptionList.scss rename to web/apps/labelstudio/src/components/DescriptionList/DescriptionList.prefix.css diff --git a/web/apps/labelstudio/src/components/EmptyState/EmptyState.jsx b/web/apps/labelstudio/src/components/EmptyState/EmptyState.jsx index 2ee94af79e78..69c8bc5138da 100644 --- a/web/apps/labelstudio/src/components/EmptyState/EmptyState.jsx +++ b/web/apps/labelstudio/src/components/EmptyState/EmptyState.jsx @@ -1,5 +1,5 @@ import { cn } from "../../utils/bem"; -import "./EmptyState.scss"; +import "./EmptyState.prefix.css"; export const EmptyState = ({ icon, title, description, action, footer }) => { return ( diff --git a/web/apps/labelstudio/src/components/EmptyState/EmptyState.scss b/web/apps/labelstudio/src/components/EmptyState/EmptyState.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/EmptyState/EmptyState.scss rename to web/apps/labelstudio/src/components/EmptyState/EmptyState.prefix.css diff --git a/web/apps/labelstudio/src/components/Error/Error.jsx b/web/apps/labelstudio/src/components/Error/Error.jsx index 90c32efb6013..3fc387c54df0 100644 --- a/web/apps/labelstudio/src/components/Error/Error.jsx +++ b/web/apps/labelstudio/src/components/Error/Error.jsx @@ -5,7 +5,7 @@ import { cn } from "../../utils/bem"; import { absoluteURL, copyText } from "../../utils/helpers"; import { Button } from "@humansignal/ui"; import { Space } from "../Space/Space"; -import "./Error.scss"; +import "./Error.prefix.css"; const SLACK_INVITE_URL = "https://slack.labelstud.io/?source=product-error-msg"; diff --git a/web/apps/labelstudio/src/components/Error/Error.scss b/web/apps/labelstudio/src/components/Error/Error.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Error/Error.scss rename to web/apps/labelstudio/src/components/Error/Error.prefix.css diff --git a/web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.jsx b/web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.jsx index a374aec79491..35a3e9878976 100644 --- a/web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.jsx +++ b/web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.jsx @@ -3,7 +3,7 @@ import { cn } from "../../../../utils/bem"; import { Oneof } from "../../../Oneof/Oneof"; import { FormField } from "../../FormField"; import { default as Label } from "../Label/Label"; -import "./Counter.scss"; +import "./Counter.prefix.css"; import { IconMinus, IconPlus } from "@humansignal/icons"; const allowedKeys = ["ArrowUp", "ArrowDown", "Backspace", "Delete", /[0-9]/]; diff --git a/web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.scss b/web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.scss rename to web/apps/labelstudio/src/components/Form/Elements/Counter/Counter.prefix.css diff --git a/web/apps/labelstudio/src/components/Form/Elements/Input/Input.jsx b/web/apps/labelstudio/src/components/Form/Elements/Input/Input.jsx index a20bf68191cc..8053f23bd834 100644 --- a/web/apps/labelstudio/src/components/Form/Elements/Input/Input.jsx +++ b/web/apps/labelstudio/src/components/Form/Elements/Input/Input.jsx @@ -1,7 +1,7 @@ import { cn } from "../../../../utils/bem"; import { FormField } from "../../FormField"; import { default as Label } from "../Label/Label"; -import "./Input.scss"; +import "./Input.prefix.css"; const Input = ({ label, diff --git a/web/apps/labelstudio/src/components/Form/Elements/Input/Input.scss b/web/apps/labelstudio/src/components/Form/Elements/Input/Input.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Form/Elements/Input/Input.scss rename to web/apps/labelstudio/src/components/Form/Elements/Input/Input.prefix.css diff --git a/web/apps/labelstudio/src/components/Form/Elements/Label/Label.jsx b/web/apps/labelstudio/src/components/Form/Elements/Label/Label.jsx index 975ac2ee4898..172d9a9b2c47 100644 --- a/web/apps/labelstudio/src/components/Form/Elements/Label/Label.jsx +++ b/web/apps/labelstudio/src/components/Form/Elements/Label/Label.jsx @@ -2,7 +2,7 @@ import { createElement } from "react"; import { IconInfoOutline } from "@humansignal/icons"; import { Tooltip } from "@humansignal/ui"; import { cn } from "../../../../utils/bem"; -import "./Label.scss"; +import "./Label.prefix.css"; import { clsx } from "clsx"; /** @deprecated - needs to be replaced with @humansignal/ui Label - visualizes differently currently */ const Label = ({ diff --git a/web/apps/labelstudio/src/components/Form/Elements/Label/Label.scss b/web/apps/labelstudio/src/components/Form/Elements/Label/Label.prefix.css similarity index 94% rename from web/apps/labelstudio/src/components/Form/Elements/Label/Label.scss rename to web/apps/labelstudio/src/components/Form/Elements/Label/Label.prefix.css index 3f62e65dcfcf..3c06e3e6e319 100644 --- a/web/apps/labelstudio/src/components/Form/Elements/Label/Label.scss +++ b/web/apps/labelstudio/src/components/Form/Elements/Label/Label.prefix.css @@ -14,7 +14,7 @@ color: var(--color-neutral-content-subtler); font-weight: 400; line-height: 140%; - white-space: pre-line; // enable \n support in description texts + white-space: pre-line; /* enable \n support in description texts */ & a { color: var(--color-primary-content); @@ -32,7 +32,7 @@ color: var(--color-neutral-content-subtler); font-weight: 400; line-height: 140%; - white-space: pre-line; // enable \n support in footer texts + white-space: pre-line; /* enable \n support in footer texts */ margin-top: var(--spacing-tightest); & a { @@ -54,7 +54,7 @@ display: flex; align-items: center; gap: 4px; - white-space: pre-line; // enable \n support in label texts + white-space: pre-line; /* enable \n support in label texts */ margin-bottom: var(--spacing-tightest); } diff --git a/web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.jsx b/web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.jsx index 83bafcb5f0f0..433e4b990cf0 100644 --- a/web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.jsx +++ b/web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.jsx @@ -2,7 +2,7 @@ import { createContext, useCallback, useContext, useEffect, useState } from "rea import { Label } from ".."; import { cn } from "../../../../utils/bem"; import { FormField } from "../../FormField"; -import "./RadioGroup.scss"; +import "./RadioGroup.prefix.css"; const RadioContext = createContext(); diff --git a/web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.scss b/web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.scss rename to web/apps/labelstudio/src/components/Form/Elements/RadioGroup/RadioGroup.prefix.css diff --git a/web/apps/labelstudio/src/components/Form/Form.jsx b/web/apps/labelstudio/src/components/Form/Form.jsx index 76d8e5c2829a..e5ce7907f523 100644 --- a/web/apps/labelstudio/src/components/Form/Form.jsx +++ b/web/apps/labelstudio/src/components/Form/Form.jsx @@ -9,7 +9,7 @@ import { Button } from "@humansignal/ui"; import { Oneof } from "../Oneof/Oneof"; import { Space } from "../Space/Space"; import { Counter, Input, Select, Toggle } from "./Elements"; -import "./Form.scss"; +import "./Form.prefix.css"; import { FormContext, FormResponseContext, diff --git a/web/apps/labelstudio/src/components/Form/Form.scss b/web/apps/labelstudio/src/components/Form/Form.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Form/Form.scss rename to web/apps/labelstudio/src/components/Form/Form.prefix.css diff --git a/web/apps/labelstudio/src/components/Form/Validation/Validation.scss b/web/apps/labelstudio/src/components/Form/Validation/Validation.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Form/Validation/Validation.scss rename to web/apps/labelstudio/src/components/Form/Validation/Validation.prefix.css diff --git a/web/apps/labelstudio/src/components/Form/Validation/Validators.js b/web/apps/labelstudio/src/components/Form/Validation/Validators.js index dd120a405ae0..ac89a54368fe 100644 --- a/web/apps/labelstudio/src/components/Form/Validation/Validators.js +++ b/web/apps/labelstudio/src/components/Form/Validation/Validators.js @@ -1,5 +1,5 @@ import { isDefined, isEmptyString } from "../../../utils/helpers"; -import "./Validation.scss"; +import "./Validation.prefix.css"; export const required = (fieldName, value) => { if (!isDefined(value) || isEmptyString(value)) { diff --git a/web/apps/labelstudio/src/components/Hamburger/Hamburger.jsx b/web/apps/labelstudio/src/components/Hamburger/Hamburger.jsx index f115dac79349..79fc6abd6715 100644 --- a/web/apps/labelstudio/src/components/Hamburger/Hamburger.jsx +++ b/web/apps/labelstudio/src/components/Hamburger/Hamburger.jsx @@ -1,5 +1,5 @@ import { cn } from "../../utils/bem"; -import "./Hamburger.scss"; +import "./Hamburger.prefix.css"; export const Hamburger = ({ opened, animated = true }) => { const root = cn("hamburger"); diff --git a/web/apps/labelstudio/src/components/Hamburger/Hamburger.scss b/web/apps/labelstudio/src/components/Hamburger/Hamburger.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Hamburger/Hamburger.scss rename to web/apps/labelstudio/src/components/Hamburger/Hamburger.prefix.css diff --git a/web/apps/labelstudio/src/components/HeidiTips/HeidiTip.scss b/web/apps/labelstudio/src/components/HeidiTips/HeidiTip.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/HeidiTips/HeidiTip.scss rename to web/apps/labelstudio/src/components/HeidiTips/HeidiTip.prefix.css diff --git a/web/apps/labelstudio/src/components/HeidiTips/HeidiTip.tsx b/web/apps/labelstudio/src/components/HeidiTips/HeidiTip.tsx index ae41de1623fe..6035a087ed79 100644 --- a/web/apps/labelstudio/src/components/HeidiTips/HeidiTip.tsx +++ b/web/apps/labelstudio/src/components/HeidiTips/HeidiTip.tsx @@ -1,7 +1,7 @@ import { type FC, type MouseEvent, useCallback, useMemo } from "react"; import { cn } from "../../utils/bem"; import { IconCross } from "@humansignal/icons"; -import "./HeidiTip.scss"; +import "./HeidiTip.prefix.css"; import { Button } from "@humansignal/ui"; import { HeidiSpeaking } from "../../assets/images"; import type { HeidiTipProps, Tip } from "./types"; diff --git a/web/apps/labelstudio/src/components/Menu/Menu.jsx b/web/apps/labelstudio/src/components/Menu/Menu.jsx index 3899efad7227..3b21eb3d2150 100644 --- a/web/apps/labelstudio/src/components/Menu/Menu.jsx +++ b/web/apps/labelstudio/src/components/Menu/Menu.jsx @@ -1,7 +1,7 @@ import { forwardRef, useCallback, useMemo } from "react"; import { cn } from "../../utils/bem"; import { useDropdown } from "@humansignal/ui"; -import "./Menu.scss"; +import "./Menu.prefix.css"; import { MenuContext } from "./MenuContext"; import { MenuItem } from "./MenuItem"; diff --git a/web/apps/labelstudio/src/components/Menu/Menu.scss b/web/apps/labelstudio/src/components/Menu/Menu.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Menu/Menu.scss rename to web/apps/labelstudio/src/components/Menu/Menu.prefix.css diff --git a/web/apps/labelstudio/src/components/Menubar/MenuContent.scss b/web/apps/labelstudio/src/components/Menubar/MenuContent.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Menubar/MenuContent.scss rename to web/apps/labelstudio/src/components/Menubar/MenuContent.prefix.css diff --git a/web/apps/labelstudio/src/components/Menubar/MenuSidebar.scss b/web/apps/labelstudio/src/components/Menubar/MenuSidebar.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Menubar/MenuSidebar.scss rename to web/apps/labelstudio/src/components/Menubar/MenuSidebar.prefix.css diff --git a/web/apps/labelstudio/src/components/Menubar/Menubar.jsx b/web/apps/labelstudio/src/components/Menubar/Menubar.jsx index 3dafe0e62278..0ae285fd16a8 100644 --- a/web/apps/labelstudio/src/components/Menubar/Menubar.jsx +++ b/web/apps/labelstudio/src/components/Menubar/Menubar.jsx @@ -25,9 +25,9 @@ import { Dropdown } from "@humansignal/ui"; import { Hamburger } from "../Hamburger/Hamburger"; import { Menu } from "../Menu/Menu"; import { VersionNotifier, VersionProvider } from "../VersionNotifier/VersionNotifier"; -import "./Menubar.scss"; -import "./MenuContent.scss"; -import "./MenuSidebar.scss"; +import "./Menubar.prefix.css"; +import "./MenuContent.prefix.css"; +import "./MenuSidebar.prefix.css"; import { FF_HOMEPAGE } from "../../utils/feature-flags"; import { pages } from "@humansignal/app-common"; import { isFF } from "../../utils/feature-flags"; diff --git a/web/apps/labelstudio/src/components/Menubar/Menubar.scss b/web/apps/labelstudio/src/components/Menubar/Menubar.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Menubar/Menubar.scss rename to web/apps/labelstudio/src/components/Menubar/Menubar.prefix.css diff --git a/web/apps/labelstudio/src/components/Pagination/Pagination.scss b/web/apps/labelstudio/src/components/Pagination/Pagination.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Pagination/Pagination.scss rename to web/apps/labelstudio/src/components/Pagination/Pagination.prefix.css diff --git a/web/apps/labelstudio/src/components/Pagination/Pagination.tsx b/web/apps/labelstudio/src/components/Pagination/Pagination.tsx index 1eead924339e..2190dbd2677e 100644 --- a/web/apps/labelstudio/src/components/Pagination/Pagination.tsx +++ b/web/apps/labelstudio/src/components/Pagination/Pagination.tsx @@ -12,7 +12,7 @@ import { cn } from "../../utils/bem"; import { clamp, isDefined } from "../../utils/helpers"; import { useValueTracker } from "../Form/Utils"; import { Select } from "@humansignal/ui"; -import "./Pagination.scss"; +import "./Pagination.prefix.css"; import { useUpdateEffect } from "../../utils/hooks"; interface PaginationProps { diff --git a/web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.jsx b/web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.jsx index ff80b50b8a27..49c5ec305059 100644 --- a/web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.jsx +++ b/web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.jsx @@ -1,6 +1,6 @@ import { cn } from "../../utils/bem"; import { Menu } from "../Menu/Menu"; -import "./SidebarMenu.scss"; +import "./SidebarMenu.prefix.css"; export const SidebarMenu = ({ children, menu, path, menuItems }) => { const rootClass = cn("sidebar-menu"); diff --git a/web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.scss b/web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.scss rename to web/apps/labelstudio/src/components/SidebarMenu/SidebarMenu.prefix.css diff --git a/web/apps/labelstudio/src/components/Space/Space.jsx b/web/apps/labelstudio/src/components/Space/Space.jsx index 30b0378f4bc9..be9ad78a6320 100644 --- a/web/apps/labelstudio/src/components/Space/Space.jsx +++ b/web/apps/labelstudio/src/components/Space/Space.jsx @@ -1,5 +1,5 @@ import { cn } from "../../utils/bem"; -import "./Space.scss"; +import "./Space.prefix.css"; export const Space = ({ direction = "horizontal", size, className, style, children, spread, stretch, align }) => { return ( diff --git a/web/apps/labelstudio/src/components/Space/Space.scss b/web/apps/labelstudio/src/components/Space/Space.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Space/Space.scss rename to web/apps/labelstudio/src/components/Space/Space.prefix.css diff --git a/web/apps/labelstudio/src/components/Spinner/Spinner.jsx b/web/apps/labelstudio/src/components/Spinner/Spinner.jsx index 08c0bd1d90c0..4755e9e40730 100644 --- a/web/apps/labelstudio/src/components/Spinner/Spinner.jsx +++ b/web/apps/labelstudio/src/components/Spinner/Spinner.jsx @@ -1,5 +1,5 @@ import { cn } from "../../utils/bem"; -import "./Spinner.scss"; +import "./Spinner.prefix.css"; export const Spinner = ({ className, style, size = 32, stopped = false }) => { const rootClass = cn("spinner-ls"); diff --git a/web/apps/labelstudio/src/components/Spinner/Spinner.scss b/web/apps/labelstudio/src/components/Spinner/Spinner.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/Spinner/Spinner.scss rename to web/apps/labelstudio/src/components/Spinner/Spinner.prefix.css diff --git a/web/apps/labelstudio/src/components/ToggleItems/ToggleItems.scss b/web/apps/labelstudio/src/components/ToggleItems/ToggleItems.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/ToggleItems/ToggleItems.scss rename to web/apps/labelstudio/src/components/ToggleItems/ToggleItems.prefix.css diff --git a/web/apps/labelstudio/src/components/ToggleItems/ToggleItems.tsx b/web/apps/labelstudio/src/components/ToggleItems/ToggleItems.tsx index 353002557208..94f80b7f1665 100644 --- a/web/apps/labelstudio/src/components/ToggleItems/ToggleItems.tsx +++ b/web/apps/labelstudio/src/components/ToggleItems/ToggleItems.tsx @@ -1,6 +1,6 @@ import type { CSSProperties } from "react"; import { cn } from "../../utils/bem"; -import "./ToggleItems.scss"; +import "./ToggleItems.prefix.css"; export const ToggleItems = ({ className, diff --git a/web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.jsx b/web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.jsx index 94436ea8b889..47423e7cf388 100644 --- a/web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.jsx +++ b/web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.jsx @@ -3,7 +3,7 @@ import { createContext, useCallback, useContext, useEffect, useReducer } from "r import { Link } from "react-router-dom"; import { useAPI } from "../../providers/ApiProvider"; import { cn } from "../../utils/bem"; -import "./VersionNotifier.scss"; +import "./VersionNotifier.prefix.css"; import { IconBell } from "@humansignal/icons"; const VersionContext = createContext(); diff --git a/web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.scss b/web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.prefix.css similarity index 100% rename from web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.scss rename to web/apps/labelstudio/src/components/VersionNotifier/VersionNotifier.prefix.css diff --git a/web/apps/labelstudio/src/pages/CreateProject/Config/Config.jsx b/web/apps/labelstudio/src/pages/CreateProject/Config/Config.jsx index 3b8f22b6a198..89965ce5f43b 100644 --- a/web/apps/labelstudio/src/pages/CreateProject/Config/Config.jsx +++ b/web/apps/labelstudio/src/pages/CreateProject/Config/Config.jsx @@ -9,7 +9,7 @@ import { cn } from "../../../utils/bem"; import { Palette } from "../../../utils/colors"; import { FF_UNSAVED_CHANGES, isFF } from "../../../utils/feature-flags"; import { colorNames } from "./colors"; -import "./Config.scss"; +import "./Config.prefix.css"; import { Preview } from "./Preview"; import { LARGE_CONFIG_MESSAGE, LARGE_CONFIG_TAG_THRESHOLD, countConfigTags } from "@humansignal/core"; import { DEFAULT_COLUMN, EMPTY_CONFIG, isEmptyConfig, Template } from "./Template"; diff --git a/web/apps/labelstudio/src/pages/CreateProject/Config/Config.scss b/web/apps/labelstudio/src/pages/CreateProject/Config/Config.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/CreateProject/Config/Config.scss rename to web/apps/labelstudio/src/pages/CreateProject/Config/Config.prefix.css diff --git a/web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.module.scss b/web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.module.css similarity index 100% rename from web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.module.scss rename to web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.module.css diff --git a/web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.tsx b/web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.tsx index a8f81796e786..4fecb3d63182 100644 --- a/web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.tsx +++ b/web/apps/labelstudio/src/pages/CreateProject/Config/EditorResizer.tsx @@ -1,7 +1,7 @@ import type React from "react"; import { useCallback, useState } from "react"; import clsx from "clsx"; -import styles from "./EditorResizer.module.scss"; +import styles from "./EditorResizer.module.css"; interface EditorResizerProps { containerRef: React.RefObject; diff --git a/web/apps/labelstudio/src/pages/CreateProject/Config/Preview.jsx b/web/apps/labelstudio/src/pages/CreateProject/Config/Preview.jsx index 5d12a9568033..6853742a84df 100644 --- a/web/apps/labelstudio/src/pages/CreateProject/Config/Preview.jsx +++ b/web/apps/labelstudio/src/pages/CreateProject/Config/Preview.jsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { Spinner } from "../../../components"; import { cn } from "../../../utils/bem"; -import "./Config.scss"; +import "./Config.prefix.css"; import { EMPTY_CONFIG } from "./Template"; import { API_CONFIG } from "../../../config/ApiConfig"; import { useAPI } from "../../../providers/ApiProvider"; diff --git a/web/apps/labelstudio/src/pages/CreateProject/Config/TemplatesList.jsx b/web/apps/labelstudio/src/pages/CreateProject/Config/TemplatesList.jsx index b357ad6ad944..a0a2596d4f3d 100644 --- a/web/apps/labelstudio/src/pages/CreateProject/Config/TemplatesList.jsx +++ b/web/apps/labelstudio/src/pages/CreateProject/Config/TemplatesList.jsx @@ -2,7 +2,7 @@ import React from "react"; import { Spinner } from "../../../components"; import { useAPI } from "../../../providers/ApiProvider"; import { cn } from "../../../utils/bem"; -import "./Config.scss"; +import "./Config.prefix.css"; import { IconInfo } from "@humansignal/icons"; import { Button, EnterpriseBadge } from "@humansignal/ui"; diff --git a/web/apps/labelstudio/src/pages/CreateProject/CreateProject.jsx b/web/apps/labelstudio/src/pages/CreateProject/CreateProject.jsx index 76b9390fab19..63c25465852a 100644 --- a/web/apps/labelstudio/src/pages/CreateProject/CreateProject.jsx +++ b/web/apps/labelstudio/src/pages/CreateProject/CreateProject.jsx @@ -9,7 +9,7 @@ import { HeidiTips } from "../../components/HeidiTips/HeidiTips"; import { useAPI } from "../../providers/ApiProvider"; import { cn } from "../../utils/bem"; import { ConfigPage } from "./Config/Config"; -import "./CreateProject.scss"; +import "./CreateProject.prefix.css"; import { ImportPage } from "./Import/Import"; import { useImportPage } from "./Import/useImportPage"; import { useDraftProject } from "./utils/useDraftProject"; diff --git a/web/apps/labelstudio/src/pages/CreateProject/CreateProject.scss b/web/apps/labelstudio/src/pages/CreateProject/CreateProject.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/CreateProject/CreateProject.scss rename to web/apps/labelstudio/src/pages/CreateProject/CreateProject.prefix.css diff --git a/web/apps/labelstudio/src/pages/CreateProject/Import/Import.jsx b/web/apps/labelstudio/src/pages/CreateProject/Import/Import.jsx index 23c5a10d37dc..0c4753df8647 100644 --- a/web/apps/labelstudio/src/pages/CreateProject/Import/Import.jsx +++ b/web/apps/labelstudio/src/pages/CreateProject/Import/Import.jsx @@ -9,7 +9,7 @@ import { useAPI } from "../../../providers/ApiProvider"; import { cn } from "../../../utils/bem"; import { unique } from "../../../utils/helpers"; import { sampleDatasetAtom } from "../utils/atoms"; -import "./Import.scss"; +import "./Import.prefix.css"; import { Button, CodeBlock, SimpleCard, Spinner, Tooltip, Typography, Badge } from "@humansignal/ui"; import truncate from "truncate-middle"; import samples from "./samples.json"; diff --git a/web/apps/labelstudio/src/pages/CreateProject/Import/Import.scss b/web/apps/labelstudio/src/pages/CreateProject/Import/Import.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/CreateProject/Import/Import.scss rename to web/apps/labelstudio/src/pages/CreateProject/Import/Import.prefix.css diff --git a/web/apps/labelstudio/src/pages/DataManager/DataManager.jsx b/web/apps/labelstudio/src/pages/DataManager/DataManager.jsx index 584333f74208..9b90c920be5b 100644 --- a/web/apps/labelstudio/src/pages/DataManager/DataManager.jsx +++ b/web/apps/labelstudio/src/pages/DataManager/DataManager.jsx @@ -15,7 +15,7 @@ import { ImportModal } from "../CreateProject/Import/ImportModal"; import { ExportPage } from "../ExportPage/ExportPage"; import { APIConfig } from "./api-config"; -import "./DataManager.scss"; +import "./DataManager.prefix.css"; const loadDependencies = () => [import("@humansignal/datamanager"), import("@humansignal/editor")]; diff --git a/web/apps/labelstudio/src/pages/DataManager/DataManager.scss b/web/apps/labelstudio/src/pages/DataManager/DataManager.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/DataManager/DataManager.scss rename to web/apps/labelstudio/src/pages/DataManager/DataManager.prefix.css diff --git a/web/apps/labelstudio/src/pages/ExportPage/ExportPage.jsx b/web/apps/labelstudio/src/pages/ExportPage/ExportPage.jsx index 33f08456fdce..0c3a39bb5a46 100644 --- a/web/apps/labelstudio/src/pages/ExportPage/ExportPage.jsx +++ b/web/apps/labelstudio/src/pages/ExportPage/ExportPage.jsx @@ -16,7 +16,7 @@ import { useAPI } from "../../providers/ApiProvider"; import { useFixedLocation, useParams } from "../../providers/RoutesProvider"; import { cn } from "../../utils/bem"; import { isDefined, copyText } from "../../utils/helpers"; -import "./ExportPage.scss"; +import "./ExportPage.prefix.css"; // Community Edition exports run synchronously in a single HTTP request. // Large exports can exceed typical proxy timeouts, so we warn early and link to alternatives. diff --git a/web/apps/labelstudio/src/pages/ExportPage/ExportPage.scss b/web/apps/labelstudio/src/pages/ExportPage/ExportPage.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/ExportPage/ExportPage.scss rename to web/apps/labelstudio/src/pages/ExportPage/ExportPage.prefix.css diff --git a/web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.scss b/web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.scss rename to web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.prefix.css diff --git a/web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.tsx b/web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.tsx index 5dda4819dd77..5c61ab8b7742 100644 --- a/web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.tsx +++ b/web/apps/labelstudio/src/pages/Organization/Models/@components/EmptyList.tsx @@ -1,7 +1,7 @@ import { Button } from "@humansignal/ui"; import { cn } from "apps/labelstudio/src/utils/bem"; import type { FC } from "react"; -import "./EmptyList.scss"; +import "./EmptyList.prefix.css"; import { HeidiAi } from "apps/labelstudio/src/assets/images"; export const EmptyList: FC = () => { diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleInvitation.scss b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleInvitation.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleInvitation.scss rename to web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleInvitation.prefix.css diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.jsx b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.jsx index 76fbc228d309..960f1ae8a350 100644 --- a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.jsx +++ b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.jsx @@ -6,7 +6,7 @@ import { usePage, usePageSize } from "../../../components/Pagination/Pagination" import { useAPI } from "../../../providers/ApiProvider"; import { cn } from "../../../utils/bem"; import { isDefined } from "../../../utils/helpers"; -import "./PeopleList.scss"; +import "./PeopleList.prefix.css"; import { CopyableTooltip } from "../../../components/CopyableTooltip/CopyableTooltip"; export const PeopleList = ({ onSelect, selectedUser, defaultSelected }) => { diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.scss b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.scss rename to web/apps/labelstudio/src/pages/Organization/PeoplePage/PeopleList.prefix.css diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.jsx b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.jsx index 8b905c756e58..408ac3ed6a50 100644 --- a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.jsx +++ b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.jsx @@ -6,9 +6,9 @@ import { modal } from "../../../components/Modal/Modal"; import { Space } from "../../../components/Space/Space"; import { cn } from "../../../utils/bem"; import { FF_AUTH_TOKENS, FF_LSDV_E_297, isFF } from "../../../utils/feature-flags"; -import "./PeopleInvitation.scss"; +import "./PeopleInvitation.prefix.css"; import { PeopleList } from "./PeopleList"; -import "./PeoplePage.scss"; +import "./PeoplePage.prefix.css"; import { TokenSettingsModal } from "@humansignal/app-common/blocks/TokenSettingsModal"; import { IconPlus } from "@humansignal/icons"; import { useToast } from "@humansignal/ui"; diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.scss b/web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.scss rename to web/apps/labelstudio/src/pages/Organization/PeoplePage/PeoplePage.prefix.css diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.jsx b/web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.jsx index 64789b4610e8..6c101bfd78ea 100644 --- a/web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.jsx +++ b/web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.jsx @@ -3,7 +3,7 @@ import { NavLink } from "react-router-dom"; import { IconCross } from "@humansignal/icons"; import { Userpic, Button } from "@humansignal/ui"; import { cn } from "../../../utils/bem"; -import "./SelectedUser.scss"; +import "./SelectedUser.prefix.css"; const UserProjectsLinks = ({ projects }) => { return ( diff --git a/web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.scss b/web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.scss rename to web/apps/labelstudio/src/pages/Organization/PeoplePage/SelectedUser.prefix.css diff --git a/web/apps/labelstudio/src/pages/Projects/Projects.jsx b/web/apps/labelstudio/src/pages/Projects/Projects.jsx index 2218c5f67abc..593bb40a8324 100644 --- a/web/apps/labelstudio/src/pages/Projects/Projects.jsx +++ b/web/apps/labelstudio/src/pages/Projects/Projects.jsx @@ -12,7 +12,7 @@ import { DataManagerPage } from "../DataManager/DataManager"; import { SettingsPage } from "../Settings"; import { EmptyProjectsList, ProjectsList } from "./ProjectsList"; import { useAbortController, useUpdatePageTitle } from "@humansignal/core"; -import "./Projects.scss"; +import "./Projects.prefix.css"; const getCurrentPage = () => { const pageNumberFromURL = new URLSearchParams(location.search).get("page"); diff --git a/web/apps/labelstudio/src/pages/Projects/Projects.scss b/web/apps/labelstudio/src/pages/Projects/Projects.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Projects/Projects.scss rename to web/apps/labelstudio/src/pages/Projects/Projects.prefix.css diff --git a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/Forms.jsx b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/Forms.jsx index cc782c465aad..d393a7e39104 100644 --- a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/Forms.jsx +++ b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/Forms.jsx @@ -3,7 +3,7 @@ import { Button } from "@humansignal/ui"; import { ErrorWrapper } from "../../../components/Error/Error"; import { InlineError } from "../../../components/Error/InlineError"; import { Form, Input, Select, TextArea, Toggle } from "../../../components/Form"; -import "./MachineLearningSettings.scss"; +import "./MachineLearningSettings.prefix.css"; const CustomBackendForm = ({ action, backend, project, onSubmit }) => { const [selectedAuthMethod, setAuthMethod] = useState("NONE"); diff --git a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.jsx b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.jsx index 82c1652aa4fd..741530884a65 100644 --- a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.jsx +++ b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.jsx @@ -11,7 +11,7 @@ import { Tooltip } from "@humansignal/ui"; import { ApiContext } from "../../../providers/ApiProvider"; import { cn } from "../../../utils/bem"; -import "./MachineLearningList.scss"; +import "./MachineLearningList.prefix.css"; export const MachineLearningList = ({ backends, fetchBackends, onEdit, onTestRequest, onStartTraining }) => { const api = useContext(ApiContext); diff --git a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.scss b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.scss rename to web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningList.prefix.css diff --git a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.jsx b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.jsx index 6bb6502eba94..3300719c1775 100644 --- a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.jsx +++ b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.jsx @@ -11,7 +11,7 @@ import { MachineLearningList } from "./MachineLearningList"; import { CustomBackendForm } from "./Forms"; import { TestRequest } from "./TestRequest"; import { StartModelTraining } from "./StartModelTraining"; -import "./MachineLearningSettings.scss"; +import "./MachineLearningSettings.prefix.css"; export const MachineLearningSettings = () => { const api = useAPI(); diff --git a/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.scss b/web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.scss rename to web/apps/labelstudio/src/pages/Settings/MachineLearningSettings/MachineLearningSettings.prefix.css diff --git a/web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.jsx b/web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.jsx index 76273507c789..ec55d8b4e163 100644 --- a/web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.jsx +++ b/web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.jsx @@ -9,7 +9,7 @@ import { confirm } from "../../../components/Modal/Modal"; import { ApiContext } from "../../../providers/ApiProvider"; import { cn } from "../../../utils/bem"; -import "./PredictionsList.scss"; +import "./PredictionsList.prefix.css"; export const PredictionsList = ({ project, versions, fetchVersions }) => { const api = useContext(ApiContext); diff --git a/web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.scss b/web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.scss rename to web/apps/labelstudio/src/pages/Settings/PredictionsSettings/PredictionsList.prefix.css diff --git a/web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.jsx b/web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.jsx index a99374e42a31..c5035a0743bb 100644 --- a/web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.jsx +++ b/web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.jsx @@ -19,7 +19,7 @@ import { useProject } from "../../../providers/ProjectProvider"; import { cn } from "../../../utils/bem"; import { StorageSet } from "./StorageSet"; import { useStorageCard } from "./hooks/useStorageCard"; -import "./StorageSettings.scss"; +import "./StorageSettings.prefix.css"; export const StorageSettings = () => { const { project } = useProject(); diff --git a/web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.scss b/web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.scss rename to web/apps/labelstudio/src/pages/Settings/StorageSettings/StorageSettings.prefix.css diff --git a/web/apps/labelstudio/src/pages/Settings/index.jsx b/web/apps/labelstudio/src/pages/Settings/index.jsx index 23b9b41b6432..8eee1201d65d 100644 --- a/web/apps/labelstudio/src/pages/Settings/index.jsx +++ b/web/apps/labelstudio/src/pages/Settings/index.jsx @@ -7,7 +7,7 @@ import { LabelingSettings } from "./LabelingSettings"; import { MachineLearningSettings } from "./MachineLearningSettings/MachineLearningSettings"; import { PredictionsSettings } from "./PredictionsSettings/PredictionsSettings"; import { StorageSettings } from "./StorageSettings/StorageSettings"; -import "./settings.scss"; +import "./settings.prefix.css"; export const MenuLayout = ({ children, ...routeProps }) => { return ( diff --git a/web/apps/labelstudio/src/pages/Settings/settings.scss b/web/apps/labelstudio/src/pages/Settings/settings.prefix.css similarity index 100% rename from web/apps/labelstudio/src/pages/Settings/settings.scss rename to web/apps/labelstudio/src/pages/Settings/settings.prefix.css diff --git a/web/apps/labelstudio/src/themes/default/colors.prefix.css b/web/apps/labelstudio/src/themes/default/colors.prefix.css new file mode 100644 index 000000000000..37d62b10fb7e --- /dev/null +++ b/web/apps/labelstudio/src/themes/default/colors.prefix.css @@ -0,0 +1 @@ +@import '../../../../../libs/ui/src/tokens/colors.prefix.css'; diff --git a/web/apps/labelstudio/src/themes/default/colors.scss b/web/apps/labelstudio/src/themes/default/colors.scss deleted file mode 100644 index c6dd745da973..000000000000 --- a/web/apps/labelstudio/src/themes/default/colors.scss +++ /dev/null @@ -1 +0,0 @@ -@import '@humansignal/ui/src/tokens/colors'; diff --git a/web/apps/labelstudio/src/themes/default/tokens.prefix.css b/web/apps/labelstudio/src/themes/default/tokens.prefix.css new file mode 100644 index 000000000000..b7852795637a --- /dev/null +++ b/web/apps/labelstudio/src/themes/default/tokens.prefix.css @@ -0,0 +1 @@ +@import '../../../../../libs/ui/src/tokens/tokens.prefix.css'; \ No newline at end of file diff --git a/web/apps/labelstudio/src/themes/default/tokens.scss b/web/apps/labelstudio/src/themes/default/tokens.scss deleted file mode 100644 index ab3ceee0deb1..000000000000 --- a/web/apps/labelstudio/src/themes/default/tokens.scss +++ /dev/null @@ -1 +0,0 @@ -@import '@humansignal/ui/src/tokens/tokens'; \ No newline at end of file diff --git a/web/apps/labelstudio/src/themes/default/typography.scss b/web/apps/labelstudio/src/themes/default/typography.prefix.css similarity index 100% rename from web/apps/labelstudio/src/themes/default/typography.scss rename to web/apps/labelstudio/src/themes/default/typography.prefix.css diff --git a/web/apps/labelstudio/src/themes/default/variables.prefix.css b/web/apps/labelstudio/src/themes/default/variables.prefix.css new file mode 100644 index 000000000000..98c1eb8d58f0 --- /dev/null +++ b/web/apps/labelstudio/src/themes/default/variables.prefix.css @@ -0,0 +1,3 @@ +@import './tokens.prefix.css'; +@import './colors.prefix.css'; +@import './typography.prefix.css'; diff --git a/web/apps/labelstudio/src/themes/default/variables.scss b/web/apps/labelstudio/src/themes/default/variables.scss deleted file mode 100644 index 7f327760f9da..000000000000 --- a/web/apps/labelstudio/src/themes/default/variables.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import './tokens'; -@import './colors'; -@import './typography'; diff --git a/web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.module.scss b/web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.module.css similarity index 100% rename from web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.module.scss rename to web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.module.css diff --git a/web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.tsx b/web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.tsx index efb05f43908c..c7864c35cb0b 100644 --- a/web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.tsx +++ b/web/apps/playground/src/components/PlaygroundApp/PlaygroundApp.tsx @@ -13,7 +13,7 @@ import { getInterfacesFromParams, throwUnlessXmlLike, } from "../../utils/query"; -import styles from "./PlaygroundApp.module.scss"; +import styles from "./PlaygroundApp.module.css"; const DEFAULT_EDITOR_WIDTH_PERCENT = 50; const MIN_EDITOR_WIDTH_PERCENT = 20; diff --git a/web/apps/playground/src/main.tsx b/web/apps/playground/src/main.tsx index 7317a58dea30..eb59531ac834 100644 --- a/web/apps/playground/src/main.tsx +++ b/web/apps/playground/src/main.tsx @@ -2,7 +2,7 @@ import { createRoot } from "react-dom/client"; import "./utils/embedFeatureFlags"; import { PlaygroundApp } from "./components/PlaygroundApp"; -import "@humansignal/ui/src/styles.scss"; +import "@humansignal/ui/src/styles.prefix.css"; import "@humansignal/ui/src/tailwind.css"; const root = createRoot(document.getElementById("root")!); diff --git a/web/biome.json b/web/biome.json index 494557a66490..e9166c4fabba 100644 --- a/web/biome.json +++ b/web/biome.json @@ -26,8 +26,11 @@ "lineWidth": 120 }, "css": { + "parser": { + "cssModules": true + }, "linter": { - "enabled": false + "enabled": true }, "formatter": { "enabled": false @@ -55,7 +58,9 @@ "noConfusingVoidType": "off", "noImplicitAnyLet": "off", "noShadowRestrictedNames": "off", - "useGetterReturn": "off" + "useGetterReturn": "off", + "noDuplicateProperties": "warn", + "noShorthandPropertyOverrides": "warn" }, "complexity": { "noForEach": "off", @@ -74,7 +79,11 @@ }, "noUnusedVariables": { "level": "warn" - } + }, + "noUnknownTypeSelector": "off", + "noUnknownPseudoClass": "off", + "noUnknownMediaFeatureName": "warn", + "noUnknownProperty": "warn" }, "performance": { "noAccumulatingSpread": "off", @@ -92,7 +101,8 @@ "noUnusedTemplateLiteral": "error", "useNumberNamespace": "error", "noInferrableTypes": "error", - "noUselessElse": "error" + "noUselessElse": "error", + "noDescendingSpecificity": "off" }, "nursery": {}, "security": { diff --git a/web/libs/app-common/src/blocks/TokenSettingsModal/styles.module.scss b/web/libs/app-common/src/blocks/TokenSettingsModal/styles.module.css similarity index 100% rename from web/libs/app-common/src/blocks/TokenSettingsModal/styles.module.scss rename to web/libs/app-common/src/blocks/TokenSettingsModal/styles.module.css diff --git a/web/libs/app-common/src/components/state-chips/state-visuals.ts b/web/libs/app-common/src/components/state-chips/state-visuals.ts index 35ce0142cc55..a22996995682 100644 --- a/web/libs/app-common/src/components/state-chips/state-visuals.ts +++ b/web/libs/app-common/src/components/state-chips/state-visuals.ts @@ -3,7 +3,7 @@ * Shared between StateHistoryPopover and StateHistoryPopoverContent * * Uses CSS variable references for dark mode support. - * Colors are defined in tokens.scss and automatically adapt to color scheme. + * Colors are defined in tokens.prefix.css and automatically adapt to color scheme. */ import type React from "react"; diff --git a/web/libs/app-common/src/pages/AccountSettings/AccountSettings.module.scss b/web/libs/app-common/src/pages/AccountSettings/AccountSettings.module.css similarity index 100% rename from web/libs/app-common/src/pages/AccountSettings/AccountSettings.module.scss rename to web/libs/app-common/src/pages/AccountSettings/AccountSettings.module.css diff --git a/web/libs/app-common/src/pages/AccountSettings/AccountSettings.tsx b/web/libs/app-common/src/pages/AccountSettings/AccountSettings.tsx index 7431edb3363f..44703876686a 100644 --- a/web/libs/app-common/src/pages/AccountSettings/AccountSettings.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/AccountSettings.tsx @@ -2,7 +2,7 @@ import { Card, CardHeader, CardTitle, CardContent, CardDescription } from "@huma import { useMemo, isValidElement } from "react"; import { Redirect, Route, Switch, useParams, useRouteMatch } from "react-router-dom"; import { useUpdatePageTitle, createTitleFromSegments } from "@humansignal/core"; -import styles from "./AccountSettings.module.scss"; +import styles from "./AccountSettings.module.css"; import { accountSettingsSections } from "./sections"; import { HotkeysHeaderButtons } from "./sections/Hotkeys"; import clsx from "clsx"; diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys.tsx b/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys.tsx index 3d66e38a7813..94d88568e57c 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys.tsx @@ -20,7 +20,7 @@ import { KeyboardKey } from "./Hotkeys/Key"; import type { Hotkey, Section, DirtyState, DuplicateConfirmDialog, ImportData } from "./Hotkeys/utils"; // @ts-ignore import { HOTKEY_SECTIONS } from "./Hotkeys/defaults"; -import styles from "../AccountSettings.module.scss"; +import styles from "../AccountSettings.module.css"; import { useHotkeys } from "../hooks/useHotkeys"; // Type the imported defaults diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.module.scss b/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.module.css similarity index 100% rename from web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.module.scss rename to web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.module.css diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.tsx b/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.tsx index f3a9a1a2a310..4d216c9a871c 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/sections/Hotkeys/Key.tsx @@ -1,5 +1,5 @@ import type { ReactNode } from "react"; -import styles from "./Key.module.scss"; +import styles from "./Key.module.css"; // Type definitions interface KeyboardKeyProps { diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.module.scss b/web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.module.css similarity index 100% rename from web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.module.scss rename to web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.module.css diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.tsx b/web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.tsx index 592d758575ec..38abd36c1730 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/sections/MembershipInfo.tsx @@ -1,5 +1,5 @@ import { format } from "date-fns"; -import styles from "./MembershipInfo.module.scss"; +import styles from "./MembershipInfo.module.css"; import { useQuery } from "@tanstack/react-query"; import { getApiInstance } from "@humansignal/core"; import { useMemo } from "react"; diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.module.scss b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.module.css similarity index 83% rename from web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.module.scss rename to web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.module.css index 3c96c19f985d..d13909e6e9ef 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.module.scss +++ b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.module.css @@ -1,5 +1,5 @@ .input { - @apply flex-1 max-h-[40px] + @apply flex-1 max-h-[40px]; } .textarea { diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.tsx b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.tsx index f484db0a1a6b..00d157effbe9 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalAccessToken.tsx @@ -7,7 +7,7 @@ import { Button, IconFileCopy, IconLaunch, Label, Typography } from "@humansigna import { Input, TextArea } from "apps/labelstudio/src/components/Form"; import { atom, useAtomValue } from "jotai"; import { atomWithMutation, atomWithQuery } from "jotai-tanstack-query"; -import styles from "./PersonalAccessToken.module.scss"; +import styles from "./PersonalAccessToken.module.css"; const tokenAtom = atomWithQuery(() => ({ queryKey: ["access-token"], diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalInfo.tsx b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalInfo.tsx index 29a5b3fbed75..3d1892f8db27 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalInfo.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalInfo.tsx @@ -2,7 +2,7 @@ import { type FormEventHandler, useCallback, useEffect, useRef, useState } from import clsx from "clsx"; import { Button, InputFile, ToastType, useToast, Userpic } from "@humansignal/ui"; import { getApiInstance } from "@humansignal/core"; -import styles from "../AccountSettings.module.scss"; +import styles from "../AccountSettings.module.css"; import { useAuth } from "@humansignal/core/providers/AuthProvider"; import { atomWithMutation } from "jotai-tanstack-query"; import { useAtomValue } from "jotai"; diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.module.scss b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.module.css similarity index 100% rename from web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.module.scss rename to web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.module.css diff --git a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.tsx b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.tsx index ef54d268e564..f430c88ca403 100644 --- a/web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.tsx +++ b/web/libs/app-common/src/pages/AccountSettings/sections/PersonalJWTToken.tsx @@ -6,7 +6,7 @@ import clsx from "clsx"; import { useCallback, useEffect, useMemo, useState } from "react"; import { format } from "date-fns"; import { getApiInstance, useCopyText } from "@humansignal/core"; -import styles from "./PersonalJWTToken.module.scss"; +import styles from "./PersonalJWTToken.module.css"; import { Button } from "@humansignal/ui"; /** diff --git a/web/libs/datamanager/jest.config.ts b/web/libs/datamanager/jest.config.ts index 6ca90a48d718..46806305b357 100644 --- a/web/libs/datamanager/jest.config.ts +++ b/web/libs/datamanager/jest.config.ts @@ -11,7 +11,7 @@ export default { moduleNameMapper: { "^react-markdown$": "/../editor/__mocks__/react-markdown.tsx", "^rehype-raw$": "/../editor/__mocks__/rehype-raw.ts", - "\\.(css|less|scss|sass)$": "identity-obj-proxy", + "\\.(css)$": "identity-obj-proxy", "\\.(gif|ttf|eot|svg|png)$": "/__mocks__/fileMock.js", }, }; diff --git a/web/libs/datamanager/src/components/App/App.scss b/web/libs/datamanager/src/components/App/App.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/App/App.scss rename to web/libs/datamanager/src/components/App/App.prefix.css diff --git a/web/libs/datamanager/src/components/App/App.tsx b/web/libs/datamanager/src/components/App/App.tsx index 19ebf661407b..19df73c2b38c 100644 --- a/web/libs/datamanager/src/components/App/App.tsx +++ b/web/libs/datamanager/src/components/App/App.tsx @@ -6,7 +6,7 @@ import { cn } from "../../utils/bem"; import { Spinner } from "../Common/Spinner"; import { DataManager } from "../DataManager/DataManager"; import { Labeling } from "../Label/Label"; -import "./App.scss"; +import "./App.prefix.css"; import { QueryClientProvider } from "@tanstack/react-query"; import { queryClient } from "@humansignal/core/lib/utils/query-client"; import { AuthProvider } from "@humansignal/core/providers/AuthProvider"; diff --git a/web/libs/datamanager/src/components/CellViews/Annotators/Annotators.jsx b/web/libs/datamanager/src/components/CellViews/Annotators/Annotators.jsx index b1d089a7a7fb..905f43eed269 100644 --- a/web/libs/datamanager/src/components/CellViews/Annotators/Annotators.jsx +++ b/web/libs/datamanager/src/components/CellViews/Annotators/Annotators.jsx @@ -8,7 +8,7 @@ import { Space } from "../../Common/Space/Space"; import { IconCheckAlt, IconCrossAlt } from "@humansignal/icons"; import { Tooltip, Userpic } from "@humansignal/ui"; import { Common } from "../../Filters/types"; -import "./Annotators.scss"; +import "./Annotators.prefix.css"; import { isActive, FF_DM_FILTER_MEMBERS } from "@humansignal/core/lib/utils/feature-flags"; import { VariantSelect } from "../../Filters/types/List"; import { UserSelect } from "../../Common/UserSelect"; diff --git a/web/libs/datamanager/src/components/CellViews/Annotators/Annotators.scss b/web/libs/datamanager/src/components/CellViews/Annotators/Annotators.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/CellViews/Annotators/Annotators.scss rename to web/libs/datamanager/src/components/CellViews/Annotators/Annotators.prefix.css diff --git a/web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.jsx b/web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.jsx index 5886e980ae84..053dfc0b9190 100644 --- a/web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.jsx +++ b/web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.jsx @@ -3,7 +3,7 @@ import React from "react"; import { taskToLSFormat } from "../../../sdk/lsf-utils"; import { cn } from "../../../utils/bem"; import { Spinner } from "../Spinner"; -import "./AnnotationPreview.scss"; +import "./AnnotationPreview.prefix.css"; const imgDefaultProps = { crossOrigin: "anonymous" }; diff --git a/web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.scss b/web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.scss rename to web/libs/datamanager/src/components/Common/AnnotationPreview/AnnotationPreview.prefix.css diff --git a/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.global.scss b/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.global.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/DatePicker/DatePicker.global.scss rename to web/libs/datamanager/src/components/Common/DatePicker/DatePicker.global.prefix.css diff --git a/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.jsx b/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.jsx index 1e296f163b8f..81e62c52a3e6 100644 --- a/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.jsx +++ b/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.jsx @@ -6,8 +6,8 @@ import { cn } from "../../../utils/bem"; import { isDefined } from "../../../utils/utils"; import { Dropdown } from "@humansignal/ui"; import Input from "../Input/Input"; -import "./DatePicker.global.scss"; -import "./DatePicker.scss"; +import "./DatePicker.global.prefix.css"; +import "./DatePicker.prefix.css"; export const DatePicker = ({ size, diff --git a/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.scss b/web/libs/datamanager/src/components/Common/DatePicker/DatePicker.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/DatePicker/DatePicker.scss rename to web/libs/datamanager/src/components/Common/DatePicker/DatePicker.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.jsx b/web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.jsx index a00ca1317557..69073c9e3f82 100644 --- a/web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.jsx +++ b/web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.jsx @@ -6,7 +6,7 @@ import { Oneof } from "../../../Oneof/Oneof"; import { FormField } from "../../FormField"; import { useValueTracker } from "../../Utils"; import { default as Label } from "../Label/Label"; -import "./Counter.scss"; +import "./Counter.prefix.css"; const allowedKeys = ["ArrowUp", "ArrowDown", "Backspace", "Delete", /[0-9]/]; diff --git a/web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.scss b/web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.scss rename to web/libs/datamanager/src/components/Common/Form/Elements/Counter/Counter.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.jsx b/web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.jsx index 4003105d3bbb..539ac3f33ce6 100644 --- a/web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.jsx +++ b/web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.jsx @@ -1,7 +1,7 @@ import { cn } from "../../../../../utils/bem"; import { FormField } from "../../FormField"; import { default as Label } from "../Label/Label"; -import "./Input.scss"; +import "./Input.prefix.css"; const Input = ({ label, className, validate, required, skip, labelProps, ghost, ...props }) => { const mods = { diff --git a/web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.scss b/web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.scss rename to web/libs/datamanager/src/components/Common/Form/Elements/Input/Input.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.jsx b/web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.jsx index 64d8746748c7..d6ce795e31d4 100644 --- a/web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.jsx +++ b/web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.jsx @@ -1,6 +1,6 @@ import { forwardRef, createElement } from "react"; import { cn } from "../../../../../utils/bem"; -import "./Label.scss"; +import "./Label.prefix.css"; /** @deprecated - needs to be replaced with @humansignal/ui Label - visualizes differently currently */ const Label = forwardRef( ({ text, children, required, placement, description, size, large, style, simple, flat }, ref) => { diff --git a/web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.scss b/web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.scss rename to web/libs/datamanager/src/components/Common/Form/Elements/Label/Label.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Form/Form.jsx b/web/libs/datamanager/src/components/Common/Form/Form.jsx index f68014096538..37c31f6b64a7 100644 --- a/web/libs/datamanager/src/components/Common/Form/Form.jsx +++ b/web/libs/datamanager/src/components/Common/Form/Form.jsx @@ -6,7 +6,7 @@ import { Button } from "@humansignal/ui"; import { Oneof } from "../Oneof/Oneof"; import { Space } from "../Space/Space"; import { Counter, Input, Select, Toggle } from "./Elements"; -import "./Form.scss"; +import "./Form.prefix.css"; import { FormContext, FormResponseContext, diff --git a/web/libs/datamanager/src/components/Common/Form/Form.scss b/web/libs/datamanager/src/components/Common/Form/Form.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Form/Form.scss rename to web/libs/datamanager/src/components/Common/Form/Form.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Form/Validation/Validation.scss b/web/libs/datamanager/src/components/Common/Form/Validation/Validation.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Form/Validation/Validation.scss rename to web/libs/datamanager/src/components/Common/Form/Validation/Validation.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Form/Validation/Validators.js b/web/libs/datamanager/src/components/Common/Form/Validation/Validators.js index 29b30d90e562..5666a6087590 100644 --- a/web/libs/datamanager/src/components/Common/Form/Validation/Validators.js +++ b/web/libs/datamanager/src/components/Common/Form/Validation/Validators.js @@ -1,6 +1,6 @@ import { isEmptyString } from "../../../../utils/helpers"; import { isDefined } from "../../../../utils/utils"; -import "./Validation.scss"; +import "./Validation.prefix.css"; export const required = (fieldName, value) => { if (!isDefined(value) || isEmptyString(value)) { diff --git a/web/libs/datamanager/src/components/Common/Icon/Icon.jsx b/web/libs/datamanager/src/components/Common/Icon/Icon.jsx index 591e7a89c381..0a313dfe7bcb 100644 --- a/web/libs/datamanager/src/components/Common/Icon/Icon.jsx +++ b/web/libs/datamanager/src/components/Common/Icon/Icon.jsx @@ -1,6 +1,6 @@ import React from "react"; import { cn } from "../../../utils/bem"; -import "./Icon.scss"; +import "./Icon.prefix.css"; export const Icon = React.forwardRef(({ icon, ...props }, ref) => { return ( diff --git a/web/libs/datamanager/src/components/Common/Icon/Icon.scss b/web/libs/datamanager/src/components/Common/Icon/Icon.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Icon/Icon.scss rename to web/libs/datamanager/src/components/Common/Icon/Icon.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Input/Input.jsx b/web/libs/datamanager/src/components/Common/Input/Input.jsx index 45a022809048..586af90e795c 100644 --- a/web/libs/datamanager/src/components/Common/Input/Input.jsx +++ b/web/libs/datamanager/src/components/Common/Input/Input.jsx @@ -1,7 +1,7 @@ import React from "react"; import { clsx } from "clsx"; import { cn } from "../../../utils/bem"; -import "./Input.scss"; +import "./Input.prefix.css"; const Input = React.forwardRef(({ className, size, rawClassName, ...props }, ref) => { const classList = clsx(cn("input-dm").mod({ size }).mix(className).toString(), rawClassName); diff --git a/web/libs/datamanager/src/components/Common/Input/Input.scss b/web/libs/datamanager/src/components/Common/Input/Input.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Input/Input.scss rename to web/libs/datamanager/src/components/Common/Input/Input.prefix.css diff --git a/web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.jsx b/web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.jsx index e4bb1de1bf89..63fbe5bf3cb4 100644 --- a/web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.jsx +++ b/web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.jsx @@ -14,7 +14,7 @@ import { cn } from "../../../utils/bem"; import { filename } from "../../../utils/helpers"; import { Space } from "../Space/Space"; import { Spinner } from "../Spinner"; -import "./MediaPlayer.scss"; +import "./MediaPlayer.prefix.css"; import { MediaSeeker } from "./MediaSeeker"; import { Duration } from "./Duration"; diff --git a/web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.scss b/web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.scss rename to web/libs/datamanager/src/components/Common/MediaPlayer/MediaPlayer.prefix.css diff --git a/web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.jsx b/web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.jsx index f4c3466ab1dc..d0e17a67f82a 100644 --- a/web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.jsx +++ b/web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.jsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { cn } from "../../../utils/bem"; -import "./MediaSeeker.scss"; +import "./MediaSeeker.prefix.css"; export const MediaSeeker = ({ currentTime, duration, buffer, onSeekStart, onSeekEnd, onChange, video }) => { /** @type {import("react").RefObject} */ diff --git a/web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.scss b/web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.scss rename to web/libs/datamanager/src/components/Common/MediaPlayer/MediaSeeker.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Menu/Menu.jsx b/web/libs/datamanager/src/components/Common/Menu/Menu.jsx index 4764c7a08d71..906ac5f7e2df 100644 --- a/web/libs/datamanager/src/components/Common/Menu/Menu.jsx +++ b/web/libs/datamanager/src/components/Common/Menu/Menu.jsx @@ -2,7 +2,7 @@ import React, { useCallback, useMemo } from "react"; import clsx from "clsx"; import { cn } from "../../../utils/bem"; import { useDropdown } from "@humansignal/ui"; -import "./Menu.scss"; +import "./Menu.prefix.css"; import { MenuContext } from "./MenuContext"; import { MenuItem } from "./MenuItem"; diff --git a/web/libs/datamanager/src/components/Common/Menu/Menu.scss b/web/libs/datamanager/src/components/Common/Menu/Menu.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Menu/Menu.scss rename to web/libs/datamanager/src/components/Common/Menu/Menu.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Pagination/Pagination.scss b/web/libs/datamanager/src/components/Common/Pagination/Pagination.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Pagination/Pagination.scss rename to web/libs/datamanager/src/components/Common/Pagination/Pagination.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Pagination/Pagination.tsx b/web/libs/datamanager/src/components/Common/Pagination/Pagination.tsx index 369248de2bf5..198d06d51307 100644 --- a/web/libs/datamanager/src/components/Common/Pagination/Pagination.tsx +++ b/web/libs/datamanager/src/components/Common/Pagination/Pagination.tsx @@ -11,7 +11,7 @@ import { import { cn } from "../../../utils/bem"; import { clamp, isDefined } from "../../../utils/helpers"; import { useValueTracker } from "../Form/Utils"; -import "./Pagination.scss"; +import "./Pagination.prefix.css"; import { useUpdateEffect } from "../../../hooks/useUpdateEffect"; import { Select } from "../Form/Elements"; diff --git a/web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.jsx b/web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.jsx index ddb64fb56952..75084e72bdd4 100644 --- a/web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.jsx +++ b/web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.jsx @@ -1,6 +1,6 @@ import React from "react"; import { cn } from "../../../utils/bem"; -import "./RadioGroup.scss"; +import "./RadioGroup.prefix.css"; const RadioContext = React.createContext(); diff --git a/web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.scss b/web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.scss rename to web/libs/datamanager/src/components/Common/RadioGroup/RadioGroup.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Range/Range.jsx b/web/libs/datamanager/src/components/Common/Range/Range.jsx index 7b02a7a9ed8f..ba116f873d24 100644 --- a/web/libs/datamanager/src/components/Common/Range/Range.jsx +++ b/web/libs/datamanager/src/components/Common/Range/Range.jsx @@ -3,7 +3,7 @@ import { cn } from "../../../utils/bem"; import { isDefined } from "../../../utils/utils"; import { clamp } from "../../../utils/helpers"; import { useValueTracker } from "../Form/Utils"; -import "./Range.scss"; +import "./Range.prefix.css"; const arrayReverse = (array, reverse = false) => { return reverse ? [...array].reverse() : array; diff --git a/web/libs/datamanager/src/components/Common/Range/Range.scss b/web/libs/datamanager/src/components/Common/Range/Range.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Range/Range.scss rename to web/libs/datamanager/src/components/Common/Range/Range.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Resizer/Resizer.jsx b/web/libs/datamanager/src/components/Common/Resizer/Resizer.jsx index db4a7fab7d6f..4511b675bcdb 100644 --- a/web/libs/datamanager/src/components/Common/Resizer/Resizer.jsx +++ b/web/libs/datamanager/src/components/Common/Resizer/Resizer.jsx @@ -1,6 +1,6 @@ import React from "react"; import { cn } from "../../../utils/bem"; -import "./Resizer.scss"; +import "./Resizer.prefix.css"; const calculateWidth = (width, minWidth, maxWidth, initialX, currentX) => { const offset = currentX - initialX; diff --git a/web/libs/datamanager/src/components/Common/Resizer/Resizer.scss b/web/libs/datamanager/src/components/Common/Resizer/Resizer.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Resizer/Resizer.scss rename to web/libs/datamanager/src/components/Common/Resizer/Resizer.prefix.css diff --git a/web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.scss b/web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.scss rename to web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.prefix.css diff --git a/web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.tsx b/web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.tsx index 1c3e0ccd8aff..44bd1f000f8e 100644 --- a/web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.tsx +++ b/web/libs/datamanager/src/components/Common/SkeletonLoader/SkeletonLoader.tsx @@ -1,5 +1,5 @@ import type { ReactChildren } from "react"; -import "./SkeletonLoader.scss"; +import "./SkeletonLoader.prefix.css"; import { cn } from "../../../utils/bem"; import { SkeletonLine } from "./SkeletonLine"; import { SkeletonGap } from "./SkeletonGap"; diff --git a/web/libs/datamanager/src/components/Common/Space/Space.jsx b/web/libs/datamanager/src/components/Common/Space/Space.jsx index 51ebea0e66d9..4e6ea98d1f82 100644 --- a/web/libs/datamanager/src/components/Common/Space/Space.jsx +++ b/web/libs/datamanager/src/components/Common/Space/Space.jsx @@ -1,5 +1,5 @@ import { cn } from "../../../utils/bem"; -import "./Space.scss"; +import "./Space.prefix.css"; export const Space = ({ direction = "horizontal", diff --git a/web/libs/datamanager/src/components/Common/Space/Space.scss b/web/libs/datamanager/src/components/Common/Space/Space.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Space/Space.scss rename to web/libs/datamanager/src/components/Common/Space/Space.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Table/Table.jsx b/web/libs/datamanager/src/components/Common/Table/Table.jsx index 0c30d2b08f76..3df75f571f4e 100644 --- a/web/libs/datamanager/src/components/Common/Table/Table.jsx +++ b/web/libs/datamanager/src/components/Common/Table/Table.jsx @@ -7,7 +7,7 @@ import { Icon } from "../Icon/Icon"; import { modal } from "../Modal/Modal"; import { IconBraces } from "@humansignal/icons"; import { AutoSizerTable, Button } from "@humansignal/ui"; -import "./Table.scss"; +import "./Table.prefix.css"; import { TableCheckboxCell } from "./TableCheckbox"; import { tableCN, TableContext } from "./TableContext"; import { TableHead } from "./TableHead/TableHead"; diff --git a/web/libs/datamanager/src/components/Common/Table/Table.scss b/web/libs/datamanager/src/components/Common/Table/Table.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Table/Table.scss rename to web/libs/datamanager/src/components/Common/Table/Table.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.jsx b/web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.jsx index f36a9d3fb855..fbe898d0f3da 100644 --- a/web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.jsx +++ b/web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.jsx @@ -11,7 +11,7 @@ import { TableCell, TableCellContent } from "../TableCell/TableCell"; import { TableContext, tableCN } from "../TableContext"; import { cn } from "../../../../utils/bem"; import { getStyle } from "../utils"; -import "./TableHead.scss"; +import "./TableHead.prefix.css"; import { getRoot } from "mobx-state-tree"; import { Agreement } from "../../../CellViews/Agreement/Agreement"; import { AgreementSelected } from "../../../CellViews/AgreementSelected"; diff --git a/web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.scss b/web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.scss rename to web/libs/datamanager/src/components/Common/Table/TableHead/TableHead.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.jsx b/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.jsx index bf81a6da02be..a8b934c3deff 100644 --- a/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.jsx +++ b/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.jsx @@ -4,7 +4,7 @@ import { cn } from "../../../../utils/bem"; import { FF_LOPS_E_3, isFF } from "../../../../utils/feature-flags"; import { normalizeCellAlias } from "../../../CellViews"; import { SkeletonLoader } from "../../SkeletonLoader"; -import "./TableRow.scss"; +import "./TableRow.prefix.css"; import { TableContext, tableCN } from "../TableContext"; import { getProperty, getStyle } from "../utils"; diff --git a/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.scss b/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.scss rename to web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.test.jsx b/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.test.jsx index 67d4ae1675a2..f2e7a3596ea8 100644 --- a/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.test.jsx +++ b/web/libs/datamanager/src/components/Common/Table/TableRow/TableRow.test.jsx @@ -59,7 +59,7 @@ jest.mock("../../../../utils/bem", () => ({ })); // Mock styles -jest.mock("./TableRow.scss", () => ({})); +jest.mock("./TableRow.prefix.css", () => ({})); describe("TableRow", () => { const mockData = { diff --git a/web/libs/datamanager/src/components/Common/TableOld/Table.scss b/web/libs/datamanager/src/components/Common/TableOld/Table.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/TableOld/Table.scss rename to web/libs/datamanager/src/components/Common/TableOld/Table.prefix.css diff --git a/web/libs/datamanager/src/components/Common/TableOld/TableHead/TableHead.scss b/web/libs/datamanager/src/components/Common/TableOld/TableHead/TableHead.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/TableOld/TableHead/TableHead.scss rename to web/libs/datamanager/src/components/Common/TableOld/TableHead/TableHead.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Tabs/Tabs.jsx b/web/libs/datamanager/src/components/Common/Tabs/Tabs.jsx index ce30178db58a..ec59ffce8c64 100644 --- a/web/libs/datamanager/src/components/Common/Tabs/Tabs.jsx +++ b/web/libs/datamanager/src/components/Common/Tabs/Tabs.jsx @@ -6,7 +6,7 @@ import { cn } from "../../../utils/bem"; import { Button, Tooltip } from "@humansignal/ui"; import { Dropdown } from "@humansignal/ui"; import Input from "../Input/Input"; -import "./Tabs.scss"; +import "./Tabs.prefix.css"; import { TabsMenu } from "./TabsMenu"; const TabsContext = createContext(); diff --git a/web/libs/datamanager/src/components/Common/Tabs/Tabs.scss b/web/libs/datamanager/src/components/Common/Tabs/Tabs.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Tabs/Tabs.scss rename to web/libs/datamanager/src/components/Common/Tabs/Tabs.prefix.css diff --git a/web/libs/datamanager/src/components/Common/Tag/Tag.jsx b/web/libs/datamanager/src/components/Common/Tag/Tag.jsx index 3c1fd51d8ab6..8a2408614aef 100644 --- a/web/libs/datamanager/src/components/Common/Tag/Tag.jsx +++ b/web/libs/datamanager/src/components/Common/Tag/Tag.jsx @@ -1,7 +1,7 @@ import color from "chroma-js"; import { cn } from "../../../utils/bem"; import { colors } from "../../../utils/colors"; -import "./Tag.scss"; +import "./Tag.prefix.css"; const prepareColor = (colorString) => { const baseColor = color(colorString); diff --git a/web/libs/datamanager/src/components/Common/Tag/Tag.scss b/web/libs/datamanager/src/components/Common/Tag/Tag.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Common/Tag/Tag.scss rename to web/libs/datamanager/src/components/Common/Tag/Tag.prefix.css diff --git a/web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.module.scss b/web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.module.css similarity index 100% rename from web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.module.scss rename to web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.module.css diff --git a/web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.tsx b/web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.tsx index ac1738338173..c0ac3b39dbe7 100644 --- a/web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.tsx +++ b/web/libs/datamanager/src/components/Common/TaskSourceViewer/CodeView.tsx @@ -3,7 +3,7 @@ import { FixedSizeList as List } from "react-window"; import AutoSizer from "react-virtualized-auto-sizer"; import { Button, Tooltip } from "@humansignal/ui"; import { IconCopyOutline } from "@humansignal/icons"; -import styles from "./CodeView.module.scss"; +import styles from "./CodeView.module.css"; interface CodeViewProps { /** JSON data to display */ diff --git a/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.module.scss b/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.module.css similarity index 100% rename from web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.module.scss rename to web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.module.css diff --git a/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.test.tsx b/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.test.tsx index 7769657ec31c..696aa7f3d056 100644 --- a/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.test.tsx +++ b/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.test.tsx @@ -58,7 +58,7 @@ jest.mock("./CodeView", () => ({ })); // Mock styles -jest.mock("./TaskSourceViewer.module.scss", () => ({ +jest.mock("./TaskSourceViewer.module.css", () => ({ taskSourceView: "taskSourceView", viewToggleContainer: "viewToggleContainer", viewContent: "viewContent", diff --git a/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.tsx b/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.tsx index 1b370fdbfd1e..dc8e351f4ae5 100644 --- a/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.tsx +++ b/web/libs/datamanager/src/components/Common/TaskSourceViewer/TaskSourceViewer.tsx @@ -2,7 +2,7 @@ import { type ChangeEvent, type FC, useEffect, useMemo, useState, useCallback } import { JsonViewer, type FilterConfig, Toggle } from "@humansignal/ui"; import { FF_LOPS_E_3, FF_INTERACTIVE_JSON_VIEWER, isFF } from "../../../utils/feature-flags"; import { CodeView } from "./CodeView"; -import styles from "./TaskSourceViewer.module.scss"; +import styles from "./TaskSourceViewer.module.css"; import { ViewToggle, type ViewMode } from "./ViewToggle"; export type { ViewMode }; diff --git a/web/libs/datamanager/src/components/DataManager/DataManager.jsx b/web/libs/datamanager/src/components/DataManager/DataManager.jsx index 546e2b344b5a..885c142d90fa 100644 --- a/web/libs/datamanager/src/components/DataManager/DataManager.jsx +++ b/web/libs/datamanager/src/components/DataManager/DataManager.jsx @@ -8,7 +8,7 @@ import { Spinner } from "../Common/Spinner"; import { Tabs, TabsItem } from "../Common/Tabs/Tabs"; import { FiltersSidebar } from "../Filters/FiltersSidebar/FilterSidebar"; import { DataView } from "../MainView"; -import "./DataManager.scss"; +import "./DataManager.prefix.css"; import { Toolbar } from "./Toolbar/Toolbar"; const tabContentCN = cn("tabs-dm-content"); diff --git a/web/libs/datamanager/src/components/DataManager/DataManager.scss b/web/libs/datamanager/src/components/DataManager/DataManager.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/DataManager/DataManager.scss rename to web/libs/datamanager/src/components/DataManager/DataManager.prefix.css diff --git a/web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.jsx b/web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.jsx index 3314c7bc1ae7..aa8796369dec 100644 --- a/web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.jsx +++ b/web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.jsx @@ -9,7 +9,7 @@ import { Dropdown } from "@humansignal/ui"; import Form from "../../Common/Form/Form"; import { Menu } from "../../Common/Menu/Menu"; import { Modal } from "../../Common/Modal/ModalPopup"; -import "./ActionsButton.scss"; +import "./ActionsButton.prefix.css"; const isFFLOPSE3 = isFF(FF_LOPS_E_3); const injector = inject(({ store }) => ({ diff --git a/web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.scss b/web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.scss rename to web/libs/datamanager/src/components/DataManager/Toolbar/ActionsButton.prefix.css diff --git a/web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.jsx b/web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.jsx index 758a9810b6c1..381b58fe87e4 100644 --- a/web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.jsx +++ b/web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.jsx @@ -3,7 +3,7 @@ import { Button, ButtonGroup } from "@humansignal/ui"; import { inject, observer } from "mobx-react"; import { ColumnPicker } from "../../Common/ColumnPicker"; import { Space } from "../../Common/Space/Space"; -import "./OrderButton.scss"; +import "./OrderButton.prefix.css"; const orderableFilter = (col) => col.orderable ?? col.original?.orderable; diff --git a/web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.scss b/web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.scss rename to web/libs/datamanager/src/components/DataManager/Toolbar/OrderButton.prefix.css diff --git a/web/libs/datamanager/src/components/DataManager/Toolbar/TabPanel.scss b/web/libs/datamanager/src/components/DataManager/Toolbar/TabPanel.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/DataManager/Toolbar/TabPanel.scss rename to web/libs/datamanager/src/components/DataManager/Toolbar/TabPanel.prefix.css diff --git a/web/libs/datamanager/src/components/DataManager/Toolbar/Toolbar.jsx b/web/libs/datamanager/src/components/DataManager/Toolbar/Toolbar.jsx index 8aef3fe76e30..9f947c6fdb3a 100644 --- a/web/libs/datamanager/src/components/DataManager/Toolbar/Toolbar.jsx +++ b/web/libs/datamanager/src/components/DataManager/Toolbar/Toolbar.jsx @@ -1,7 +1,7 @@ import { inject, observer } from "mobx-react"; import { cn } from "../../../utils/bem"; import { Space } from "../../Common/Space/Space"; -import "./TabPanel.scss"; +import "./TabPanel.prefix.css"; const injector = inject(({ store }) => { return { diff --git a/web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.jsx b/web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.jsx index 9d2f3c4b5fcb..4c5a3002b036 100644 --- a/web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.jsx +++ b/web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.jsx @@ -4,7 +4,7 @@ import { cn } from "../../../utils/bem"; import { Button, Badge } from "@humansignal/ui"; import { IconClose } from "@humansignal/icons"; import { FilterDropdown } from "../FilterDropdown"; -import "./FilterLine.scss"; +import "./FilterLine.prefix.css"; import { FilterOperation } from "./FilterOperation"; import { Icon } from "../../Common/Icon/Icon"; import { diff --git a/web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.scss b/web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.scss rename to web/libs/datamanager/src/components/Filters/FilterLine/FilterLine.prefix.css diff --git a/web/libs/datamanager/src/components/Filters/Filters.jsx b/web/libs/datamanager/src/components/Filters/Filters.jsx index 87ff5cd3d387..742e94049ec4 100644 --- a/web/libs/datamanager/src/components/Filters/Filters.jsx +++ b/web/libs/datamanager/src/components/Filters/Filters.jsx @@ -5,7 +5,7 @@ import { Button } from "@humansignal/ui"; import { FilterLine } from "./FilterLine/FilterLine"; import { IconChevronRight, IconPlus, IconCopyOutline, IconClipboardCheck, IconUndo } from "@humansignal/icons"; import { useRecentFilters } from "../../hooks/useRecentFilters"; -import "./Filters.scss"; +import "./Filters.prefix.css"; const injector = inject(({ store }) => ({ store, diff --git a/web/libs/datamanager/src/components/Filters/Filters.scss b/web/libs/datamanager/src/components/Filters/Filters.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Filters/Filters.scss rename to web/libs/datamanager/src/components/Filters/Filters.prefix.css diff --git a/web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.jsx b/web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.jsx index fd7dfb712a6c..30086f129ef1 100644 --- a/web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.jsx +++ b/web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.jsx @@ -3,7 +3,7 @@ import { IconChevronLeft } from "@humansignal/icons"; import { cn } from "../../../utils/bem"; import { Button } from "@humansignal/ui"; import { Filters } from "../Filters"; -import "./FilterSidebar.scss"; +import "./FilterSidebar.prefix.css"; const sidebarInjector = inject(({ store }) => { const viewsStore = store.viewsStore; diff --git a/web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.scss b/web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.scss rename to web/libs/datamanager/src/components/Filters/FiltersSidebar/FilterSidebar.prefix.css diff --git a/web/libs/datamanager/src/components/Label/Label.jsx b/web/libs/datamanager/src/components/Label/Label.jsx index 807ac9855a80..f2ae9e1bd1d1 100644 --- a/web/libs/datamanager/src/components/Label/Label.jsx +++ b/web/libs/datamanager/src/components/Label/Label.jsx @@ -9,7 +9,7 @@ import { Icon } from "../Common/Icon/Icon"; import { Resizer } from "../Common/Resizer/Resizer"; import { Space } from "../Common/Space/Space"; import { DataView } from "../MainView"; -import "./Label.scss"; +import "./Label.prefix.css"; // Todo: consider renaming this file to something like LabelingWrapper as it is not a Label component const LabelingHeader = ({ SDK, onClick, isExplorerMode }) => { diff --git a/web/libs/datamanager/src/components/Label/Label.scss b/web/libs/datamanager/src/components/Label/Label.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/Label/Label.scss rename to web/libs/datamanager/src/components/Label/Label.prefix.css diff --git a/web/libs/datamanager/src/components/MainView/DataView/Table.jsx b/web/libs/datamanager/src/components/MainView/DataView/Table.jsx index 1bde4ee6b069..bfc38f77764e 100644 --- a/web/libs/datamanager/src/components/MainView/DataView/Table.jsx +++ b/web/libs/datamanager/src/components/MainView/DataView/Table.jsx @@ -11,7 +11,7 @@ import { Icon } from "../../Common/Icon/Icon"; import { Spinner } from "../../Common/Spinner"; import { Table } from "../../Common/Table/Table"; import { GridView } from "../GridView/GridView"; -import "./Table.scss"; +import "./Table.prefix.css"; import { Button } from "@humansignal/ui"; import { useEffect, useState } from "react"; import { EmptyState } from "./empty-state"; diff --git a/web/libs/datamanager/src/components/MainView/DataView/Table.scss b/web/libs/datamanager/src/components/MainView/DataView/Table.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/MainView/DataView/Table.scss rename to web/libs/datamanager/src/components/MainView/DataView/Table.prefix.css diff --git a/web/libs/datamanager/src/components/MainView/GridView/GridPreview.module.scss b/web/libs/datamanager/src/components/MainView/GridView/GridPreview.module.css similarity index 100% rename from web/libs/datamanager/src/components/MainView/GridView/GridPreview.module.scss rename to web/libs/datamanager/src/components/MainView/GridView/GridPreview.module.css diff --git a/web/libs/datamanager/src/components/MainView/GridView/GridPreview.tsx b/web/libs/datamanager/src/components/MainView/GridView/GridPreview.tsx index 89e63b68aa1e..c2ccb4f119e2 100644 --- a/web/libs/datamanager/src/components/MainView/GridView/GridPreview.tsx +++ b/web/libs/datamanager/src/components/MainView/GridView/GridPreview.tsx @@ -8,7 +8,7 @@ import { Icon } from "../../Common/Icon/Icon"; import { Tooltip } from "@humansignal/ui"; import { ImagePreview } from "./ImagePreview"; -import styles from "./GridPreview.module.scss"; +import styles from "./GridPreview.module.css"; type Task = { id: number; diff --git a/web/libs/datamanager/src/components/MainView/GridView/GridView.jsx b/web/libs/datamanager/src/components/MainView/GridView/GridView.jsx index 6a60f2d83cb0..e60e1afd2a2e 100644 --- a/web/libs/datamanager/src/components/MainView/GridView/GridView.jsx +++ b/web/libs/datamanager/src/components/MainView/GridView/GridView.jsx @@ -11,7 +11,7 @@ import * as DataGroups from "../../DataGroups"; import { FF_LOPS_E_3, isFF } from "../../../utils/feature-flags"; import { SkeletonLoader } from "../../Common/SkeletonLoader"; import { GridViewContext, GridViewProvider } from "./GridPreview"; -import "./GridView.scss"; +import "./GridView.prefix.css"; import { groupBy } from "../../../utils/utils"; import { IMAGE_SIZE_COEFFICIENT } from "../../DataGroups/ImageDataGroup"; diff --git a/web/libs/datamanager/src/components/MainView/GridView/GridView.scss b/web/libs/datamanager/src/components/MainView/GridView/GridView.prefix.css similarity index 100% rename from web/libs/datamanager/src/components/MainView/GridView/GridView.scss rename to web/libs/datamanager/src/components/MainView/GridView/GridView.prefix.css diff --git a/web/libs/datamanager/src/components/MainView/GridView/ImagePreview.tsx b/web/libs/datamanager/src/components/MainView/GridView/ImagePreview.tsx index 72048b87c854..361a6c4d8729 100644 --- a/web/libs/datamanager/src/components/MainView/GridView/ImagePreview.tsx +++ b/web/libs/datamanager/src/components/MainView/GridView/ImagePreview.tsx @@ -1,6 +1,6 @@ import { useState, useRef, useEffect, type CSSProperties, useCallback } from "react"; import { observer } from "mobx-react"; -import styles from "./GridPreview.module.scss"; +import styles from "./GridPreview.module.css"; import { cn } from "@humansignal/ui"; const MAX_ZOOM = 20; diff --git a/web/libs/editor/jest.config.js b/web/libs/editor/jest.config.js index 3f52f3526e38..ce3d877ed552 100644 --- a/web/libs/editor/jest.config.js +++ b/web/libs/editor/jest.config.js @@ -66,7 +66,7 @@ module.exports = { "^konva": "konva/konva", "^keymaster": "identity-obj-proxy", "^react-konva-utils": "identity-obj-proxy", - "\\.(s[ac]ss|css|svg|png|jpe?g)$": "identity-obj-proxy", + "\\.(css|svg|png|jpe?g)$": "identity-obj-proxy", "^@adobe/css-tools$": "/../../__mocks__/@adobe/css-tools.js", "^@humansignal/ui": "/../ui/src/index.ts", ...pathsToModuleNameMapper(tsconfig.compilerOptions.paths, { diff --git a/web/libs/editor/src/assets/styles/global.scss b/web/libs/editor/src/assets/styles/global.prefix.css similarity index 99% rename from web/libs/editor/src/assets/styles/global.scss rename to web/libs/editor/src/assets/styles/global.prefix.css index bc5826ab782a..df8085d9188d 100644 --- a/web/libs/editor/src/assets/styles/global.scss +++ b/web/libs/editor/src/assets/styles/global.prefix.css @@ -1,4 +1,4 @@ -@import "./antd-no-reset"; +@import "./antd-no-reset.css"; /** Colors **/ diff --git a/web/libs/editor/src/common/Button/Button.scss b/web/libs/editor/src/common/Button/Button.prefix.css similarity index 100% rename from web/libs/editor/src/common/Button/Button.scss rename to web/libs/editor/src/common/Button/Button.prefix.css diff --git a/web/libs/editor/src/common/Button/Button.tsx b/web/libs/editor/src/common/Button/Button.tsx index 07b0ac064a39..5dd144704c7e 100644 --- a/web/libs/editor/src/common/Button/Button.tsx +++ b/web/libs/editor/src/common/Button/Button.tsx @@ -14,7 +14,7 @@ import { Hotkey } from "../../core/Hotkey"; import { useHotkey } from "../../hooks/useHotkey"; import { cn, type CNTagName } from "../../utils/bem"; import { isDefined } from "../../utils/utilities"; -import "./Button.scss"; +import "./Button.prefix.css"; type HTMLButtonProps = Omit, "type">; diff --git a/web/libs/editor/src/common/Icon/Icon.jsx b/web/libs/editor/src/common/Icon/Icon.jsx index 9562ac8c59e5..45ee40a2e25a 100644 --- a/web/libs/editor/src/common/Icon/Icon.jsx +++ b/web/libs/editor/src/common/Icon/Icon.jsx @@ -1,6 +1,6 @@ import React from "react"; import { cn } from "../../utils/bem"; -import "./Icon.scss"; +import "./Icon.prefix.css"; export const Icon = React.forwardRef(({ icon, ...props }, ref) => { return ( diff --git a/web/libs/editor/src/common/Icon/Icon.scss b/web/libs/editor/src/common/Icon/Icon.prefix.css similarity index 100% rename from web/libs/editor/src/common/Icon/Icon.scss rename to web/libs/editor/src/common/Icon/Icon.prefix.css diff --git a/web/libs/editor/src/common/Input/Input.jsx b/web/libs/editor/src/common/Input/Input.jsx index a57ab3b1935d..6a7e7c47cb70 100644 --- a/web/libs/editor/src/common/Input/Input.jsx +++ b/web/libs/editor/src/common/Input/Input.jsx @@ -1,7 +1,7 @@ import { forwardRef, useMemo } from "react"; import { cn } from "../../utils/bem"; import Label from "../Label/Label"; -import "./Input.scss"; +import "./Input.prefix.css"; const Input = forwardRef(({ label, className, required, labelProps, ghost, waiting, ...props }, ref) => { const rootClass = cn("input"); diff --git a/web/libs/editor/src/common/Input/Input.scss b/web/libs/editor/src/common/Input/Input.prefix.css similarity index 100% rename from web/libs/editor/src/common/Input/Input.scss rename to web/libs/editor/src/common/Input/Input.prefix.css diff --git a/web/libs/editor/src/common/Label/Label.jsx b/web/libs/editor/src/common/Label/Label.jsx index ff0eca475f5a..fea0db797a5e 100644 --- a/web/libs/editor/src/common/Label/Label.jsx +++ b/web/libs/editor/src/common/Label/Label.jsx @@ -1,6 +1,6 @@ import { createElement, forwardRef } from "react"; import { cn } from "../../utils/bem"; -import "./Label.scss"; +import "./Label.prefix.css"; export const Label = forwardRef( ({ text, children, required, placement, description, size, large, style, simple, flat }, ref) => { diff --git a/web/libs/editor/src/common/Label/Label.scss b/web/libs/editor/src/common/Label/Label.prefix.css similarity index 100% rename from web/libs/editor/src/common/Label/Label.scss rename to web/libs/editor/src/common/Label/Label.prefix.css diff --git a/web/libs/editor/src/common/Menu/Menu.jsx b/web/libs/editor/src/common/Menu/Menu.jsx index dbba79e1ab4b..1cf0d383c75e 100644 --- a/web/libs/editor/src/common/Menu/Menu.jsx +++ b/web/libs/editor/src/common/Menu/Menu.jsx @@ -1,7 +1,7 @@ import { forwardRef, useCallback, useMemo } from "react"; import { cn } from "../../utils/bem"; import { useDropdown } from "@humansignal/ui"; -import "./Menu.scss"; +import "./Menu.prefix.css"; import { MenuContext } from "./MenuContext"; import { MenuItem } from "./MenuItem"; diff --git a/web/libs/editor/src/common/Menu/Menu.scss b/web/libs/editor/src/common/Menu/Menu.prefix.css similarity index 100% rename from web/libs/editor/src/common/Menu/Menu.scss rename to web/libs/editor/src/common/Menu/Menu.prefix.css diff --git a/web/libs/editor/src/common/Pagination/Pagination.scss b/web/libs/editor/src/common/Pagination/Pagination.prefix.css similarity index 100% rename from web/libs/editor/src/common/Pagination/Pagination.scss rename to web/libs/editor/src/common/Pagination/Pagination.prefix.css diff --git a/web/libs/editor/src/common/Pagination/Pagination.tsx b/web/libs/editor/src/common/Pagination/Pagination.tsx index c25dbd762607..cc815744cfc5 100644 --- a/web/libs/editor/src/common/Pagination/Pagination.tsx +++ b/web/libs/editor/src/common/Pagination/Pagination.tsx @@ -2,7 +2,7 @@ import { type ChangeEvent, type FC, forwardRef, type KeyboardEvent, useCallback, import { cn } from "../../utils/bem"; import { Select } from "@humansignal/ui"; import { WithHotkey } from "../Hotkey/WithHotkey"; -import "./Pagination.scss"; +import "./Pagination.prefix.css"; interface PaginationProps { currentPage: number; diff --git a/web/libs/editor/src/common/RadioGroup/RadioGroup.jsx b/web/libs/editor/src/common/RadioGroup/RadioGroup.jsx index 1fbdd071f50b..068bb161f690 100644 --- a/web/libs/editor/src/common/RadioGroup/RadioGroup.jsx +++ b/web/libs/editor/src/common/RadioGroup/RadioGroup.jsx @@ -1,6 +1,6 @@ import React, { useState } from "react"; import { cn } from "../../utils/bem"; -import "./RadioGroup.scss"; +import "./RadioGroup.prefix.css"; const RadioContext = React.createContext(); diff --git a/web/libs/editor/src/common/RadioGroup/RadioGroup.scss b/web/libs/editor/src/common/RadioGroup/RadioGroup.prefix.css similarity index 100% rename from web/libs/editor/src/common/RadioGroup/RadioGroup.scss rename to web/libs/editor/src/common/RadioGroup/RadioGroup.prefix.css diff --git a/web/libs/editor/src/common/Range/Range.scss b/web/libs/editor/src/common/Range/Range.prefix.css similarity index 100% rename from web/libs/editor/src/common/Range/Range.scss rename to web/libs/editor/src/common/Range/Range.prefix.css diff --git a/web/libs/editor/src/common/Range/Range.tsx b/web/libs/editor/src/common/Range/Range.tsx index 371acf7e8fad..dd90baa4ef9b 100644 --- a/web/libs/editor/src/common/Range/Range.tsx +++ b/web/libs/editor/src/common/Range/Range.tsx @@ -2,7 +2,7 @@ import { type CSSProperties, type FC, type MouseEvent as RMouseEvent, useCallbac import { cn } from "../../utils/bem"; import { clamp, isDefined } from "../../utils/utilities"; import { useValueTracker } from "../Utils/useValueTracker"; -import "./Range.scss"; +import "./Range.prefix.css"; type RangeAlignment = "horizontal" | "vertical"; diff --git a/web/libs/editor/src/common/Space/Space.scss b/web/libs/editor/src/common/Space/Space.prefix.css similarity index 100% rename from web/libs/editor/src/common/Space/Space.scss rename to web/libs/editor/src/common/Space/Space.prefix.css diff --git a/web/libs/editor/src/common/Space/Space.tsx b/web/libs/editor/src/common/Space/Space.tsx index 9b5f55211d77..f12ace1f6bad 100644 --- a/web/libs/editor/src/common/Space/Space.tsx +++ b/web/libs/editor/src/common/Space/Space.tsx @@ -1,7 +1,7 @@ import type { CSSProperties, FC } from "react"; import { cn } from "../../utils/bem"; -import "./Space.scss"; +import "./Space.prefix.css"; export interface SpaceProps { direction?: "horizontal" | "vertical"; diff --git a/web/libs/editor/src/common/TextArea/TextArea.scss b/web/libs/editor/src/common/TextArea/TextArea.prefix.css similarity index 100% rename from web/libs/editor/src/common/TextArea/TextArea.scss rename to web/libs/editor/src/common/TextArea/TextArea.prefix.css diff --git a/web/libs/editor/src/common/TextArea/TextArea.tsx b/web/libs/editor/src/common/TextArea/TextArea.tsx index f898f4cddaed..77ed4c550cdd 100644 --- a/web/libs/editor/src/common/TextArea/TextArea.tsx +++ b/web/libs/editor/src/common/TextArea/TextArea.tsx @@ -3,7 +3,7 @@ import { debounce } from "@humansignal/core/lib/utils/debounce"; import { cn } from "../../utils/bem"; import { isMacOS } from "../../utils/utilities"; -import "./TextArea.scss"; +import "./TextArea.prefix.css"; import mergeRefs from "../Utils/mergeRefs"; export type ActionRefValue = { update?: (text?: string) => void; el?: RefObject }; diff --git a/web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.jsx b/web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.jsx index 81fbfd6ed9f3..620e27be3fd6 100644 --- a/web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.jsx +++ b/web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.jsx @@ -5,7 +5,7 @@ import { Button, Toggle } from "@humansignal/ui"; import { Space } from "../../common/Space/Space"; import { cn } from "../../utils/bem"; -import "./AutoAcceptToggle.scss"; +import "./AutoAcceptToggle.prefix.css"; // we need to inject all of them to trigger rerender on changes to suggestions const injector = inject(({ store }) => { diff --git a/web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.scss b/web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.prefix.css similarity index 100% rename from web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.scss rename to web/libs/editor/src/components/AnnotationTab/AutoAcceptToggle.prefix.css diff --git a/web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.jsx b/web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.jsx index 11f5114dc68d..3ec08ed91cdb 100644 --- a/web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.jsx +++ b/web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.jsx @@ -4,7 +4,7 @@ import { Space } from "../../common/Space/Space"; import { Toggle } from "@humansignal/ui"; import ToolsManager from "../../tools/Manager"; import { cn } from "../../utils/bem"; -import "./DynamicPreannotationsToggle.scss"; +import "./DynamicPreannotationsToggle.prefix.css"; export const DynamicPreannotationsToggle = inject("store")( observer(({ store }) => { diff --git a/web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.scss b/web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.prefix.css similarity index 100% rename from web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.scss rename to web/libs/editor/src/components/AnnotationTab/DynamicPreannotationsToggle.prefix.css diff --git a/web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.jsx b/web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.jsx index 75bac48c5159..2a2cdc752d11 100644 --- a/web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.jsx +++ b/web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.jsx @@ -4,7 +4,7 @@ import { IconBan, IconSparks, IconStar } from "@humansignal/icons"; import { Userpic } from "@humansignal/ui"; import { Space } from "../../common/Space/Space"; import { cn } from "../../utils/bem"; -import "./AnnotationTabs.scss"; +import "./AnnotationTabs.prefix.css"; export const EntityTab = observer( forwardRef( diff --git a/web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.scss b/web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.prefix.css similarity index 100% rename from web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.scss rename to web/libs/editor/src/components/AnnotationTabs/AnnotationTabs.prefix.css diff --git a/web/libs/editor/src/components/Annotations/Annotations.jsx b/web/libs/editor/src/components/Annotations/Annotations.jsx index 9f428282780f..c66df78295f7 100644 --- a/web/libs/editor/src/components/Annotations/Annotations.jsx +++ b/web/libs/editor/src/components/Annotations/Annotations.jsx @@ -15,7 +15,7 @@ import { } from "@ant-design/icons"; import Utils from "../../utils"; -import styles from "./Annotations.module.scss"; +import styles from "./Annotations.module.css"; /** @deprecated this file is not used; DraftPanel is moved to separate component */ diff --git a/web/libs/editor/src/components/Annotations/Annotations.module.scss b/web/libs/editor/src/components/Annotations/Annotations.module.css similarity index 100% rename from web/libs/editor/src/components/Annotations/Annotations.module.scss rename to web/libs/editor/src/components/Annotations/Annotations.module.css diff --git a/web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.scss b/web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.prefix.css similarity index 100% rename from web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.scss rename to web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.prefix.css diff --git a/web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.tsx b/web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.tsx index 8a9cafc65a83..3faf739e0029 100644 --- a/web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.tsx +++ b/web/libs/editor/src/components/AnnotationsCarousel/AnnotationButton.tsx @@ -37,7 +37,7 @@ import { isFF } from "../../utils/feature-flags"; import { confirm } from "../../common/Modal/Modal"; import { type ContextMenuAction, ContextMenu, type MenuActionOnClick } from "../ContextMenu"; import { useResolveUser, isUserComplete } from "@humansignal/core/hooks/useResolveUser"; -import "./AnnotationButton.scss"; +import "./AnnotationButton.prefix.css"; // Constants for name truncation const NAME_TRUNCATE_START = 8; diff --git a/web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.scss b/web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.prefix.css similarity index 100% rename from web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.scss rename to web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.prefix.css diff --git a/web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.tsx b/web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.tsx index 6e28bc31ba3b..c06e05770b1a 100644 --- a/web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.tsx +++ b/web/libs/editor/src/components/AnnotationsCarousel/AnnotationsCarousel.tsx @@ -7,7 +7,7 @@ import { cn } from "../../utils/bem"; import { clamp, sortAnnotations } from "../../utils/utilities"; import { isActive, FF_FIT_720_LAZY_LOAD_ANNOTATIONS } from "@humansignal/core/lib/utils/feature-flags"; import { AnnotationButton } from "./AnnotationButton"; -import "./AnnotationsCarousel.scss"; +import "./AnnotationsCarousel.prefix.css"; const ITEM_WIDTH = 200; // Approximate width of each annotation button (min-width: 186px + gap) const ITEM_GAP = 4; // Gap between items (--spacing-tighter) diff --git a/web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.scss b/web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.prefix.css similarity index 100% rename from web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.scss rename to web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.prefix.css diff --git a/web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.tsx b/web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.tsx index 26332c3984f7..cfcbff88f1e4 100644 --- a/web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.tsx +++ b/web/libs/editor/src/components/AnnotationsCarousel/ViewAllToggle.tsx @@ -2,7 +2,7 @@ import { observer } from "mobx-react"; import { IconViewAll } from "@humansignal/icons"; import { Typography } from "@humansignal/ui"; import { cn } from "../../utils/bem"; -import "./ViewAllToggle.scss"; +import "./ViewAllToggle.prefix.css"; interface ViewAllToggleProps { isActive: boolean; diff --git a/web/libs/editor/src/components/App/App.jsx b/web/libs/editor/src/components/App/App.jsx index 00b7ea2c076c..df9b97230cd3 100644 --- a/web/libs/editor/src/components/App/App.jsx +++ b/web/libs/editor/src/components/App/App.jsx @@ -51,7 +51,7 @@ import { ViewAll } from "./ViewAll"; /** * Styles */ -import "./App.scss"; +import "./App.prefix.css"; /** * Check if annotation has any tag that should be rendered in sidebar diff --git a/web/libs/editor/src/components/App/App.scss b/web/libs/editor/src/components/App/App.prefix.css similarity index 98% rename from web/libs/editor/src/components/App/App.scss rename to web/libs/editor/src/components/App/App.prefix.css index 4ee1ba60dbe3..b3922761e884 100644 --- a/web/libs/editor/src/components/App/App.scss +++ b/web/libs/editor/src/components/App/App.prefix.css @@ -1,4 +1,4 @@ -@import "../../assets/styles/global"; +@import "../../assets/styles/global.prefix.css"; body { background: var(--color-neutral-background); diff --git a/web/libs/editor/src/components/App/Grid.jsx b/web/libs/editor/src/components/App/Grid.jsx index 6d37924ce304..5b5fcccf3d57 100644 --- a/web/libs/editor/src/components/App/Grid.jsx +++ b/web/libs/editor/src/components/App/Grid.jsx @@ -10,7 +10,7 @@ import { LeftCircleOutlined, RightCircleOutlined } from "@ant-design/icons"; import { FixedSizeList as List } from "react-window"; import AutoSizer from "react-virtualized-auto-sizer"; import { observer } from "mobx-react"; -import styles from "./Grid.module.scss"; +import styles from "./Grid.module.css"; import { EntityTab } from "../AnnotationTabs/AnnotationTabs"; import { observe } from "mobx"; import Konva from "konva"; @@ -23,7 +23,7 @@ import { useAnnotationFetcher } from "../../hooks/useAnnotationQuery"; // FIT-720: Virtualization constants for Compare view const PANEL_WIDTH = 500; // Width of each annotation panel (approximately 50% of typical viewport) -const PANEL_GAP = 30; // Gap between panels (matches $gap in Grid.module.scss) +const PANEL_GAP = 30; // Gap between panels (matches $gap in Grid.module.css) /***** DON'T TRY THIS AT HOME *****/ /* diff --git a/web/libs/editor/src/components/App/Grid.module.scss b/web/libs/editor/src/components/App/Grid.module.css similarity index 92% rename from web/libs/editor/src/components/App/Grid.module.scss rename to web/libs/editor/src/components/App/Grid.module.css index 766feea4d6dd..ada83ed902c2 100644 --- a/web/libs/editor/src/components/App/Grid.module.scss +++ b/web/libs/editor/src/components/App/Grid.module.css @@ -1,5 +1,5 @@ /* Grid (View All mode) */ -@import "../../assets/styles/global"; +@import "../../assets/styles/global.prefix.css"; .grid { flex-grow: 1; @@ -34,7 +34,7 @@ .container { position: relative; flex-grow: 1; - min-width: 0; // famous flex hack to prevent block from growing enormously + min-width: 0; /* famous flex hack to prevent block from growing enormously */ margin-top: var(--spacing-tight); &::before, @@ -63,7 +63,7 @@ position: relative; flex-grow: 1; min-width: 0; - height: calc(100vh - 200px); // Account for header/tabs + height: calc(100vh - 200px); /* Account for header/tabs */ min-height: 400px; } diff --git a/web/libs/editor/src/components/BottomBar/Actions.jsx b/web/libs/editor/src/components/BottomBar/Actions.jsx index 164de303239d..ea5e2e31070c 100644 --- a/web/libs/editor/src/components/BottomBar/Actions.jsx +++ b/web/libs/editor/src/components/BottomBar/Actions.jsx @@ -7,7 +7,7 @@ import { AutoAcceptToggle } from "../AnnotationTab/AutoAcceptToggle"; import { DynamicPreannotationsToggle } from "../AnnotationTab/DynamicPreannotationsToggle"; import { GroundTruth } from "../CurrentEntity/GroundTruth"; import { EditingHistory } from "./HistoryActions"; -import "./Actions.scss"; +import "./Actions.prefix.css"; export const Actions = ({ store }) => { const annotationStore = store.annotationStore; diff --git a/web/libs/editor/src/components/BottomBar/Actions.scss b/web/libs/editor/src/components/BottomBar/Actions.prefix.css similarity index 100% rename from web/libs/editor/src/components/BottomBar/Actions.scss rename to web/libs/editor/src/components/BottomBar/Actions.prefix.css diff --git a/web/libs/editor/src/components/BottomBar/BottomBar.jsx b/web/libs/editor/src/components/BottomBar/BottomBar.jsx index bcc53351af5f..a4b2658ada24 100644 --- a/web/libs/editor/src/components/BottomBar/BottomBar.jsx +++ b/web/libs/editor/src/components/BottomBar/BottomBar.jsx @@ -5,7 +5,7 @@ import { FF_BULK_ANNOTATION, isFF } from "../../utils/feature-flags"; import { Actions } from "./Actions"; import { Controls } from "./Controls"; import { CurrentTask } from "./CurrentTask"; -import "./BottomBar.scss"; +import "./BottomBar.prefix.css"; export const BottomBar = observer(({ store }) => { const annotationStore = store.annotationStore; diff --git a/web/libs/editor/src/components/BottomBar/BottomBar.scss b/web/libs/editor/src/components/BottomBar/BottomBar.prefix.css similarity index 100% rename from web/libs/editor/src/components/BottomBar/BottomBar.scss rename to web/libs/editor/src/components/BottomBar/BottomBar.prefix.css diff --git a/web/libs/editor/src/components/BottomBar/Controls.scss b/web/libs/editor/src/components/BottomBar/Controls.prefix.css similarity index 100% rename from web/libs/editor/src/components/BottomBar/Controls.scss rename to web/libs/editor/src/components/BottomBar/Controls.prefix.css diff --git a/web/libs/editor/src/components/BottomBar/Controls.tsx b/web/libs/editor/src/components/BottomBar/Controls.tsx index fd1142dd2006..c4445a58a106 100644 --- a/web/libs/editor/src/components/BottomBar/Controls.tsx +++ b/web/libs/editor/src/components/BottomBar/Controls.tsx @@ -24,7 +24,7 @@ import { UnskipButton, } from "./buttons"; -import "./Controls.scss"; +import "./Controls.prefix.css"; // these buttons can be reused inside custom buttons or can be replaces with custom buttons type SupportedInternalButtons = "accept" | "reject"; diff --git a/web/libs/editor/src/components/BottomBar/CurrentTask.jsx b/web/libs/editor/src/components/BottomBar/CurrentTask.jsx index d4ca2aee2035..c32c76ed09d5 100644 --- a/web/libs/editor/src/components/BottomBar/CurrentTask.jsx +++ b/web/libs/editor/src/components/BottomBar/CurrentTask.jsx @@ -6,7 +6,7 @@ import { cn } from "../../utils/bem"; import { FF_DEV_4174, FF_LEAP_1173, FF_TASK_COUNT_FIX, isFF } from "../../utils/feature-flags"; import { guidGenerator } from "../../utils/unique"; import { isDefined } from "../../utils/utilities"; -import "./CurrentTask.scss"; +import "./CurrentTask.prefix.css"; import { reaction } from "mobx"; // Manager roles that can force-skip unskippable tasks (OW=Owner, AD=Admin, MA=Manager) diff --git a/web/libs/editor/src/components/BottomBar/CurrentTask.scss b/web/libs/editor/src/components/BottomBar/CurrentTask.prefix.css similarity index 100% rename from web/libs/editor/src/components/BottomBar/CurrentTask.scss rename to web/libs/editor/src/components/BottomBar/CurrentTask.prefix.css diff --git a/web/libs/editor/src/components/BottomBar/HistoryActions.jsx b/web/libs/editor/src/components/BottomBar/HistoryActions.jsx index 0e105d83b0bc..69dee34bec79 100644 --- a/web/libs/editor/src/components/BottomBar/HistoryActions.jsx +++ b/web/libs/editor/src/components/BottomBar/HistoryActions.jsx @@ -2,7 +2,7 @@ import { observer } from "mobx-react"; import { IconRedo, IconReset, IconUndo } from "@humansignal/icons"; import { Tooltip, Button } from "@humansignal/ui"; import { cn } from "../../utils/bem"; -import "./HistoryActions.scss"; +import "./HistoryActions.prefix.css"; export const EditingHistory = observer(({ entity }) => { const { history } = entity; diff --git a/web/libs/editor/src/components/BottomBar/HistoryActions.scss b/web/libs/editor/src/components/BottomBar/HistoryActions.prefix.css similarity index 100% rename from web/libs/editor/src/components/BottomBar/HistoryActions.scss rename to web/libs/editor/src/components/BottomBar/HistoryActions.prefix.css diff --git a/web/libs/editor/src/components/Choice/Choice.module.scss b/web/libs/editor/src/components/Choice/Choice.module.css similarity index 100% rename from web/libs/editor/src/components/Choice/Choice.module.scss rename to web/libs/editor/src/components/Choice/Choice.module.css diff --git a/web/libs/editor/src/components/Comments/Comment/CommentForm.scss b/web/libs/editor/src/components/Comments/Comment/CommentForm.prefix.css similarity index 100% rename from web/libs/editor/src/components/Comments/Comment/CommentForm.scss rename to web/libs/editor/src/components/Comments/Comment/CommentForm.prefix.css diff --git a/web/libs/editor/src/components/Comments/Comment/CommentForm.tsx b/web/libs/editor/src/components/Comments/Comment/CommentForm.tsx index 3991f04e2851..6c01587428e2 100644 --- a/web/libs/editor/src/components/Comments/Comment/CommentForm.tsx +++ b/web/libs/editor/src/components/Comments/Comment/CommentForm.tsx @@ -8,7 +8,7 @@ import type { ActionRefValue } from "../../../common/TextArea/TextArea"; import { cn } from "../../../utils/bem"; import { LinkState } from "./LinkState"; -import "./CommentForm.scss"; +import "./CommentForm.prefix.css"; import { NewTaxonomy as Taxonomy, type TaxonomyPath } from "../../../components/NewTaxonomy/NewTaxonomy"; import { CommentFormButtons } from "./CommentFormButtons"; import { taxonomyPathsToSelectedItems, COMMENT_TAXONOMY_OPTIONS } from "../../../utils/commentClassification"; diff --git a/web/libs/editor/src/components/Comments/Comment/CommentFormButtons.scss b/web/libs/editor/src/components/Comments/Comment/CommentFormButtons.prefix.css similarity index 100% rename from web/libs/editor/src/components/Comments/Comment/CommentFormButtons.scss rename to web/libs/editor/src/components/Comments/Comment/CommentFormButtons.prefix.css diff --git a/web/libs/editor/src/components/Comments/Comment/CommentFormButtons.tsx b/web/libs/editor/src/components/Comments/Comment/CommentFormButtons.tsx index 9e67684de49a..b21d97e7c084 100644 --- a/web/libs/editor/src/components/Comments/Comment/CommentFormButtons.tsx +++ b/web/libs/editor/src/components/Comments/Comment/CommentFormButtons.tsx @@ -3,7 +3,7 @@ import type { MouseEventHandler } from "react"; import { IconCommentLinkTo, IconSend } from "@humansignal/icons"; import { Tooltip } from "@humansignal/ui"; import { cn } from "../../../utils/bem"; -import "./CommentFormButtons.scss"; +import "./CommentFormButtons.prefix.css"; export const CommentFormButtons = ({ region, diff --git a/web/libs/editor/src/components/Comments/Comment/CommentItem.scss b/web/libs/editor/src/components/Comments/Comment/CommentItem.prefix.css similarity index 100% rename from web/libs/editor/src/components/Comments/Comment/CommentItem.scss rename to web/libs/editor/src/components/Comments/Comment/CommentItem.prefix.css diff --git a/web/libs/editor/src/components/Comments/Comment/CommentItem.tsx b/web/libs/editor/src/components/Comments/Comment/CommentItem.tsx index f26b9fd3ed1b..60ef41e52d67 100644 --- a/web/libs/editor/src/components/Comments/Comment/CommentItem.tsx +++ b/web/libs/editor/src/components/Comments/Comment/CommentItem.tsx @@ -15,7 +15,7 @@ import { CommentsContext } from "./CommentsList"; import { NewTaxonomy as Taxonomy, type TaxonomyPath } from "../../../components/NewTaxonomy/NewTaxonomy"; import { taxonomyPathsToSelectedItems, COMMENT_TAXONOMY_OPTIONS } from "../../../utils/commentClassification"; -import "./CommentItem.scss"; +import "./CommentItem.prefix.css"; import { LinkState } from "./LinkState"; interface CommentItemProps { diff --git a/web/libs/editor/src/components/Comments/Comment/LinkState.scss b/web/libs/editor/src/components/Comments/Comment/LinkState.prefix.css similarity index 100% rename from web/libs/editor/src/components/Comments/Comment/LinkState.scss rename to web/libs/editor/src/components/Comments/Comment/LinkState.prefix.css diff --git a/web/libs/editor/src/components/Comments/Comment/LinkState.tsx b/web/libs/editor/src/components/Comments/Comment/LinkState.tsx index 02a7fcd18e31..685810aa6cb7 100644 --- a/web/libs/editor/src/components/Comments/Comment/LinkState.tsx +++ b/web/libs/editor/src/components/Comments/Comment/LinkState.tsx @@ -7,7 +7,7 @@ import { cn } from "../../../utils/bem"; import { NodeIcon } from "../../Node/Node"; import { RegionLabel } from "../../SidePanels/OutlinerPanel/RegionLabel"; -import "./LinkState.scss"; +import "./LinkState.prefix.css"; type LinkStateProps = { linking: boolean; diff --git a/web/libs/editor/src/components/Comments/Comments.scss b/web/libs/editor/src/components/Comments/Comments.prefix.css similarity index 100% rename from web/libs/editor/src/components/Comments/Comments.scss rename to web/libs/editor/src/components/Comments/Comments.prefix.css diff --git a/web/libs/editor/src/components/Comments/Comments.tsx b/web/libs/editor/src/components/Comments/Comments.tsx index aac99aa1cb71..1fd5977aeef7 100644 --- a/web/libs/editor/src/components/Comments/Comments.tsx +++ b/web/libs/editor/src/components/Comments/Comments.tsx @@ -9,7 +9,7 @@ import { useMounted } from "../../common/Utils/useMounted"; import { FF_DEV_3034, isFF } from "../../utils/feature-flags"; import { FF_FIT_720_LAZY_LOAD_ANNOTATIONS } from "@humansignal/core/lib/utils/feature-flags"; -import "./Comments.scss"; +import "./Comments.prefix.css"; // FIT-720: Skeleton loader for comments while fetching const CommentsLoadingSkeleton: FC = () => ( diff --git a/web/libs/editor/src/components/ContextMenu/ContextMenu.module.scss b/web/libs/editor/src/components/ContextMenu/ContextMenu.module.css similarity index 100% rename from web/libs/editor/src/components/ContextMenu/ContextMenu.module.scss rename to web/libs/editor/src/components/ContextMenu/ContextMenu.module.css diff --git a/web/libs/editor/src/components/ContextMenu/ContextMenu.tsx b/web/libs/editor/src/components/ContextMenu/ContextMenu.tsx index 87f2984ced6e..abaf073a5331 100644 --- a/web/libs/editor/src/components/ContextMenu/ContextMenu.tsx +++ b/web/libs/editor/src/components/ContextMenu/ContextMenu.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import clsx from "clsx"; import { Dropdown, useDropdown } from "@humansignal/ui"; import { IconEllipsisVertical } from "@humansignal/icons"; -import styles from "./ContextMenu.module.scss"; +import styles from "./ContextMenu.module.css"; export interface ContextMenuContext { dropdown: ReturnType; diff --git a/web/libs/editor/src/components/ContextMenu/index.ts b/web/libs/editor/src/components/ContextMenu/index.ts index e888a7951e37..78b5da51da67 100644 --- a/web/libs/editor/src/components/ContextMenu/index.ts +++ b/web/libs/editor/src/components/ContextMenu/index.ts @@ -1,2 +1,2 @@ export * from "./ContextMenu"; -export { default as contextMenuStyles } from "./ContextMenu.module.scss"; +export { default as contextMenuStyles } from "./ContextMenu.module.css"; diff --git a/web/libs/editor/src/components/Controls/Controls.jsx b/web/libs/editor/src/components/Controls/Controls.jsx index 537f0829707c..19fdaa2dcd0d 100644 --- a/web/libs/editor/src/components/Controls/Controls.jsx +++ b/web/libs/editor/src/components/Controls/Controls.jsx @@ -3,7 +3,7 @@ import { CheckCircleOutlined, CheckOutlined } from "@ant-design/icons"; import Hint from "../Hint/Hint"; import { DraftPanel } from "../Annotations/Annotations"; -import styles from "./Controls.module.scss"; +import styles from "./Controls.module.css"; import { Button, Tooltip } from "@humansignal/ui"; import { IconInfoOutline } from "@humansignal/icons"; import { cn } from "../../utils/bem"; diff --git a/web/libs/editor/src/components/Controls/Controls.module.scss b/web/libs/editor/src/components/Controls/Controls.module.css similarity index 94% rename from web/libs/editor/src/components/Controls/Controls.module.scss rename to web/libs/editor/src/components/Controls/Controls.module.css index 90adf7e77fba..6aa4c63e948c 100644 --- a/web/libs/editor/src/components/Controls/Controls.module.scss +++ b/web/libs/editor/src/components/Controls/Controls.module.css @@ -1,4 +1,4 @@ -@import "../../assets/styles/global"; +@import "../../assets/styles/global.prefix.css"; .task { opacity: 0.4; diff --git a/web/libs/editor/src/components/CurrentEntity/AnnotationHistory.scss b/web/libs/editor/src/components/CurrentEntity/AnnotationHistory.prefix.css similarity index 100% rename from web/libs/editor/src/components/CurrentEntity/AnnotationHistory.scss rename to web/libs/editor/src/components/CurrentEntity/AnnotationHistory.prefix.css diff --git a/web/libs/editor/src/components/CurrentEntity/AnnotationHistory.tsx b/web/libs/editor/src/components/CurrentEntity/AnnotationHistory.tsx index 76dee8df7972..c833675eb5d6 100644 --- a/web/libs/editor/src/components/CurrentEntity/AnnotationHistory.tsx +++ b/web/libs/editor/src/components/CurrentEntity/AnnotationHistory.tsx @@ -21,7 +21,7 @@ import { cn } from "../../utils/bem"; import { userDisplayName } from "@humansignal/core"; import { humanDateDiff } from "../../utils/utilities"; import { EmptyState } from "../SidePanels/Components/EmptyState"; -import "./AnnotationHistory.scss"; +import "./AnnotationHistory.prefix.css"; type HistoryItemType = | "prediction" diff --git a/web/libs/editor/src/components/CurrentEntity/GroundTruth.jsx b/web/libs/editor/src/components/CurrentEntity/GroundTruth.jsx index 5dee0962a263..c96609446801 100644 --- a/web/libs/editor/src/components/CurrentEntity/GroundTruth.jsx +++ b/web/libs/editor/src/components/CurrentEntity/GroundTruth.jsx @@ -2,7 +2,7 @@ import { observer } from "mobx-react"; import { IconStar, IconStarOutline } from "@humansignal/icons"; import { Button, Tooltip } from "@humansignal/ui"; import { cn } from "../../utils/bem"; -import "./GroundTruth.scss"; +import "./GroundTruth.prefix.css"; export const GroundTruth = observer(({ entity, disabled = false, size = "md" }) => { const title = entity.ground_truth ? "Unset this result as a ground truth" : "Set this result as a ground truth"; diff --git a/web/libs/editor/src/components/CurrentEntity/GroundTruth.scss b/web/libs/editor/src/components/CurrentEntity/GroundTruth.prefix.css similarity index 100% rename from web/libs/editor/src/components/CurrentEntity/GroundTruth.scss rename to web/libs/editor/src/components/CurrentEntity/GroundTruth.prefix.css diff --git a/web/libs/editor/src/components/Dialog/Dialog.jsx b/web/libs/editor/src/components/Dialog/Dialog.jsx index d8067e1445b3..6ab31fc6dffd 100644 --- a/web/libs/editor/src/components/Dialog/Dialog.jsx +++ b/web/libs/editor/src/components/Dialog/Dialog.jsx @@ -2,7 +2,7 @@ import React from "react"; import { PropTypes } from "prop-types"; import { Tag } from "antd"; -import styles from "./Dialog.module.scss"; +import styles from "./Dialog.module.css"; export default class DialogView extends React.Component { render() { diff --git a/web/libs/editor/src/components/Dialog/Dialog.module.scss b/web/libs/editor/src/components/Dialog/Dialog.module.css similarity index 100% rename from web/libs/editor/src/components/Dialog/Dialog.module.scss rename to web/libs/editor/src/components/Dialog/Dialog.module.css diff --git a/web/libs/editor/src/components/DraftPanel/DraftPanel.jsx b/web/libs/editor/src/components/DraftPanel/DraftPanel.jsx index 93d4a47fc780..67084d7c1b63 100644 --- a/web/libs/editor/src/components/DraftPanel/DraftPanel.jsx +++ b/web/libs/editor/src/components/DraftPanel/DraftPanel.jsx @@ -3,7 +3,7 @@ import { Button, Tooltip } from "@humansignal/ui"; import Utils from "../../utils"; import { cn } from "../../utils/bem"; -import "./DraftPanel.scss"; +import "./DraftPanel.prefix.css"; const panel = cn("draft-panel"); diff --git a/web/libs/editor/src/components/DraftPanel/DraftPanel.scss b/web/libs/editor/src/components/DraftPanel/DraftPanel.prefix.css similarity index 100% rename from web/libs/editor/src/components/DraftPanel/DraftPanel.scss rename to web/libs/editor/src/components/DraftPanel/DraftPanel.prefix.css diff --git a/web/libs/editor/src/components/ErrorMessage/ErrorMessage.jsx b/web/libs/editor/src/components/ErrorMessage/ErrorMessage.jsx index a0077da27983..f3609f6c334d 100644 --- a/web/libs/editor/src/components/ErrorMessage/ErrorMessage.jsx +++ b/web/libs/editor/src/components/ErrorMessage/ErrorMessage.jsx @@ -1,4 +1,4 @@ -import styles from "./ErrorMessage.module.scss"; +import styles from "./ErrorMessage.module.css"; import { sanitizeHtml } from "../../utils/html"; export const ErrorMessage = ({ error }) => { diff --git a/web/libs/editor/src/components/ErrorMessage/ErrorMessage.module.scss b/web/libs/editor/src/components/ErrorMessage/ErrorMessage.module.css similarity index 75% rename from web/libs/editor/src/components/ErrorMessage/ErrorMessage.module.scss rename to web/libs/editor/src/components/ErrorMessage/ErrorMessage.module.css index 90bc8f633efe..72cf6b050213 100644 --- a/web/libs/editor/src/components/ErrorMessage/ErrorMessage.module.scss +++ b/web/libs/editor/src/components/ErrorMessage/ErrorMessage.module.css @@ -9,6 +9,6 @@ white-space: normal; & + & { - margin: 0 0 16px; // in case we are in flex container, where margins don't collapse + margin: 0 0 16px; /* in case we are in flex container, where margins don't collapse */ } } diff --git a/web/libs/editor/src/components/Hint/Hint.module.scss b/web/libs/editor/src/components/Hint/Hint.module.css similarity index 100% rename from web/libs/editor/src/components/Hint/Hint.module.scss rename to web/libs/editor/src/components/Hint/Hint.module.css diff --git a/web/libs/editor/src/components/Hint/Hint.scss b/web/libs/editor/src/components/Hint/Hint.prefix.css similarity index 100% rename from web/libs/editor/src/components/Hint/Hint.scss rename to web/libs/editor/src/components/Hint/Hint.prefix.css diff --git a/web/libs/editor/src/components/Hint/Hint.tsx b/web/libs/editor/src/components/Hint/Hint.tsx index b9feacc1ed15..58456f544bd9 100644 --- a/web/libs/editor/src/components/Hint/Hint.tsx +++ b/web/libs/editor/src/components/Hint/Hint.tsx @@ -1,7 +1,7 @@ import type { CSSProperties, FC } from "react"; import { cn } from "../../utils/bem"; -import "./Hint.scss"; +import "./Hint.prefix.css"; interface HintProps { copy?: string; diff --git a/web/libs/editor/src/components/HtxTextBox/HtxTextBox.module.scss b/web/libs/editor/src/components/HtxTextBox/HtxTextBox.module.css similarity index 100% rename from web/libs/editor/src/components/HtxTextBox/HtxTextBox.module.scss rename to web/libs/editor/src/components/HtxTextBox/HtxTextBox.module.css diff --git a/web/libs/editor/src/components/ImageView/Image.jsx b/web/libs/editor/src/components/ImageView/Image.jsx index bf0d4c3f3a04..89d02fd3b0d0 100644 --- a/web/libs/editor/src/components/ImageView/Image.jsx +++ b/web/libs/editor/src/components/ImageView/Image.jsx @@ -3,7 +3,7 @@ import { forwardRef, useCallback, useMemo } from "react"; import { cn } from "../../utils/bem"; import messages from "../../utils/messages"; import { ErrorMessage } from "../ErrorMessage/ErrorMessage"; -import "./Image.scss"; +import "./Image.prefix.css"; /** * Coordinates in relative mode belong to a data domain consisting of percentages in the range from 0 to 100 diff --git a/web/libs/editor/src/components/ImageView/Image.scss b/web/libs/editor/src/components/ImageView/Image.prefix.css similarity index 100% rename from web/libs/editor/src/components/ImageView/Image.scss rename to web/libs/editor/src/components/ImageView/Image.prefix.css diff --git a/web/libs/editor/src/components/ImageView/ImageView.jsx b/web/libs/editor/src/components/ImageView/ImageView.jsx index ce284b01173c..7e9be8ca7770 100644 --- a/web/libs/editor/src/components/ImageView/ImageView.jsx +++ b/web/libs/editor/src/components/ImageView/ImageView.jsx @@ -7,7 +7,7 @@ import ImageGrid from "../ImageGrid/ImageGrid"; import ImageTransformer from "../ImageTransformer/ImageTransformer"; import ObjectTag from "../../components/Tags/Object"; import Tree from "../../core/Tree"; -import styles from "./ImageView.module.scss"; +import styles from "./ImageView.module.css"; import { errorBuilder } from "../../core/DataValidator/ConfigValidator"; import { chunks, findClosestParent } from "../../utils/utilities"; import Konva from "konva"; diff --git a/web/libs/editor/src/components/ImageView/ImageView.module.scss b/web/libs/editor/src/components/ImageView/ImageView.module.css similarity index 100% rename from web/libs/editor/src/components/ImageView/ImageView.module.scss rename to web/libs/editor/src/components/ImageView/ImageView.module.css diff --git a/web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.module.scss b/web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.module.css similarity index 100% rename from web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.module.scss rename to web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.module.css diff --git a/web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.tsx b/web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.tsx index 2d30a3e19d53..c2a8906f55b1 100644 --- a/web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.tsx +++ b/web/libs/editor/src/components/InteractiveOverlays/CommentsOverlay.tsx @@ -7,7 +7,7 @@ import ResizeObserver from "../../utils/resize-observer"; import { guidGenerator } from "../../utils/unique"; import NodesConnector from "./NodesConnector"; -import styles from "./CommentsOverlay.module.scss"; +import styles from "./CommentsOverlay.module.css"; const CommentIcon = () => { return ( diff --git a/web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.jsx b/web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.jsx index 431198f5b35b..75a618e32cd5 100644 --- a/web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.jsx +++ b/web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.jsx @@ -8,7 +8,7 @@ import { FF_DEV_3391, isFF } from "../../utils/feature-flags"; import { isDefined } from "../../utils/utilities"; import NodesConnector from "./NodesConnector"; -import styles from "./RelationsOverlay.module.scss"; +import styles from "./RelationsOverlay.module.css"; const ArrowMarker = ({ id, color }) => { return ( diff --git a/web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.module.scss b/web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.module.css similarity index 100% rename from web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.module.scss rename to web/libs/editor/src/components/InteractiveOverlays/RelationsOverlay.module.css diff --git a/web/libs/editor/src/components/Label/Label.jsx b/web/libs/editor/src/components/Label/Label.jsx index 115906538bc9..2ba3603be504 100644 --- a/web/libs/editor/src/components/Label/Label.jsx +++ b/web/libs/editor/src/components/Label/Label.jsx @@ -3,7 +3,7 @@ import React, { useMemo } from "react"; import { cn } from "../../utils/bem"; import { asVars } from "../../utils/styles"; -import "./Label.scss"; +import "./Label.prefix.css"; export const Label = React.forwardRef( ( diff --git a/web/libs/editor/src/components/Label/Label.scss b/web/libs/editor/src/components/Label/Label.prefix.css similarity index 100% rename from web/libs/editor/src/components/Label/Label.scss rename to web/libs/editor/src/components/Label/Label.prefix.css diff --git a/web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.scss b/web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.prefix.css similarity index 100% rename from web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.scss rename to web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.prefix.css diff --git a/web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.tsx b/web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.tsx index 6c6cfa475aec..b329c1a50b3b 100644 --- a/web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.tsx +++ b/web/libs/editor/src/components/NewTaxonomy/NewTaxonomy.tsx @@ -4,7 +4,7 @@ import { type ReactNode, useCallback, useEffect, useRef, useState } from "react" import { Tooltip } from "@humansignal/ui"; -import "./NewTaxonomy.scss"; +import "./NewTaxonomy.prefix.css"; import { TaxonomySearch, type TaxonomySearchRef } from "./TaxonomySearch"; export type TaxonomyPath = string[]; diff --git a/web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.scss b/web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.prefix.css similarity index 100% rename from web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.scss rename to web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.prefix.css diff --git a/web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.tsx b/web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.tsx index 6cdf4bf35d94..cedd07be8407 100644 --- a/web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.tsx +++ b/web/libs/editor/src/components/NewTaxonomy/TaxonomySearch.tsx @@ -8,7 +8,7 @@ import React, { useState, } from "react"; -import "./TaxonomySearch.scss"; +import "./TaxonomySearch.prefix.css"; import { cn } from "../../utils/bem"; import type { AntTaxonomyItem } from "./NewTaxonomy"; import { debounce } from "@humansignal/core/lib/utils/debounce"; diff --git a/web/libs/editor/src/components/Node/Node.scss b/web/libs/editor/src/components/Node/Node.prefix.css similarity index 100% rename from web/libs/editor/src/components/Node/Node.scss rename to web/libs/editor/src/components/Node/Node.prefix.css diff --git a/web/libs/editor/src/components/Node/Node.tsx b/web/libs/editor/src/components/Node/Node.tsx index 013fa1229db3..3810f208418c 100644 --- a/web/libs/editor/src/components/Node/Node.tsx +++ b/web/libs/editor/src/components/Node/Node.tsx @@ -4,7 +4,7 @@ import { observer } from "mobx-react"; import { ApartmentOutlined, AudioOutlined, LineChartOutlined, MessageOutlined } from "@ant-design/icons"; import Registry from "../../core/Registry"; -import "./Node.scss"; +import "./Node.prefix.css"; import { IconBrushTool, IconBrushToolSmart, diff --git a/web/libs/editor/src/components/Panel/Panel.jsx b/web/libs/editor/src/components/Panel/Panel.jsx index bffc190403d9..c2c61ba21207 100644 --- a/web/libs/editor/src/components/Panel/Panel.jsx +++ b/web/libs/editor/src/components/Panel/Panel.jsx @@ -9,7 +9,7 @@ import { UndoOutlined, } from "@ant-design/icons"; -import styles from "./Panel.module.scss"; +import styles from "./Panel.module.css"; import Hint from "../Hint/Hint"; /** diff --git a/web/libs/editor/src/components/Panel/Panel.module.scss b/web/libs/editor/src/components/Panel/Panel.module.css similarity index 91% rename from web/libs/editor/src/components/Panel/Panel.module.scss rename to web/libs/editor/src/components/Panel/Panel.module.css index 3c175d9ba57e..68c04b0e443c 100644 --- a/web/libs/editor/src/components/Panel/Panel.module.scss +++ b/web/libs/editor/src/components/Panel/Panel.module.css @@ -1,4 +1,4 @@ -@import "../../assets/styles/global"; +@import "../../assets/styles/global.prefix.css"; .container { display: flex; diff --git a/web/libs/editor/src/components/Ranker/Column.tsx b/web/libs/editor/src/components/Ranker/Column.tsx index 5a465b0b3b2d..68927db49cbd 100644 --- a/web/libs/editor/src/components/Ranker/Column.tsx +++ b/web/libs/editor/src/components/Ranker/Column.tsx @@ -5,7 +5,7 @@ import Item from "./Item"; import { CollapsedContext } from "./Ranker"; import { StrictModeDroppable } from "./StrictModeDroppable"; -import styles from "./Ranker.module.scss"; +import styles from "./Ranker.module.css"; import { Button, Typography } from "@humansignal/ui"; import { IconChevron, IconChevronDown } from "@humansignal/icons"; diff --git a/web/libs/editor/src/components/Ranker/Item.tsx b/web/libs/editor/src/components/Ranker/Item.tsx index 8a3ad7c1bc41..9827f6785bcd 100644 --- a/web/libs/editor/src/components/Ranker/Item.tsx +++ b/web/libs/editor/src/components/Ranker/Item.tsx @@ -7,7 +7,7 @@ import { CollapsedContext } from "./Ranker"; import { IconChevron, IconChevronDown } from "@humansignal/icons"; import { Button, Typography } from "@humansignal/ui"; -import styles from "./Ranker.module.scss"; +import styles from "./Ranker.module.css"; interface ItemProps { item: InputItem; diff --git a/web/libs/editor/src/components/Ranker/Ranker.module.scss b/web/libs/editor/src/components/Ranker/Ranker.module.css similarity index 96% rename from web/libs/editor/src/components/Ranker/Ranker.module.scss rename to web/libs/editor/src/components/Ranker/Ranker.module.css index 346f340e2dff..aa1ac65cb69a 100644 --- a/web/libs/editor/src/components/Ranker/Ranker.module.scss +++ b/web/libs/editor/src/components/Ranker/Ranker.module.css @@ -38,7 +38,7 @@ } & h3 { - font-size: 1.5rem; /* Special case to override the too restrictive and generalistic Config.scss */ + font-size: 1.5rem; /* Special case to override the too restrictive and generalistic Config.prefix.css */ } } } diff --git a/web/libs/editor/src/components/Ranker/Ranker.tsx b/web/libs/editor/src/components/Ranker/Ranker.tsx index 978c9b25be15..9a7a9796d6c6 100644 --- a/web/libs/editor/src/components/Ranker/Ranker.tsx +++ b/web/libs/editor/src/components/Ranker/Ranker.tsx @@ -4,7 +4,7 @@ import { DragDropContext, type DropResult } from "react-beautiful-dnd"; import Column from "./Column"; import type { NewBoardData } from "./createData"; -import styles from "./Ranker.module.scss"; +import styles from "./Ranker.module.css"; interface BoardProps { inputData: NewBoardData; diff --git a/web/libs/editor/src/components/Settings/Settings.jsx b/web/libs/editor/src/components/Settings/Settings.jsx index ae9bbc582889..07d2dab85c82 100644 --- a/web/libs/editor/src/components/Settings/Settings.jsx +++ b/web/libs/editor/src/components/Settings/Settings.jsx @@ -4,7 +4,7 @@ import { observer } from "mobx-react"; import { Hotkey } from "../../core/Hotkey"; -import "./Settings.scss"; +import "./Settings.prefix.css"; import { cn } from "../../utils/bem"; import { triggerResizeEvent } from "../../utils/utilities"; diff --git a/web/libs/editor/src/components/Settings/Settings.scss b/web/libs/editor/src/components/Settings/Settings.prefix.css similarity index 100% rename from web/libs/editor/src/components/Settings/Settings.scss rename to web/libs/editor/src/components/Settings/Settings.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.scss b/web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.prefix.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.scss rename to web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.tsx b/web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.tsx index a20078467141..a93da8502466 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.tsx +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/DetailsPanel.tsx @@ -4,7 +4,7 @@ import { cn } from "../../../utils/bem"; import { Comments as CommentsComponent } from "../../Comments/Comments"; import { AnnotationHistory } from "../../CurrentEntity/AnnotationHistory"; import { PanelBase, type PanelProps } from "../PanelBase"; -import "./DetailsPanel.scss"; +import "./DetailsPanel.prefix.css"; import { RegionDetailsMain, RegionDetailsMeta } from "./RegionDetails"; import { RegionItem } from "./RegionItem"; import { Relations as RelationsComponent } from "./Relations"; diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.scss b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.prefix.css similarity index 98% rename from web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.scss rename to web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.prefix.css index cfd9dd01d10a..443f8eff8b4c 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.scss +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.prefix.css @@ -33,7 +33,7 @@ &__index { width: 18px; height: 18px; - margin-top: 3px; // to align with 24px icon + margin-top: 3px; /* to align with 24px icon */ display: flex; font-size: 9px; text-align: center; diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.tsx b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.tsx index 83c68134f8c0..3a02a9322b21 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.tsx +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionDetails.tsx @@ -2,7 +2,7 @@ import { observer } from "mobx-react"; import { type FC, useEffect, useMemo, useRef } from "react"; import { cn } from "../../../utils/bem"; import { RegionEditor } from "./RegionEditor"; -import "./RegionDetails.scss"; +import "./RegionDetails.prefix.css"; import { JsonViewer, Typography } from "@humansignal/ui"; const TextResult: FC<{ mainValue: string[] }> = observer(({ mainValue }) => { diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.scss b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.prefix.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.scss rename to web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.tsx b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.tsx index f87fdd54a52a..642a0dcd31e0 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.tsx +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/RegionEditor.tsx @@ -17,7 +17,7 @@ import { Checkbox, Select } from "@humansignal/ui"; import { cn } from "../../../utils/bem"; import { TimeDurationControl } from "../../TimeDurationControl/TimeDurationControl"; import { TimelineRegionEditor } from "./TimelineRegionEditor"; -import "./RegionEditor.scss"; +import "./RegionEditor.prefix.css"; import type { MSTRegion } from "../../../stores/types"; interface RegionEditorProps { diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.scss b/web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.prefix.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.scss rename to web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.tsx b/web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.tsx index 3314366f0eb7..746cea682311 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.tsx +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/Relations.tsx @@ -13,7 +13,7 @@ import { type FC, useCallback, useMemo, useState } from "react"; import { cn } from "../../../utils/bem"; import { wrapArray } from "../../../utils/utilities"; import { RegionItem } from "./RegionItem"; -import "./Relations.scss"; +import "./Relations.prefix.css"; const RealtionsComponent: FC = ({ relationStore }) => { const relations = relationStore.orderedRelations; diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.scss b/web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.prefix.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.scss rename to web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.tsx b/web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.tsx index f0cfe904bfa1..3007695038dc 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.tsx +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/RelationsControls.tsx @@ -2,7 +2,7 @@ import { Button } from "@humansignal/ui"; import { observer } from "mobx-react"; import { type FC, useCallback } from "react"; import { cn } from "../../../utils/bem"; -import "./RelationsControls.scss"; +import "./RelationsControls.prefix.css"; import { IconOutlinerEyeClosed, IconOutlinerEyeOpened, IconSortDown, IconSortUp } from "@humansignal/icons"; const RelationsControlsComponent: FC = ({ relationStore }) => { diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.module.scss b/web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.module.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.module.scss rename to web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.module.css diff --git a/web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.tsx b/web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.tsx index 718b2d050b30..d214298248ce 100644 --- a/web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.tsx +++ b/web/libs/editor/src/components/SidePanels/DetailsPanel/TimelineRegionEditor.tsx @@ -1,6 +1,6 @@ import { observer } from "mobx-react"; import type { MSTTimelineRegion } from "../../Timeline/Types"; -import styles from "./TimelineRegionEditor.module.scss"; +import styles from "./TimelineRegionEditor.module.css"; export const TimelineRegionEditor = observer(({ region }: { region: MSTTimelineRegion }) => { const { start, end } = region.ranges[0]; diff --git a/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.scss b/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.prefix.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.scss rename to web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.tsx b/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.tsx index 88a1f85c20f7..fabb97925003 100644 --- a/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.tsx +++ b/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerPanel.tsx @@ -4,7 +4,7 @@ import { cn } from "../../../utils/bem"; import { PanelBase, type PanelProps } from "../PanelBase"; import { OutlinerTree } from "./OutlinerTree"; import { ViewControls } from "./ViewControls"; -import "./OutlinerPanel.scss"; +import "./OutlinerPanel.prefix.css"; import { IconInfo } from "@humansignal/icons"; import { IconLsLabeling } from "@humansignal/ui"; import { EmptyState } from "../Components/EmptyState"; diff --git a/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerTree.tsx b/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerTree.tsx index 209ecbd6bfe3..ee1fa8a72881 100644 --- a/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerTree.tsx +++ b/web/libs/editor/src/components/SidePanels/OutlinerPanel/OutlinerTree.tsx @@ -25,7 +25,7 @@ import { NodeIcon } from "../../Node/Node"; import { LockButton } from "../Components/LockButton"; import { RegionContextMenu } from "../Components/RegionContextMenu"; import { RegionControlButton } from "../Components/RegionControlButton"; -import "./TreeView.scss"; +import "./TreeView.prefix.css"; import type { EventDataNode, Key } from "rc-tree/es/interface"; import ResizeObserver from "../../../utils/resize-observer"; import { RegionLabel } from "./RegionLabel"; diff --git a/web/libs/editor/src/components/SidePanels/OutlinerPanel/TreeView.scss b/web/libs/editor/src/components/SidePanels/OutlinerPanel/TreeView.prefix.css similarity index 95% rename from web/libs/editor/src/components/SidePanels/OutlinerPanel/TreeView.scss rename to web/libs/editor/src/components/SidePanels/OutlinerPanel/TreeView.prefix.css index 90420ea2b70e..1dc3e18adfdd 100644 --- a/web/libs/editor/src/components/SidePanels/OutlinerPanel/TreeView.scss +++ b/web/libs/editor/src/components/SidePanels/OutlinerPanel/TreeView.prefix.css @@ -91,8 +91,8 @@ .labels-list { display: inline; - line-height: 1.2; // make it dense for multiline labels - padding: 2px 0; // + add a little padding so it won't be too close to the item edges + line-height: 1.2; /* make it dense for multiline labels */ + padding: 2px 0; /* + add a little padding so it won't be too close to the item edges */ overflow: hidden; text-overflow: ellipsis; } @@ -144,7 +144,7 @@ display: flex; flex: none; font-size: 9px; - color: var(--color-sand-000); // TODO: Revisit this with a css variable that can be calculated against --text-color for a dynamically high contrast value. + color: var(--color-sand-000); /* TODO: Revisit this with a css variable that can be calculated against --text-color for a dynamically high contrast value. */ text-align: center; align-items: center; border-radius: 4px; diff --git a/web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.scss b/web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.prefix.css similarity index 100% rename from web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.scss rename to web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.prefix.css diff --git a/web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.tsx b/web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.tsx index e7c9f1e492c3..c994165dcab7 100644 --- a/web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.tsx +++ b/web/libs/editor/src/components/SidePanels/OutlinerPanel/ViewControls.tsx @@ -18,7 +18,7 @@ import { Dropdown } from "@humansignal/ui"; import { Menu } from "../../../common/Menu/Menu"; import { cn } from "../../../utils/bem"; import { SidePanelsContext } from "../SidePanelsContext"; -import "./ViewControls.scss"; +import "./ViewControls.prefix.css"; import { observer } from "mobx-react"; export type GroupingOptions = "manual" | "label" | "type"; diff --git a/web/libs/editor/src/components/SidePanels/PanelBase.scss b/web/libs/editor/src/components/SidePanels/PanelBase.prefix.css similarity index 99% rename from web/libs/editor/src/components/SidePanels/PanelBase.scss rename to web/libs/editor/src/components/SidePanels/PanelBase.prefix.css index 683d3d2e0449..6ef36ae5e61c 100644 --- a/web/libs/editor/src/components/SidePanels/PanelBase.scss +++ b/web/libs/editor/src/components/SidePanels/PanelBase.prefix.css @@ -1,4 +1,4 @@ -@import "../../assets/styles/global"; +@import "../../assets/styles/global.prefix.css"; .panel { --header-height: 24px; diff --git a/web/libs/editor/src/components/SidePanels/PanelBase.tsx b/web/libs/editor/src/components/SidePanels/PanelBase.tsx index 35d38c444777..924f15444256 100644 --- a/web/libs/editor/src/components/SidePanels/PanelBase.tsx +++ b/web/libs/editor/src/components/SidePanels/PanelBase.tsx @@ -11,7 +11,7 @@ import { import { cn } from "../../utils/bem"; import { IconArrowLeft, IconArrowRight, IconOutlinerCollapse, IconOutlinerExpand } from "@humansignal/icons"; -import "./PanelBase.scss"; +import "./PanelBase.prefix.css"; import type { PanelType } from "./TabPanels/types"; import { useDrag } from "../../hooks/useDrag"; import { clamp, isDefined } from "../../utils/utilities"; diff --git a/web/libs/editor/src/components/SidePanels/SidePanels.scss b/web/libs/editor/src/components/SidePanels/SidePanels.prefix.css similarity index 97% rename from web/libs/editor/src/components/SidePanels/SidePanels.scss rename to web/libs/editor/src/components/SidePanels/SidePanels.prefix.css index 2d94f28ee7a9..b90042041e5b 100644 --- a/web/libs/editor/src/components/SidePanels/SidePanels.scss +++ b/web/libs/editor/src/components/SidePanels/SidePanels.prefix.css @@ -1,4 +1,4 @@ -@import "../../assets/styles/global"; +@import "../../assets/styles/global.prefix.css"; .sidepanels { height: 100%; diff --git a/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.scss b/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.prefix.css similarity index 99% rename from web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.scss rename to web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.prefix.css index 0d601ca25c24..bedda5bd7bb7 100644 --- a/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.scss +++ b/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.prefix.css @@ -1,4 +1,4 @@ -@import "../../../assets/styles/global"; +@import "../../../assets/styles/global.prefix.css"; .tabs-panel { --header-height: 24px; diff --git a/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.tsx b/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.tsx index c8a3cd19cd4f..03e0fd787f1c 100644 --- a/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.tsx +++ b/web/libs/editor/src/components/SidePanels/TabPanels/PanelTabsBase.tsx @@ -21,7 +21,7 @@ import { clamp, isDefined } from "../../../utils/utilities"; import { DEFAULT_PANEL_HEIGHT, DEFAULT_PANEL_MIN_HEIGHT, DEFAULT_PANEL_WIDTH, PANEL_HEADER_HEIGHT } from "../constants"; import { type BaseProps as OrigBaseProps, Side } from "./types"; import { resizers } from "./utils"; -import "./PanelTabsBase.scss"; +import "./PanelTabsBase.prefix.css"; import React from "react"; const distance = (x1: number, x2: number, y1: number, y2: number) => { diff --git a/web/libs/editor/src/components/SidePanels/TabPanels/SideTabsPanels.tsx b/web/libs/editor/src/components/SidePanels/TabPanels/SideTabsPanels.tsx index 7a0642fb0b8a..9a99555838a6 100644 --- a/web/libs/editor/src/components/SidePanels/TabPanels/SideTabsPanels.tsx +++ b/web/libs/editor/src/components/SidePanels/TabPanels/SideTabsPanels.tsx @@ -11,7 +11,7 @@ import { DEFAULT_PANEL_WIDTH, PANEL_HEADER_HEIGHT, } from "../constants"; -import "../SidePanels.scss"; +import "../SidePanels.prefix.css"; import { SidePanelsContext } from "../SidePanelsContext"; import { useRegionsCopyPaste } from "../../../hooks/useRegionsCopyPaste"; import { PanelTabsBase } from "./PanelTabsBase"; diff --git a/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.scss b/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.prefix.css similarity index 98% rename from web/libs/editor/src/components/SidePanels/TabPanels/Tabs.scss rename to web/libs/editor/src/components/SidePanels/TabPanels/Tabs.prefix.css index 2e6f9b38f723..aba9d1dc04ee 100644 --- a/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.scss +++ b/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.prefix.css @@ -1,4 +1,4 @@ -@import "../../../assets/styles/global"; +@import "../../../assets/styles/global.prefix.css"; .tabs { --tab-row-height: 33px; diff --git a/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.tsx b/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.tsx index 82e8bd7fe041..8f3812861ac9 100644 --- a/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.tsx +++ b/web/libs/editor/src/components/SidePanels/TabPanels/Tabs.tsx @@ -3,7 +3,7 @@ import { IconOutlinerDrag, IconCollapseSmall, IconExpandSmall } from "@humansign import { useDrag } from "../../../hooks/useDrag"; import { cn } from "../../../utils/bem"; import { DEFAULT_PANEL_HEIGHT } from "../constants"; -import "./Tabs.scss"; +import "./Tabs.prefix.css"; import { type BaseProps, Side, type TabProps } from "./types"; import { determineDroppableArea, determineLeftOrRight } from "./utils"; import { Button } from "../../../common/Button/Button"; diff --git a/web/libs/editor/src/components/SimpleBadge/SimpleBadge.jsx b/web/libs/editor/src/components/SimpleBadge/SimpleBadge.jsx index e4dd3a908be4..61024579f408 100644 --- a/web/libs/editor/src/components/SimpleBadge/SimpleBadge.jsx +++ b/web/libs/editor/src/components/SimpleBadge/SimpleBadge.jsx @@ -1,4 +1,4 @@ -import styles from "./SimpleBadge.module.scss"; +import styles from "./SimpleBadge.module.css"; export const SimpleBadge = ({ number, className, ...props }) => (
diff --git a/web/libs/editor/src/components/SimpleBadge/SimpleBadge.module.scss b/web/libs/editor/src/components/SimpleBadge/SimpleBadge.module.css similarity index 100% rename from web/libs/editor/src/components/SimpleBadge/SimpleBadge.module.scss rename to web/libs/editor/src/components/SimpleBadge/SimpleBadge.module.css diff --git a/web/libs/editor/src/components/TaskSummary/Aggregation.tsx b/web/libs/editor/src/components/TaskSummary/Aggregation.tsx index 8d91caa7207a..8a77bc5b5442 100644 --- a/web/libs/editor/src/components/TaskSummary/Aggregation.tsx +++ b/web/libs/editor/src/components/TaskSummary/Aggregation.tsx @@ -8,7 +8,7 @@ import type { AnnotationSummary, ControlTag } from "./types"; import { getLabelCounts } from "./utils"; import { isActive, FF_FIT_720_LAZY_LOAD_ANNOTATIONS } from "@humansignal/core/lib/utils/feature-flags"; -import styles from "./TaskSummary.module.scss"; +import styles from "./TaskSummary.module.css"; type DistributionData = { total_annotations: number; diff --git a/web/libs/editor/src/components/TaskSummary/TaskSummary.module.scss b/web/libs/editor/src/components/TaskSummary/TaskSummary.module.css similarity index 100% rename from web/libs/editor/src/components/TaskSummary/TaskSummary.module.scss rename to web/libs/editor/src/components/TaskSummary/TaskSummary.module.css diff --git a/web/libs/editor/src/components/Taxonomy/Taxonomy.module.scss b/web/libs/editor/src/components/Taxonomy/Taxonomy.module.css similarity index 80% rename from web/libs/editor/src/components/Taxonomy/Taxonomy.module.scss rename to web/libs/editor/src/components/Taxonomy/Taxonomy.module.css index dcd68e59368c..e19a37caba85 100644 --- a/web/libs/editor/src/components/Taxonomy/Taxonomy.module.scss +++ b/web/libs/editor/src/components/Taxonomy/Taxonomy.module.css @@ -1,7 +1,7 @@ .taxonomy { border: 1px solid var(--color-neutral-border); border-radius: 6px; - padding: 4px 4px 0; // margin of last row of selected divs will work as padding + padding: 4px 4px 0; /* margin of last row of selected divs will work as padding */ width: max-content; max-width: 100%; position: relative; @@ -10,8 +10,8 @@ display: flex; align-items: center; line-height: 30px; - padding: 0 4px; // 4px padding to stay on the same indent as selected - margin-bottom: 4px; // also replaces padding to be consistent with selected divs + padding: 0 4px; /* 4px padding to stay on the same indent as selected */ + margin-bottom: 4px; /* also replaces padding to be consistent with selected divs */ white-space: nowrap; cursor: pointer; } @@ -28,12 +28,12 @@ .taxonomy__selected { display: flex; flex-wrap: wrap; - min-height: 28px; // 24px button + 4px margin + min-height: 28px; /* 24px button + 4px margin */ & div { margin: 0 2px 4px 0; background: hsl(0deg 0% 95%); - padding: 0; // all the right space should be a clickable button, so no padding + padding: 0; /* all the right space should be a clickable button, so no padding */ border-radius: 4px; display: flex; align-items: center; @@ -54,7 +54,7 @@ font-weight: 600; font-size: 20px; color: var(--primary_link); - margin-left: -8px; // to align with the right edge of the text + margin-left: -8px; /* to align with the right edge of the text */ &:hover { color: var(--color-negative-content); @@ -92,7 +92,7 @@ border-radius: 3px 3px 0 0; padding: 6px 16px; margin-bottom: 4px; - box-shadow: 0 -2px 0 6px var(--color-neutral-background); // white background over scrolled items + box-shadow: 0 -2px 0 6px var(--color-neutral-background); /* white background over scrolled items */ position: sticky; top: 0; z-index: 1; @@ -119,8 +119,6 @@ line-height: 2em; } -; - .taxonomy__item { display: flex; @@ -160,7 +158,7 @@ font-family: var(--font-mono); & svg { - transition: transform 0.1s; // visible rotation of arrow + transition: transform 0.1s; /* visible rotation of arrow */ } &:not(:empty) { @@ -178,9 +176,9 @@ display: flex; align-items: center; justify-content: center; - min-width: 40px; // 24px padding + 16px width for count/dots + min-width: 40px; /* 24px padding + 16px width for count/dots */ text-align: right; - position: relative; // important for wide labels to not overlap counts with label + position: relative; /* important for wide labels to not overlap counts with label */ &_actions { visibility: hidden; @@ -206,7 +204,7 @@ } .taxonomy__action { - zoom: 1; // something to apply this class + zoom: 1; /* something to apply this class */ } .taxonomy__add__container { @@ -214,14 +212,14 @@ } .taxonomy__add { - margin-left: 27px; // chevron 24px + 3px margin + margin-left: 27px; /* chevron 24px + 3px margin */ display: flex; align-items: center; opacity: 0.6; &::before { content: "+"; - width: 16px; // as checkbox + width: 16px; /* as checkbox */ padding: 4px 0; text-align: center; font-size: 18px; diff --git a/web/libs/editor/src/components/Taxonomy/Taxonomy.tsx b/web/libs/editor/src/components/Taxonomy/Taxonomy.tsx index 8a3d886e2e85..2fa9e727db69 100644 --- a/web/libs/editor/src/components/Taxonomy/Taxonomy.tsx +++ b/web/libs/editor/src/components/Taxonomy/Taxonomy.tsx @@ -8,7 +8,7 @@ import type { CNTagName } from "../../utils/bem"; import { isArraysEqual } from "../../utils/utilities"; import TreeStructure from "../TreeStructure/TreeStructure"; -import styles from "./Taxonomy.module.scss"; +import styles from "./Taxonomy.module.css"; type TaxonomyPath = string[]; type onAddLabelCallback = (path: string[]) => any; diff --git a/web/libs/editor/src/components/TextHighlight/TextHighlight.jsx b/web/libs/editor/src/components/TextHighlight/TextHighlight.jsx index 018a7ecdd5b6..527d0bed9773 100644 --- a/web/libs/editor/src/components/TextHighlight/TextHighlight.jsx +++ b/web/libs/editor/src/components/TextHighlight/TextHighlight.jsx @@ -7,7 +7,7 @@ import Range from "./Range"; import { HtxTextNode } from "./Node"; import UrlNode from "./UrlNode"; import EmojiNode from "./EmojiNode"; -import styles from "./TextHighlight.module.scss"; +import styles from "./TextHighlight.module.css"; class TextHighlight extends Component { constructor() { diff --git a/web/libs/editor/src/components/TextHighlight/TextHighlight.module.scss b/web/libs/editor/src/components/TextHighlight/TextHighlight.module.css similarity index 100% rename from web/libs/editor/src/components/TextHighlight/TextHighlight.module.scss rename to web/libs/editor/src/components/TextHighlight/TextHighlight.module.css diff --git a/web/libs/editor/src/components/TimeDurationControl/TimeBox.scss b/web/libs/editor/src/components/TimeDurationControl/TimeBox.prefix.css similarity index 100% rename from web/libs/editor/src/components/TimeDurationControl/TimeBox.scss rename to web/libs/editor/src/components/TimeDurationControl/TimeBox.prefix.css diff --git a/web/libs/editor/src/components/TimeDurationControl/TimeBox.tsx b/web/libs/editor/src/components/TimeDurationControl/TimeBox.tsx index 293a29fa767c..5e60247bca85 100644 --- a/web/libs/editor/src/components/TimeDurationControl/TimeBox.tsx +++ b/web/libs/editor/src/components/TimeDurationControl/TimeBox.tsx @@ -3,7 +3,7 @@ import { cn } from "../../utils/bem"; import { MaskUtil } from "../../utils/InputMask"; import Label from "../../common/Label/Label"; -import "./TimeBox.scss"; +import "./TimeBox.prefix.css"; export interface TimerProps { sidepanel: boolean; diff --git a/web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.scss b/web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.prefix.css similarity index 100% rename from web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.scss rename to web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.prefix.css diff --git a/web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.tsx b/web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.tsx index f0f97ba16c42..8a459cb07af2 100644 --- a/web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.tsx +++ b/web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.tsx @@ -1,7 +1,7 @@ import type { FC } from "react"; import { cn } from "../../utils/bem"; -import "./TimeDurationControl.scss"; +import "./TimeDurationControl.prefix.css"; import { TimeBox } from "./TimeBox"; export interface TimerProps { diff --git a/web/libs/editor/src/components/Timeline/Controls.scss b/web/libs/editor/src/components/Timeline/Controls.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Controls.scss rename to web/libs/editor/src/components/Timeline/Controls.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Controls.tsx b/web/libs/editor/src/components/Timeline/Controls.tsx index 0d893b92752a..8f145e7ba6e1 100644 --- a/web/libs/editor/src/components/Timeline/Controls.tsx +++ b/web/libs/editor/src/components/Timeline/Controls.tsx @@ -21,7 +21,7 @@ import { Hotkey, type HotkeyList } from "../../core/Hotkey"; import { cn } from "../../utils/bem"; import { isDefined } from "../../utils/utilities"; import { TimelineContext } from "./Context"; -import "./Controls.scss"; +import "./Controls.prefix.css"; import * as SideControls from "./SideControls"; import type { TimelineControlsFormatterOptions, diff --git a/web/libs/editor/src/components/Timeline/Controls/AudioControl.scss b/web/libs/editor/src/components/Timeline/Controls/AudioControl.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Controls/AudioControl.scss rename to web/libs/editor/src/components/Timeline/Controls/AudioControl.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Controls/AudioControl.tsx b/web/libs/editor/src/components/Timeline/Controls/AudioControl.tsx index 1e4509c806a7..1da107a11fa6 100644 --- a/web/libs/editor/src/components/Timeline/Controls/AudioControl.tsx +++ b/web/libs/editor/src/components/Timeline/Controls/AudioControl.tsx @@ -2,7 +2,7 @@ import type React from "react"; import { type FC, type MouseEvent, useEffect, useState } from "react"; import { cn } from "../../../utils/bem"; -import "./AudioControl.scss"; +import "./AudioControl.prefix.css"; import { IconSoundConfig, IconSoundMutedConfig } from "@humansignal/ui"; import { ControlButton } from "../Controls"; import { Slider } from "./Slider"; diff --git a/web/libs/editor/src/components/Timeline/Controls/ConfigControl.scss b/web/libs/editor/src/components/Timeline/Controls/ConfigControl.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Controls/ConfigControl.scss rename to web/libs/editor/src/components/Timeline/Controls/ConfigControl.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Controls/ConfigControl.tsx b/web/libs/editor/src/components/Timeline/Controls/ConfigControl.tsx index 6b62e118cfe3..8f008fb13115 100644 --- a/web/libs/editor/src/components/Timeline/Controls/ConfigControl.tsx +++ b/web/libs/editor/src/components/Timeline/Controls/ConfigControl.tsx @@ -9,7 +9,7 @@ import { TimelineContext } from "../Context"; import { ControlButton } from "../Controls"; import { Slider } from "./Slider"; import { SpectrogramControl } from "./SpectrogramControl"; -import "./ConfigControl.scss"; +import "./ConfigControl.prefix.css"; import { FF_AUDIO_SPECTROGRAMS, isFF } from "../../../utils/feature-flags"; // Define Scale Options Type diff --git a/web/libs/editor/src/components/Timeline/Controls/Slider.scss b/web/libs/editor/src/components/Timeline/Controls/Slider.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Controls/Slider.scss rename to web/libs/editor/src/components/Timeline/Controls/Slider.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Controls/Slider.tsx b/web/libs/editor/src/components/Timeline/Controls/Slider.tsx index 9024faeb6d33..6ea5fe55555d 100644 --- a/web/libs/editor/src/components/Timeline/Controls/Slider.tsx +++ b/web/libs/editor/src/components/Timeline/Controls/Slider.tsx @@ -4,7 +4,7 @@ import { Tooltip } from "@humansignal/ui"; import { IconInfoConfig } from "@humansignal/icons"; import { cn } from "../../../utils/bem"; -import "./Slider.scss"; +import "./Slider.prefix.css"; export interface SliderProps { description?: string; diff --git a/web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.scss b/web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.scss rename to web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.tsx b/web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.tsx index c6dda4f6b091..8dee1afbc0e9 100644 --- a/web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.tsx +++ b/web/libs/editor/src/components/Timeline/Controls/SpectrogramControl.tsx @@ -6,7 +6,7 @@ import { Range } from "../../../common/Range/Range"; import { IconInfoConfig, IconWarningCircleFilled } from "@humansignal/icons"; import { TimelineContext } from "../Context"; import { Slider } from "./Slider"; -import "./SpectrogramControl.scss"; +import "./SpectrogramControl.prefix.css"; import colormap from "colormap"; // Define Scale Options Type diff --git a/web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.module.scss b/web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.module.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.module.scss rename to web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.module.css diff --git a/web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.tsx b/web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.tsx index c39d4a3ec446..9dffb5ca71fc 100644 --- a/web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.tsx +++ b/web/libs/editor/src/components/Timeline/Controls/VideoConfigControl.tsx @@ -6,7 +6,7 @@ import { Toggle } from "@humansignal/ui"; import { IconConfig } from "@humansignal/icons"; import { ControlButton } from "../Controls"; import { Slider } from "./Slider"; -import styles from "./VideoConfigControl.module.scss"; +import styles from "./VideoConfigControl.module.css"; const MIN_SPEED = 0.25; const MAX_SPEED = 10; diff --git a/web/libs/editor/src/components/Timeline/Seeker.scss b/web/libs/editor/src/components/Timeline/Seeker.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Seeker.scss rename to web/libs/editor/src/components/Timeline/Seeker.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Seeker.tsx b/web/libs/editor/src/components/Timeline/Seeker.tsx index 9d81e34dce7d..cac48276fa98 100644 --- a/web/libs/editor/src/components/Timeline/Seeker.tsx +++ b/web/libs/editor/src/components/Timeline/Seeker.tsx @@ -3,7 +3,7 @@ import { type FC, type ReactElement, useCallback, useRef } from "react"; import { cn } from "../../utils/bem"; import type { TimelineMinimapProps } from "./Types"; -import "./Seeker.scss"; +import "./Seeker.prefix.css"; export interface SeekerProps { position: number; diff --git a/web/libs/editor/src/components/Timeline/SideControls/FramesControl.scss b/web/libs/editor/src/components/Timeline/SideControls/FramesControl.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/SideControls/FramesControl.scss rename to web/libs/editor/src/components/Timeline/SideControls/FramesControl.prefix.css diff --git a/web/libs/editor/src/components/Timeline/SideControls/FramesControl.tsx b/web/libs/editor/src/components/Timeline/SideControls/FramesControl.tsx index 89c261b1cea2..4b75fa62e1aa 100644 --- a/web/libs/editor/src/components/Timeline/SideControls/FramesControl.tsx +++ b/web/libs/editor/src/components/Timeline/SideControls/FramesControl.tsx @@ -2,7 +2,7 @@ import { type FC, type MutableRefObject, useMemo, useRef, useState } from "react import { cn } from "../../../utils/bem"; import { clamp } from "../../../utils/utilities"; import type { TimelineSideControlProps } from "../Types"; -import "./FramesControl.scss"; +import "./FramesControl.prefix.css"; export const FramesControl: FC = ({ position = 0, length = 0, onPositionChange }) => { const [inputMode, setInputMode] = useState(false); diff --git a/web/libs/editor/src/components/Timeline/Timeline.scss b/web/libs/editor/src/components/Timeline/Timeline.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Timeline.scss rename to web/libs/editor/src/components/Timeline/Timeline.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Timeline.tsx b/web/libs/editor/src/components/Timeline/Timeline.tsx index f69c7230a966..5a3416683ea1 100644 --- a/web/libs/editor/src/components/Timeline/Timeline.tsx +++ b/web/libs/editor/src/components/Timeline/Timeline.tsx @@ -7,7 +7,7 @@ import { clamp, fixMobxObserve, isDefined } from "../../utils/utilities"; import { TimelineContextProvider } from "./Context"; import { Controls } from "./Controls"; import { Seeker } from "./Seeker"; -import "./Timeline.scss"; +import "./Timeline.prefix.css"; import type { TimelineContextValue, TimelineControlsStepHandler, TimelineProps } from "./Types"; import { default as Views } from "./Views"; diff --git a/web/libs/editor/src/components/Timeline/Views/Frames/Frames.scss b/web/libs/editor/src/components/Timeline/Views/Frames/Frames.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Views/Frames/Frames.scss rename to web/libs/editor/src/components/Timeline/Views/Frames/Frames.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Views/Frames/Frames.tsx b/web/libs/editor/src/components/Timeline/Views/Frames/Frames.tsx index c1fd7808514a..e6bdd1a8dbcf 100644 --- a/web/libs/editor/src/components/Timeline/Views/Frames/Frames.tsx +++ b/web/libs/editor/src/components/Timeline/Views/Frames/Frames.tsx @@ -6,7 +6,7 @@ import { cn } from "../../../../utils/bem"; import { isDefined } from "../../../../utils/utilities"; import type { MSTTimelineRegion, TimelineRegion, TimelineViewProps } from "../../Types"; import { Keypoints } from "./Keypoints"; -import "./Frames.scss"; +import "./Frames.prefix.css"; /** * Effectively returns the frame on the given offset diff --git a/web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.scss b/web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.scss rename to web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.tsx b/web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.tsx index 9d2154552387..f0dafa6e661a 100644 --- a/web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.tsx +++ b/web/libs/editor/src/components/Timeline/Views/Frames/Keypoints.tsx @@ -4,7 +4,7 @@ import { cn } from "../../../../utils/bem"; import { clamp } from "../../../../utils/utilities"; import { TimelineContext } from "../../Context"; import type { TimelineRegion } from "../../Types"; -import "./Keypoints.scss"; +import "./Keypoints.prefix.css"; import { type Lifespan, visualizeLifespans } from "./Utils"; export interface KeypointsProps { diff --git a/web/libs/editor/src/components/Timeline/Views/Frames/Minimap.scss b/web/libs/editor/src/components/Timeline/Views/Frames/Minimap.prefix.css similarity index 100% rename from web/libs/editor/src/components/Timeline/Views/Frames/Minimap.scss rename to web/libs/editor/src/components/Timeline/Views/Frames/Minimap.prefix.css diff --git a/web/libs/editor/src/components/Timeline/Views/Frames/Minimap.tsx b/web/libs/editor/src/components/Timeline/Views/Frames/Minimap.tsx index 8cfa94460d75..6d7d8fdfe616 100644 --- a/web/libs/editor/src/components/Timeline/Views/Frames/Minimap.tsx +++ b/web/libs/editor/src/components/Timeline/Views/Frames/Minimap.tsx @@ -4,7 +4,7 @@ import { cn } from "../../../../utils/bem"; import { isDefined } from "../../../../utils/utilities"; import { TimelineContext } from "../../Context"; import { visualizeLifespans } from "./Utils"; -import "./Minimap.scss"; +import "./Minimap.prefix.css"; export const Minimap: FC = () => { const { regions, length } = useContext(TimelineContext); diff --git a/web/libs/editor/src/components/Toolbar/FlyoutMenu.scss b/web/libs/editor/src/components/Toolbar/FlyoutMenu.prefix.css similarity index 100% rename from web/libs/editor/src/components/Toolbar/FlyoutMenu.scss rename to web/libs/editor/src/components/Toolbar/FlyoutMenu.prefix.css diff --git a/web/libs/editor/src/components/Toolbar/Tool.scss b/web/libs/editor/src/components/Toolbar/Tool.prefix.css similarity index 100% rename from web/libs/editor/src/components/Toolbar/Tool.scss rename to web/libs/editor/src/components/Toolbar/Tool.prefix.css diff --git a/web/libs/editor/src/components/Toolbar/Toolbar.jsx b/web/libs/editor/src/components/Toolbar/Toolbar.jsx index 5266cf3d8922..c0fadfde68c9 100644 --- a/web/libs/editor/src/components/Toolbar/Toolbar.jsx +++ b/web/libs/editor/src/components/Toolbar/Toolbar.jsx @@ -7,9 +7,9 @@ import { isDefined } from "../../utils/utilities"; import { Tool } from "./Tool"; import { ToolbarProvider } from "./ToolbarContext"; -import "./FlyoutMenu.scss"; -import "./Tool.scss"; -import "./Toolbar.scss"; +import "./FlyoutMenu.prefix.css"; +import "./Tool.prefix.css"; +import "./Toolbar.prefix.css"; export const Toolbar = inject("store")( observer(({ store, tools, expanded }) => { diff --git a/web/libs/editor/src/components/Toolbar/Toolbar.scss b/web/libs/editor/src/components/Toolbar/Toolbar.prefix.css similarity index 100% rename from web/libs/editor/src/components/Toolbar/Toolbar.scss rename to web/libs/editor/src/components/Toolbar/Toolbar.prefix.css diff --git a/web/libs/editor/src/components/Tools/Basic.jsx b/web/libs/editor/src/components/Tools/Basic.jsx index eb6f348f5456..f72b2174dbb3 100644 --- a/web/libs/editor/src/components/Tools/Basic.jsx +++ b/web/libs/editor/src/components/Tools/Basic.jsx @@ -2,7 +2,7 @@ import { Component } from "react"; import { Button, Tooltip } from "@humansignal/ui"; import { observer } from "mobx-react"; -import styles from "./Styles.module.scss"; +import styles from "./Styles.module.css"; export default observer( class BasicToolView extends Component { diff --git a/web/libs/editor/src/components/Tools/Slider.jsx b/web/libs/editor/src/components/Tools/Slider.jsx index 5084d80cdb6a..b088453337a6 100644 --- a/web/libs/editor/src/components/Tools/Slider.jsx +++ b/web/libs/editor/src/components/Tools/Slider.jsx @@ -3,7 +3,7 @@ import { Slider } from "antd"; import { Button, cn, Tooltip } from "@humansignal/ui"; import { observer } from "mobx-react"; -import styles from "./Styles.module.scss"; +import styles from "./Styles.module.css"; export default observer( class SliderTool extends Component { diff --git a/web/libs/editor/src/components/Tools/SliderDropDown.jsx b/web/libs/editor/src/components/Tools/SliderDropDown.jsx index b8f3509adf59..671c69860390 100644 --- a/web/libs/editor/src/components/Tools/SliderDropDown.jsx +++ b/web/libs/editor/src/components/Tools/SliderDropDown.jsx @@ -3,7 +3,7 @@ import { Dropdown, Menu, Slider } from "antd"; import { Button, IconRefresh } from "@humansignal/ui"; import { observer } from "mobx-react"; -import styles from "./Styles.module.scss"; +import styles from "./Styles.module.css"; export default observer( class SliderDropDownTool extends Component { diff --git a/web/libs/editor/src/components/Tools/Styles.module.scss b/web/libs/editor/src/components/Tools/Styles.module.css similarity index 100% rename from web/libs/editor/src/components/Tools/Styles.module.scss rename to web/libs/editor/src/components/Tools/Styles.module.css diff --git a/web/libs/editor/src/components/TopBar/Annotations.jsx b/web/libs/editor/src/components/TopBar/Annotations.jsx index 073820886473..68acad59156d 100644 --- a/web/libs/editor/src/components/TopBar/Annotations.jsx +++ b/web/libs/editor/src/components/TopBar/Annotations.jsx @@ -11,7 +11,7 @@ import { cn } from "../../utils/bem"; import { userDisplayName } from "@humansignal/core"; import { isDefined } from "../../utils/utilities"; import { GroundTruth } from "../CurrentEntity/GroundTruth"; -import "./Annotations.scss"; +import "./Annotations.prefix.css"; import { TimeAgo } from "../../common/TimeAgo/TimeAgo"; import { reaction } from "mobx"; diff --git a/web/libs/editor/src/components/TopBar/Annotations.scss b/web/libs/editor/src/components/TopBar/Annotations.prefix.css similarity index 100% rename from web/libs/editor/src/components/TopBar/Annotations.scss rename to web/libs/editor/src/components/TopBar/Annotations.prefix.css diff --git a/web/libs/editor/src/components/TopBar/Controls.jsx b/web/libs/editor/src/components/TopBar/Controls.jsx index 1dbed6cdda20..b4ba1dfa2cb8 100644 --- a/web/libs/editor/src/components/TopBar/Controls.jsx +++ b/web/libs/editor/src/components/TopBar/Controls.jsx @@ -8,7 +8,7 @@ import { Button, Tooltip } from "@humansignal/ui"; import { cn } from "../../utils/bem"; import { isDefined } from "../../utils/utilities"; -import "./Controls.scss"; +import "./Controls.prefix.css"; import { useCallback, useMemo, useState } from "react"; const TOOLTIP_DELAY = 0.8; diff --git a/web/libs/editor/src/components/TopBar/Controls.scss b/web/libs/editor/src/components/TopBar/Controls.prefix.css similarity index 100% rename from web/libs/editor/src/components/TopBar/Controls.scss rename to web/libs/editor/src/components/TopBar/Controls.prefix.css diff --git a/web/libs/editor/src/components/TopBar/HistoryActions.jsx b/web/libs/editor/src/components/TopBar/HistoryActions.jsx index 933e8201c7ec..ba605cbe88eb 100644 --- a/web/libs/editor/src/components/TopBar/HistoryActions.jsx +++ b/web/libs/editor/src/components/TopBar/HistoryActions.jsx @@ -2,7 +2,7 @@ import { observer } from "mobx-react"; import { IconRedo, IconRemove, IconUndo } from "@humansignal/icons"; import { Button } from "@humansignal/ui"; import { cn } from "../../utils/bem"; -import "./HistoryActions.scss"; +import "./HistoryActions.prefix.css"; export const EditingHistory = observer(({ entity }) => { const { history } = entity; diff --git a/web/libs/editor/src/components/TopBar/HistoryActions.scss b/web/libs/editor/src/components/TopBar/HistoryActions.prefix.css similarity index 100% rename from web/libs/editor/src/components/TopBar/HistoryActions.scss rename to web/libs/editor/src/components/TopBar/HistoryActions.prefix.css diff --git a/web/libs/editor/src/components/TopBar/TopBar.jsx b/web/libs/editor/src/components/TopBar/TopBar.jsx index b0ebe70da14b..ad173610409d 100644 --- a/web/libs/editor/src/components/TopBar/TopBar.jsx +++ b/web/libs/editor/src/components/TopBar/TopBar.jsx @@ -8,7 +8,7 @@ import { FF_BULK_ANNOTATION, isFF } from "../../utils/feature-flags"; import { AnnotationsCarousel } from "../AnnotationsCarousel/AnnotationsCarousel"; import { ViewAllToggle } from "../AnnotationsCarousel/ViewAllToggle"; -import "./TopBar.scss"; +import "./TopBar.prefix.css"; export const TopBar = observer(({ store }) => { const annotationStore = store.annotationStore; diff --git a/web/libs/editor/src/components/TopBar/TopBar.scss b/web/libs/editor/src/components/TopBar/TopBar.prefix.css similarity index 100% rename from web/libs/editor/src/components/TopBar/TopBar.scss rename to web/libs/editor/src/components/TopBar/TopBar.prefix.css diff --git a/web/libs/editor/src/components/VideoCanvas/VideoCanvas.scss b/web/libs/editor/src/components/VideoCanvas/VideoCanvas.prefix.css similarity index 100% rename from web/libs/editor/src/components/VideoCanvas/VideoCanvas.scss rename to web/libs/editor/src/components/VideoCanvas/VideoCanvas.prefix.css diff --git a/web/libs/editor/src/components/VideoCanvas/VideoCanvas.tsx b/web/libs/editor/src/components/VideoCanvas/VideoCanvas.tsx index 7418d8636ed0..02428a8c5c76 100644 --- a/web/libs/editor/src/components/VideoCanvas/VideoCanvas.tsx +++ b/web/libs/editor/src/components/VideoCanvas/VideoCanvas.tsx @@ -5,7 +5,7 @@ import { cn } from "../../utils/bem"; import { FF_VIDEO_FRAME_SEEK_PRECISION, isFF } from "../../utils/feature-flags"; import { clamp, isDefined } from "../../utils/utilities"; import { useUpdateBuffering } from "../../hooks/useUpdateBuffering"; -import "./VideoCanvas.scss"; +import "./VideoCanvas.prefix.css"; import { useLoopRange } from "./hooks/useLoopRange"; import { MAX_ZOOM, MIN_ZOOM } from "./VideoConstants"; import { VirtualCanvas } from "./VirtualCanvas"; diff --git a/web/libs/editor/src/index.js b/web/libs/editor/src/index.js index 0acec1eebb68..906e91c05d6e 100644 --- a/web/libs/editor/src/index.js +++ b/web/libs/editor/src/index.js @@ -1,5 +1,5 @@ import "./core/feature-flags"; -import "./assets/styles/global.scss"; +import "./assets/styles/global.prefix.css"; import { LabelStudio } from "./LabelStudio"; window.LabelStudio = LabelStudio; diff --git a/web/libs/editor/src/lib/AudioUltra/react/ConfigControl.tsx b/web/libs/editor/src/lib/AudioUltra/react/ConfigControl.tsx index 39dd381b5de7..ba3902e75791 100644 --- a/web/libs/editor/src/lib/AudioUltra/react/ConfigControl.tsx +++ b/web/libs/editor/src/lib/AudioUltra/react/ConfigControl.tsx @@ -6,7 +6,7 @@ import { IconConfig } from "@humansignal/ui"; import { TimelineContext } from "../../../components/Timeline/Context"; import { ControlButton } from "../../../components/Timeline/Controls"; import { Slider } from "../../../components/Timeline/Controls/Slider"; -import "./ConfigControl.scss"; +import "./ConfigControl.prefix.css"; import { SpectrogramConfig } from "./SpectrogramConfig"; import type { Waveform } from "../Waveform"; import type { MutableRefObject } from "react"; diff --git a/web/libs/editor/src/regions/HyperTextRegion/HyperTextRegion.module.scss b/web/libs/editor/src/regions/HyperTextRegion/HyperTextRegion.module.css similarity index 100% rename from web/libs/editor/src/regions/HyperTextRegion/HyperTextRegion.module.scss rename to web/libs/editor/src/regions/HyperTextRegion/HyperTextRegion.module.css diff --git a/web/libs/editor/src/regions/TextAreaRegion.jsx b/web/libs/editor/src/regions/TextAreaRegion.jsx index bebcc307fee7..f6521038423a 100644 --- a/web/libs/editor/src/regions/TextAreaRegion.jsx +++ b/web/libs/editor/src/regions/TextAreaRegion.jsx @@ -7,7 +7,7 @@ import Registry from "../core/Registry"; import { TextAreaModel } from "../tags/control/TextArea/TextArea"; import { guidGenerator } from "../core/Helpers"; -import styles from "./TextAreaRegion/TextAreaRegion.scss"; +import styles from "./TextAreaRegion/TextAreaRegion.prefix.css"; import { HtxTextBox } from "../components/HtxTextBox/HtxTextBox"; import { cn } from "../utils/bem"; diff --git a/web/libs/editor/src/regions/TextAreaRegion/TextAreaRegion.scss b/web/libs/editor/src/regions/TextAreaRegion/TextAreaRegion.prefix.css similarity index 100% rename from web/libs/editor/src/regions/TextAreaRegion/TextAreaRegion.scss rename to web/libs/editor/src/regions/TextAreaRegion/TextAreaRegion.prefix.css diff --git a/web/libs/editor/src/regions/TextRegion/TextRegion.module.scss b/web/libs/editor/src/regions/TextRegion/TextRegion.module.css similarity index 100% rename from web/libs/editor/src/regions/TextRegion/TextRegion.module.scss rename to web/libs/editor/src/regions/TextRegion/TextRegion.module.css diff --git a/web/libs/editor/src/standalone.js b/web/libs/editor/src/standalone.js index 20d3cb5456ac..d0d73305203f 100644 --- a/web/libs/editor/src/standalone.js +++ b/web/libs/editor/src/standalone.js @@ -1,4 +1,4 @@ -import "@humansignal/ui/styles.scss"; +import "@humansignal/ui/styles.prefix.css"; import "@humansignal/ui/tailwind.css"; import "./index.js"; diff --git a/web/libs/editor/src/styles/global.module.scss b/web/libs/editor/src/styles/global.module.css similarity index 100% rename from web/libs/editor/src/styles/global.module.scss rename to web/libs/editor/src/styles/global.module.css diff --git a/web/libs/editor/src/tags/control/Choice.jsx b/web/libs/editor/src/tags/control/Choice.jsx index 580afd2350cf..5b73a0138473 100644 --- a/web/libs/editor/src/tags/control/Choice.jsx +++ b/web/libs/editor/src/tags/control/Choice.jsx @@ -12,7 +12,7 @@ import { AnnotationMixin } from "../../mixins/AnnotationMixin"; import { TagParentMixin } from "../../mixins/TagParentMixin"; import { FF_DEV_3391, isFF } from "../../utils/feature-flags"; import { cn } from "../../utils/bem"; -import "./Choice/Choice.scss"; +import "./Choice/Choice.prefix.css"; import { IconChevron } from "@humansignal/ui"; import { HintTooltip } from "../../components/Taxonomy/Taxonomy"; import { sanitizeHtml } from "../../utils/html"; diff --git a/web/libs/editor/src/tags/control/Choice/Choice.scss b/web/libs/editor/src/tags/control/Choice/Choice.prefix.css similarity index 100% rename from web/libs/editor/src/tags/control/Choice/Choice.scss rename to web/libs/editor/src/tags/control/Choice/Choice.prefix.css diff --git a/web/libs/editor/src/tags/control/Choices.jsx b/web/libs/editor/src/tags/control/Choices.jsx index 964c7d9e476b..77e1cfeb3684 100644 --- a/web/libs/editor/src/tags/control/Choices.jsx +++ b/web/libs/editor/src/tags/control/Choices.jsx @@ -13,7 +13,7 @@ import { guidGenerator } from "../../core/Helpers"; import ControlBase from "./Base"; import { AnnotationMixin } from "../../mixins/AnnotationMixin"; import { cn } from "../../utils/bem"; -import "./Choices/Choices.scss"; +import "./Choices/Choices.prefix.css"; import "./Choice"; import DynamicChildrenMixin from "../../mixins/DynamicChildrenMixin"; diff --git a/web/libs/editor/src/tags/control/Choices/Choices.scss b/web/libs/editor/src/tags/control/Choices/Choices.prefix.css similarity index 100% rename from web/libs/editor/src/tags/control/Choices/Choices.scss rename to web/libs/editor/src/tags/control/Choices/Choices.prefix.css diff --git a/web/libs/editor/src/tags/control/Labels/Labels.jsx b/web/libs/editor/src/tags/control/Labels/Labels.jsx index 0c28f2e50c38..22b24064bfe3 100644 --- a/web/libs/editor/src/tags/control/Labels/Labels.jsx +++ b/web/libs/editor/src/tags/control/Labels/Labels.jsx @@ -14,7 +14,7 @@ import SelectedModelMixin from "../../../mixins/SelectedModel"; import { cn } from "../../../utils/bem"; import ControlBase from "../Base"; import "../Label"; -import "./Labels.scss"; +import "./Labels.prefix.css"; /** * The `Labels` tag provides a set of labels for labeling regions in tasks for machine learning and data science projects. Use the `Labels` tag to create a set of labels that can be assigned to identified region and specify the values of labels to assign to regions. diff --git a/web/libs/editor/src/tags/control/Labels/Labels.scss b/web/libs/editor/src/tags/control/Labels/Labels.prefix.css similarity index 100% rename from web/libs/editor/src/tags/control/Labels/Labels.scss rename to web/libs/editor/src/tags/control/Labels/Labels.prefix.css diff --git a/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.jsx b/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.jsx index 62636a72afa7..41c011b86789 100644 --- a/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.jsx +++ b/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.jsx @@ -23,7 +23,7 @@ import { FF_LSDV_4583, FF_TAXONOMY_LABELING, isFF } from "../../../utils/feature import ControlBase from "../Base"; import ClassificationBase from "../ClassificationBase"; -import styles from "./Taxonomy.scss"; +import styles from "./Taxonomy.prefix.css"; import messages from "../../../utils/messages"; import { errorBuilder } from "../../../core/DataValidator/ConfigValidator"; diff --git a/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.scss b/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.prefix.css similarity index 95% rename from web/libs/editor/src/tags/control/Taxonomy/Taxonomy.scss rename to web/libs/editor/src/tags/control/Taxonomy/Taxonomy.prefix.css index e979b7fd36f7..d574cd4870ec 100644 --- a/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.scss +++ b/web/libs/editor/src/tags/control/Taxonomy/Taxonomy.prefix.css @@ -60,7 +60,8 @@ body :global(.ant-select-tree .ant-select-tree-treenode.ant-select-tree-treenode color: var(--color-neutral-content); } -body :global(.ant-select-tree-switcher .ant-tree-switcher-icon, .ant-select-tree-switcher .ant-select-tree-switcher-icon) { +body :global(.ant-select-tree-switcher .ant-tree-switcher-icon), +body :global(.ant-select-tree-switcher .ant-select-tree-switcher-icon) { color: var(--color-neutral-icon); } diff --git a/web/libs/editor/src/tags/control/TextArea/TextArea.jsx b/web/libs/editor/src/tags/control/TextArea/TextArea.jsx index 716440587415..5298a3199f06 100644 --- a/web/libs/editor/src/tags/control/TextArea/TextArea.jsx +++ b/web/libs/editor/src/tags/control/TextArea/TextArea.jsx @@ -23,7 +23,7 @@ import ClassificationBase from "../ClassificationBase"; import "./TextAreaRegionView"; import VisibilityMixin from "../../../mixins/Visibility"; -import "./TextArea.scss"; +import "./TextArea.prefix.css"; import { cn } from "../../../utils/bem"; const { TextArea } = Input; diff --git a/web/libs/editor/src/tags/control/TextArea/TextArea.scss b/web/libs/editor/src/tags/control/TextArea/TextArea.prefix.css similarity index 100% rename from web/libs/editor/src/tags/control/TextArea/TextArea.scss rename to web/libs/editor/src/tags/control/TextArea/TextArea.prefix.css diff --git a/web/libs/editor/src/tags/control/TextArea/TextAreaRegionView.jsx b/web/libs/editor/src/tags/control/TextArea/TextAreaRegionView.jsx index f3e4b1432cc7..e015de3bfe4f 100644 --- a/web/libs/editor/src/tags/control/TextArea/TextAreaRegionView.jsx +++ b/web/libs/editor/src/tags/control/TextArea/TextAreaRegionView.jsx @@ -5,12 +5,12 @@ import { isAlive } from "mobx-state-tree"; import { Button, Form, Input } from "antd"; import { IconTrash } from "@humansignal/icons"; -import styles from "../../../components/HtxTextBox/HtxTextBox.module.scss"; +import styles from "../../../components/HtxTextBox/HtxTextBox.module.css"; import Registry from "../../../core/Registry"; import { PER_REGION_MODES } from "../../../mixins/PerRegion"; import { cn } from "../../../utils/bem"; -import "./TextArea.scss"; +import "./TextArea.prefix.css"; const { TextArea } = Input; diff --git a/web/libs/editor/src/tags/object/Audio/view.scss b/web/libs/editor/src/tags/object/Audio/view.prefix.css similarity index 100% rename from web/libs/editor/src/tags/object/Audio/view.scss rename to web/libs/editor/src/tags/object/Audio/view.prefix.css diff --git a/web/libs/editor/src/tags/object/Audio/view.tsx b/web/libs/editor/src/tags/object/Audio/view.tsx index 5205b6ae7746..f47305af8727 100644 --- a/web/libs/editor/src/tags/object/Audio/view.tsx +++ b/web/libs/editor/src/tags/object/Audio/view.tsx @@ -16,7 +16,7 @@ import { useSpectrogramControls as useSpectrogramControlsHook } from "../../../l import { getCurrentTheme } from "@humansignal/ui"; import { FF_AUDIO_SPECTROGRAMS, isFF } from "../../../utils/feature-flags"; -import "./view.scss"; +import "./view.prefix.css"; // Define Defaults const NORMALIZED_STEP = 0.1; diff --git a/web/libs/editor/src/tags/object/Paragraphs/AuthorFilter.jsx b/web/libs/editor/src/tags/object/Paragraphs/AuthorFilter.jsx index f5c8b0886fdc..492fd5a61e4e 100644 --- a/web/libs/editor/src/tags/object/Paragraphs/AuthorFilter.jsx +++ b/web/libs/editor/src/tags/object/Paragraphs/AuthorFilter.jsx @@ -3,7 +3,7 @@ import { useCallback, useMemo } from "react"; import { Select } from "@humansignal/ui"; import ColorScheme from "pleasejs"; import Utils from "../../../utils"; -import styles from "./Paragraphs.module.scss"; +import styles from "./Paragraphs.module.css"; const AuthorTag = ({ name, selected }) => { const itemStyle = { border: `2px solid ${Utils.Colors.convertToRGBA(ColorScheme.make_color({ seed: name })[0])}` }; diff --git a/web/libs/editor/src/tags/object/Paragraphs/HtxParagraphs.jsx b/web/libs/editor/src/tags/object/Paragraphs/HtxParagraphs.jsx index 0332aa71c24a..e3f319c98562 100644 --- a/web/libs/editor/src/tags/object/Paragraphs/HtxParagraphs.jsx +++ b/web/libs/editor/src/tags/object/Paragraphs/HtxParagraphs.jsx @@ -7,7 +7,7 @@ import { findNodeAt, matchesSelector, splitBoundaries } from "../../../utils/htm import { patchPlayPauseMethods } from "../../../utils/patchPlayPauseMethods"; import { isSelectionContainsSpan } from "../../../utils/selection-tools"; import { useUpdateBuffering } from "../../../hooks/useUpdateBuffering"; -import styles from "./Paragraphs.module.scss"; +import styles from "./Paragraphs.module.css"; import { AuthorFilter } from "./AuthorFilter"; import { Phrases } from "./Phrases"; import { IconHelp } from "@humansignal/icons"; diff --git a/web/libs/editor/src/tags/object/Paragraphs/Paragraphs.module.scss b/web/libs/editor/src/tags/object/Paragraphs/Paragraphs.module.css similarity index 100% rename from web/libs/editor/src/tags/object/Paragraphs/Paragraphs.module.scss rename to web/libs/editor/src/tags/object/Paragraphs/Paragraphs.module.css diff --git a/web/libs/editor/src/tags/object/Paragraphs/Phrases.jsx b/web/libs/editor/src/tags/object/Paragraphs/Phrases.jsx index 323467a5fc1f..70aca845438d 100644 --- a/web/libs/editor/src/tags/object/Paragraphs/Phrases.jsx +++ b/web/libs/editor/src/tags/object/Paragraphs/Phrases.jsx @@ -2,7 +2,7 @@ import { observer } from "mobx-react"; import { getRoot } from "mobx-state-tree"; import { Button, Tooltip } from "@humansignal/ui"; import { PauseCircleOutlined, PlayCircleOutlined } from "@ant-design/icons"; -import styles from "./Paragraphs.module.scss"; +import styles from "./Paragraphs.module.css"; import { FF_LSDV_E_278, FF_NER_SELECT_ALL, isFF } from "../../../utils/feature-flags"; import { IconPause, IconPlay, IconLsLabeling } from "@humansignal/icons"; import { useRef, useCallback, useEffect, useState } from "react"; diff --git a/web/libs/editor/src/tags/object/Paragraphs/model.js b/web/libs/editor/src/tags/object/Paragraphs/model.js index 804779216918..ff409ee7150c 100644 --- a/web/libs/editor/src/tags/object/Paragraphs/model.js +++ b/web/libs/editor/src/tags/object/Paragraphs/model.js @@ -13,7 +13,7 @@ import { FF_DEV_2669, FF_DEV_2918, FF_LSDV_E_278, isFF } from "../../../utils/fe import messages from "../../../utils/messages"; import { clamp, isDefined, isValidObjectURL } from "../../../utils/utilities"; import ObjectBase from "../Base"; -import styles from "./Paragraphs.module.scss"; +import styles from "./Paragraphs.module.css"; import { ff } from "@humansignal/core"; const isSyncedBuffering = ff.isActive(ff.FF_SYNCED_BUFFERING); diff --git a/web/libs/editor/src/tags/object/RichText/RichText.scss b/web/libs/editor/src/tags/object/RichText/RichText.prefix.css similarity index 100% rename from web/libs/editor/src/tags/object/RichText/RichText.scss rename to web/libs/editor/src/tags/object/RichText/RichText.prefix.css diff --git a/web/libs/editor/src/tags/object/RichText/view.jsx b/web/libs/editor/src/tags/object/RichText/view.jsx index f5a1924647ed..b7dcce34a48e 100644 --- a/web/libs/editor/src/tags/object/RichText/view.jsx +++ b/web/libs/editor/src/tags/object/RichText/view.jsx @@ -18,7 +18,7 @@ import { trimSelection, } from "../../../utils/selection-tools"; import { isDefined } from "../../../utils/utilities"; -import "./RichText.scss"; +import "./RichText.prefix.css"; const DBLCLICK_TIMEOUT = 450; // ms const DBLCLICK_RANGE = 5; // px diff --git a/web/libs/editor/src/tags/object/Text/Text.module.scss b/web/libs/editor/src/tags/object/Text/Text.module.css similarity index 54% rename from web/libs/editor/src/tags/object/Text/Text.module.scss rename to web/libs/editor/src/tags/object/Text/Text.module.css index 3942ac240e6c..2510bec3a983 100644 --- a/web/libs/editor/src/tags/object/Text/Text.module.scss +++ b/web/libs/editor/src/tags/object/Text/Text.module.css @@ -4,16 +4,16 @@ overflow-wrap: break-word; &:global(.htx-line-numbers) { - padding-left: 3em; // 3em for line numbers + padding-left: 3em; /* 3em for line numbers */ counter-reset: line-number; } } :global(.htx-line-numbers) { & span.line { - position: relative; // to position line numbers - display: inline-block; // for alignment and hover highlight - min-height: 1.2em; // for styling numbers for empty lines + position: relative; /* to position line numbers */ + display: inline-block; /* for alignment and hover highlight */ + min-height: 1.2em; /* for styling numbers for empty lines */ padding-left: 8px; &::before { @@ -23,12 +23,12 @@ top: 0; left: -3em; height: 100%; - min-height: 2.2em; // for straight separator even on empty lines (they have wrong height) - width: 3em; // for 4 digits + min-height: 2.2em; /* for straight separator even on empty lines (they have wrong height) */ + width: 3em; /* for 4 digits */ border-right: 1px solid var(--color-neutral-border); padding-right: 4px; font-size: 0.8em; - line-height: 2em; // = 1.6em as usual text + line-height: 2em; /* = 1.6em as usual text */ text-align: right; z-index: 1; } @@ -39,7 +39,7 @@ } &:empty { - background: none; // empty lines have broken height and almost zero width, so don't highlight + background: none; /* empty lines have broken height and almost zero width, so don't highlight */ } } } diff --git a/web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.jsx b/web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.jsx index 494fd568afa0..73ec6c35fd05 100644 --- a/web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.jsx +++ b/web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.jsx @@ -1,6 +1,6 @@ import clsx from "clsx"; import { observer } from "mobx-react"; -import styles from "./ChannelLegend.module.scss"; +import styles from "./ChannelLegend.module.css"; const ChannelLegend = observer(({ item }) => { const { channels, highlightedChannelId, isChannelHiddenMap } = item; diff --git a/web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.module.scss b/web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.module.css similarity index 100% rename from web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.module.scss rename to web/libs/editor/src/tags/object/TimeSeries/ChannelLegend.module.css diff --git a/web/libs/editor/src/tags/object/Video/HtxVideo.jsx b/web/libs/editor/src/tags/object/Video/HtxVideo.jsx index 5ea25bbf033d..50106ae60059 100644 --- a/web/libs/editor/src/tags/object/Video/HtxVideo.jsx +++ b/web/libs/editor/src/tags/object/Video/HtxVideo.jsx @@ -22,7 +22,7 @@ import { useToggle } from "../../../hooks/useToggle"; import { cn } from "../../../utils/bem"; import ResizeObserver from "../../../utils/resize-observer"; import { clamp, isDefined } from "../../../utils/utilities"; -import "./Video.scss"; +import "./Video.prefix.css"; import { VideoRegions } from "./VideoRegions"; import { ff } from "@humansignal/core"; diff --git a/web/libs/editor/src/tags/object/Video/Video.scss b/web/libs/editor/src/tags/object/Video/Video.prefix.css similarity index 100% rename from web/libs/editor/src/tags/object/Video/Video.scss rename to web/libs/editor/src/tags/object/Video/Video.prefix.css diff --git a/web/libs/editor/src/tags/visual/Header.jsx b/web/libs/editor/src/tags/visual/Header.jsx index bfb5dd9a81e2..e7c59c89a911 100644 --- a/web/libs/editor/src/tags/visual/Header.jsx +++ b/web/libs/editor/src/tags/visual/Header.jsx @@ -6,7 +6,7 @@ import Registry from "../../core/Registry"; import Tree from "../../core/Tree"; import { guidGenerator } from "../../utils/unique"; import { clamp } from "../../utils/utilities"; -import "./Header.scss"; +import "./Header.prefix.css"; import { Typography } from "@humansignal/ui"; /** diff --git a/web/libs/editor/src/tags/visual/Header.scss b/web/libs/editor/src/tags/visual/Header.prefix.css similarity index 100% rename from web/libs/editor/src/tags/visual/Header.scss rename to web/libs/editor/src/tags/visual/Header.prefix.css diff --git a/web/libs/editor/src/tools/Tools.module.scss b/web/libs/editor/src/tools/Tools.module.css similarity index 100% rename from web/libs/editor/src/tools/Tools.module.scss rename to web/libs/editor/src/tools/Tools.module.css diff --git a/web/libs/frontend-test/src/cypress/support/e2e.ts b/web/libs/frontend-test/src/cypress/support/e2e.ts index dbb656855897..ef4d737b0ac4 100644 --- a/web/libs/frontend-test/src/cypress/support/e2e.ts +++ b/web/libs/frontend-test/src/cypress/support/e2e.ts @@ -6,7 +6,7 @@ import "@cypress/code-coverage/support"; // Output spec steps require("cypress-terminal-report/src/installLogsCollector")({ filterLog: ([type, message]: [string, string]) => { - // Suppress noisy webpack-dev-server / Sass deprecation warnings + // Suppress noisy webpack-dev-server warnings if (type === "cons:warn" && typeof message === "string" && message.includes("[webpack-dev-server]")) { return false; } diff --git a/web/libs/storybook/.storybook/main.ts b/web/libs/storybook/.storybook/main.ts index 921a16947efe..c5fff72d4e6c 100644 --- a/web/libs/storybook/.storybook/main.ts +++ b/web/libs/storybook/.storybook/main.ts @@ -13,45 +13,71 @@ const config: StorybookConfig = { for (const rule of rules) { if (!rule || typeof rule === "string") continue; + if (!(rule as any).oneOf || !rule.test?.toString().includes("css")) continue; - const testString = rule.test?.toString() ?? ""; - const isCss = testString.includes("\\.css"); - const isScss = testString.includes("scss") || testString.includes("sass"); + const ruleAny = rule as any; - if (isCss) { - rule.exclude = /tailwind\.css/; - } + for (const oneOfRule of ruleAny.oneOf) { + if (!oneOfRule.use || !Array.isArray(oneOfRule.use)) continue; - // Apply BEM class prefixing to non-module SCSS files - if (isScss && rule.oneOf) { - const scssRules = rule.oneOf.filter((r: any) => { - if (!r.use) return false; - const testString = r.test?.toString() ?? ""; - // Skip CSS modules and node_modules - if (testString.match(/module/) || r.exclude?.toString().includes("node_modules")) return false; - // Target rules with css-loader - return ( - testString.match(/scss|sass/) && - Array.isArray(r.use) && - r.use.some((u: any) => u.loader && u.loader.includes("css-loader")) - ); - }); + oneOfRule.use = oneOfRule.use.filter( + (use: any) => !(use.loader && /sass-loader|stylus-loader|less-loader/.test(use.loader)), + ); - scssRules.forEach((r: any) => { - const cssLoader = r.use.find((use: any) => use.loader && use.loader.includes("css-loader")); + const innerTest = oneOfRule.test?.toString() ?? ""; + const cssLoader = oneOfRule.use.find((use: any) => use.loader?.includes("/css-loader/")); + + if (innerTest.includes("module") && cssLoader?.options) { + cssLoader.options.modules = { + mode: "local", + auto: true, + namedExport: false, + localIdentName: "[local]--[hash:base64:5]", + }; + } + } - if (cssLoader && cssLoader.options) { - cssLoader.options.modules = { - localIdentName: `${css_prefix}[local]`, - getLocalIdent(ctx: any, _ident: any, className: string) { - // Skip prefixing for Storybook preview styles (targets Storybook DOM classes) - if (ctx.resourcePath?.includes("preview.scss")) return className; - if (className.includes("ant")) return className; + const insertions: number[] = []; + ruleAny.oneOf.forEach((oneOfRule: any, idx: number) => { + if (!oneOfRule.test || !oneOfRule.use) return; + const t = oneOfRule.test.toString(); + if (/^\/\\\.css\$\/$/.test(t) && oneOfRule.use.some((u: any) => u.loader?.includes("/css-loader/"))) { + insertions.push(idx); + } + }); + + for (let i = insertions.length - 1; i >= 0; i--) { + const idx = insertions[i]; + const template = ruleAny.oneOf[idx]; + const prefixUse = template.use.map((u: any) => { + if (typeof u === "string") return u; + if (u.loader?.includes("/css-loader/")) { + return { + ...u, + options: { + ...(u.options ?? {}), + modules: { + localIdentName: `${css_prefix}[local]`, + getLocalIdent(ctx: any, _ident: any, className: string) { + if (ctx.resourcePath?.includes("preview.prefix.css")) return className; + if (className.includes("ant")) return className; + }, + }, }, }; } + return u; + }); + + ruleAny.oneOf.splice(idx, 0, { + test: /\.prefix\.css$/, + include: template.include, + exclude: /node_modules/, + use: prefixUse, }); } + + ruleAny.exclude = /tailwind\.css/; } return { diff --git a/web/libs/storybook/.storybook/preview.scss b/web/libs/storybook/.storybook/preview.prefix.css similarity index 99% rename from web/libs/storybook/.storybook/preview.scss rename to web/libs/storybook/.storybook/preview.prefix.css index b612f235ee8c..aa744a0206e9 100644 --- a/web/libs/storybook/.storybook/preview.scss +++ b/web/libs/storybook/.storybook/preview.prefix.css @@ -1,4 +1,4 @@ -@import '../../ui/src/styles'; +@import '../../ui/src/styles.prefix.css'; body { height: 100vh; diff --git a/web/libs/storybook/.storybook/preview.ts b/web/libs/storybook/.storybook/preview.ts index 9dea0ef3b7ff..202dc21452a4 100644 --- a/web/libs/storybook/.storybook/preview.ts +++ b/web/libs/storybook/.storybook/preview.ts @@ -1,5 +1,5 @@ import "@humansignal/ui/tailwind.css"; -import "./preview.scss"; +import "./preview.prefix.css"; import "../addons/theme-toggle/preview"; import type { Preview } from "@storybook/react"; diff --git a/web/libs/ui/README.md b/web/libs/ui/README.md index feea594a9dc1..2488f97ae06a 100644 --- a/web/libs/ui/README.md +++ b/web/libs/ui/README.md @@ -32,7 +32,7 @@ This will automatically generate a scaffold of the following: `./src/lib/button/` - `button.tsx` -- `button.module.scss` +- `button.module.css` - `button.stories.tsx` - `button.spec.tsx` @@ -40,13 +40,13 @@ This will automatically generate a scaffold of the following: 1. Perform the same step to creating a component for the component in question, continuing with the theme we'll use `Button` as an example. -2. Find all current definitions within the project that would require to be replaced, take the consolidated version of the existing component and place the current SCSS and TSX within the generated file equivalents from the previous step. (NOTE: Ensure to keep the new SCSS module styles import, replacing the old one that may have been copied over) +2. Find all current definitions within the project that would require to be replaced, take the consolidated version of the existing component and place the current CSS and TSX within the generated file equivalents from the previous step. (NOTE: Ensure to keep the new CSS module styles import, replacing the old one that may have been copied over) 3. Remove any `bem.tsx` imports 4. Replace the BEM components used with standard jsx tags. -5. Add the className's from the SCSS module styles object based on the same BEM structure previously found. (NOTE: Ensure that conditionals/modifiers are handled correctly) +5. Add the className's from the CSS module styles object based on the same BEM structure previously found. (NOTE: Ensure that conditionals/modifiers are handled correctly) 6. Add the component stories to the generated `button.stories.tsx` file. diff --git a/web/libs/ui/src/lib/Card/Card.module.scss b/web/libs/ui/src/lib/Card/Card.module.css similarity index 100% rename from web/libs/ui/src/lib/Card/Card.module.scss rename to web/libs/ui/src/lib/Card/Card.module.css diff --git a/web/libs/ui/src/lib/Card/Card.tsx b/web/libs/ui/src/lib/Card/Card.tsx index cb104f206718..b330f2cb7c50 100644 --- a/web/libs/ui/src/lib/Card/Card.tsx +++ b/web/libs/ui/src/lib/Card/Card.tsx @@ -1,4 +1,4 @@ -import styles from "./Card.module.scss"; +import styles from "./Card.module.css"; import { Tooltip } from "@humansignal/ui"; type CardProps = { diff --git a/web/libs/ui/src/lib/InputFile/InputFile.module.scss b/web/libs/ui/src/lib/InputFile/InputFile.module.css similarity index 100% rename from web/libs/ui/src/lib/InputFile/InputFile.module.scss rename to web/libs/ui/src/lib/InputFile/InputFile.module.css diff --git a/web/libs/ui/src/lib/InputFile/InputFile.tsx b/web/libs/ui/src/lib/InputFile/InputFile.tsx index 083ac58243ca..383ea34f5d61 100644 --- a/web/libs/ui/src/lib/InputFile/InputFile.tsx +++ b/web/libs/ui/src/lib/InputFile/InputFile.tsx @@ -9,7 +9,7 @@ type InputFileProps = HTMLAttributes & { props?: Record; }; -import styles from "./InputFile.module.scss"; +import styles from "./InputFile.module.css"; import type React from "react"; import { forwardRef, type HTMLAttributes, useCallback, useRef } from "react"; export const InputFile = forwardRef(({ name, className, text, onChange, ...props }: InputFileProps, ref: any) => { diff --git a/web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.module.scss b/web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.module.css similarity index 100% rename from web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.module.scss rename to web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.module.css diff --git a/web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.tsx b/web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.tsx index a82a5a826690..c61c2f2f27b1 100644 --- a/web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.tsx +++ b/web/libs/ui/src/lib/MultiStateToggle/MultiStateToggle.tsx @@ -1,5 +1,5 @@ import { clsx } from "clsx"; -import styles from "./MultiStateToggle.module.scss"; +import styles from "./MultiStateToggle.module.css"; import { useMemo } from "react"; export interface MultiStateToggleOption { diff --git a/web/libs/ui/src/lib/ThemeToggle/ThemeToggle.module.scss b/web/libs/ui/src/lib/ThemeToggle/ThemeToggle.module.css similarity index 100% rename from web/libs/ui/src/lib/ThemeToggle/ThemeToggle.module.scss rename to web/libs/ui/src/lib/ThemeToggle/ThemeToggle.module.css diff --git a/web/libs/ui/src/lib/ThemeToggle/ThemeToggle.tsx b/web/libs/ui/src/lib/ThemeToggle/ThemeToggle.tsx index 02d81fd18dcd..16182815a8f3 100644 --- a/web/libs/ui/src/lib/ThemeToggle/ThemeToggle.tsx +++ b/web/libs/ui/src/lib/ThemeToggle/ThemeToggle.tsx @@ -1,5 +1,5 @@ import { clsx } from "clsx"; -import styles from "./ThemeToggle.module.scss"; +import styles from "./ThemeToggle.module.css"; import { useCallback, useEffect, useMemo, useState } from "react"; import { ReactComponent as Sun } from "./icons/sun.svg"; import { ReactComponent as Moon } from "./icons/moon.svg"; diff --git a/web/libs/ui/src/lib/Tooltip/Tooltip.module.scss b/web/libs/ui/src/lib/Tooltip/Tooltip.module.css similarity index 100% rename from web/libs/ui/src/lib/Tooltip/Tooltip.module.scss rename to web/libs/ui/src/lib/Tooltip/Tooltip.module.css diff --git a/web/libs/ui/src/lib/Tooltip/Tooltip.tsx b/web/libs/ui/src/lib/Tooltip/Tooltip.tsx index 329d56659700..ac8d97cbfbe7 100644 --- a/web/libs/ui/src/lib/Tooltip/Tooltip.tsx +++ b/web/libs/ui/src/lib/Tooltip/Tooltip.tsx @@ -15,7 +15,7 @@ import { type Align, alignElements } from "@humansignal/core/lib/utils/dom"; import { isDefined } from "@humansignal/core/lib/utils/helpers"; import { aroundTransition } from "@humansignal/core/lib/utils/transition"; import { setRef } from "@humansignal/core/lib/utils/unwrapRef"; -import styles from "./Tooltip.module.scss"; +import styles from "./Tooltip.module.css"; import clsx from "clsx"; export type TooltipProps = PropsWithChildren<{ diff --git a/web/libs/ui/src/lib/Userpic/Userpic.module.scss b/web/libs/ui/src/lib/Userpic/Userpic.module.css similarity index 100% rename from web/libs/ui/src/lib/Userpic/Userpic.module.scss rename to web/libs/ui/src/lib/Userpic/Userpic.module.css diff --git a/web/libs/ui/src/lib/Userpic/Userpic.tsx b/web/libs/ui/src/lib/Userpic/Userpic.tsx index da4004ba9f1a..fd6c4da55c11 100644 --- a/web/libs/ui/src/lib/Userpic/Userpic.tsx +++ b/web/libs/ui/src/lib/Userpic/Userpic.tsx @@ -2,7 +2,7 @@ import chroma from "chroma-js"; import { type CSSProperties, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { isDefined, userDisplayName } from "@humansignal/core/lib/utils/helpers"; import { Tooltip } from "@humansignal/ui"; -import styles from "./Userpic.module.scss"; +import styles from "./Userpic.module.css"; import clsx from "clsx"; type UserpicProps = { diff --git a/web/libs/ui/src/lib/badge-group/badge-group.module.scss b/web/libs/ui/src/lib/badge-group/badge-group.module.css similarity index 100% rename from web/libs/ui/src/lib/badge-group/badge-group.module.scss rename to web/libs/ui/src/lib/badge-group/badge-group.module.css diff --git a/web/libs/ui/src/lib/badge-group/badge-group.tsx b/web/libs/ui/src/lib/badge-group/badge-group.tsx index 7300ea4cdf14..027081759ee6 100644 --- a/web/libs/ui/src/lib/badge-group/badge-group.tsx +++ b/web/libs/ui/src/lib/badge-group/badge-group.tsx @@ -1,7 +1,7 @@ import { forwardRef, useRef, useEffect, useState } from "react"; import { Badge, type BadgeProps } from "../badge/badge"; import { useBadgeOverflow } from "./useBadgeOverflow"; -import styles from "./badge-group.module.scss"; +import styles from "./badge-group.module.css"; import clsx from "clsx"; export interface BadgeGroupItem { diff --git a/web/libs/ui/src/lib/badge/badge.module.scss b/web/libs/ui/src/lib/badge/badge.module.css similarity index 100% rename from web/libs/ui/src/lib/badge/badge.module.scss rename to web/libs/ui/src/lib/badge/badge.module.css diff --git a/web/libs/ui/src/lib/badge/badge.tsx b/web/libs/ui/src/lib/badge/badge.tsx index db936ce62554..b051ea9b8d99 100644 --- a/web/libs/ui/src/lib/badge/badge.tsx +++ b/web/libs/ui/src/lib/badge/badge.tsx @@ -1,6 +1,6 @@ import { forwardRef } from "react"; import { cn } from "../../utils/utils"; -import styles from "./badge.module.scss"; +import styles from "./badge.module.css"; // Variant mapping: semantic names -> accent colors const VARIANT_MAP: Record = { diff --git a/web/libs/ui/src/lib/button/button.module.scss b/web/libs/ui/src/lib/button/button.module.css similarity index 100% rename from web/libs/ui/src/lib/button/button.module.scss rename to web/libs/ui/src/lib/button/button.module.css diff --git a/web/libs/ui/src/lib/button/button.tsx b/web/libs/ui/src/lib/button/button.tsx index 333f708ba41a..5eea048ceb69 100644 --- a/web/libs/ui/src/lib/button/button.tsx +++ b/web/libs/ui/src/lib/button/button.tsx @@ -1,6 +1,6 @@ import { cn } from "../../utils/utils"; import { forwardRef, type MouseEvent, type ButtonHTMLAttributes, type PropsWithChildren, type ReactNode } from "react"; -import styles from "./button.module.scss"; +import styles from "./button.module.css"; import { setRef } from "@humansignal/core/lib/utils/unwrapRef"; import { Tooltip } from "../Tooltip/Tooltip"; diff --git a/web/libs/ui/src/lib/callout/callout.module.scss b/web/libs/ui/src/lib/callout/callout.module.css similarity index 100% rename from web/libs/ui/src/lib/callout/callout.module.scss rename to web/libs/ui/src/lib/callout/callout.module.css diff --git a/web/libs/ui/src/lib/callout/callout.tsx b/web/libs/ui/src/lib/callout/callout.tsx index 50f47a92b30a..ccb614079a5e 100644 --- a/web/libs/ui/src/lib/callout/callout.tsx +++ b/web/libs/ui/src/lib/callout/callout.tsx @@ -1,6 +1,6 @@ import clsx from "clsx"; import type { HTMLAttributes, PropsWithChildren } from "react"; -import styles from "./callout.module.scss"; +import styles from "./callout.module.css"; export const CalloutVariants = { warning: clsx(styles.variantWarning), diff --git a/web/libs/ui/src/lib/card-new/card.module.scss b/web/libs/ui/src/lib/card-new/card.module.css similarity index 100% rename from web/libs/ui/src/lib/card-new/card.module.scss rename to web/libs/ui/src/lib/card-new/card.module.css diff --git a/web/libs/ui/src/lib/card-new/card.tsx b/web/libs/ui/src/lib/card-new/card.tsx index 590d50ae81d4..74507f4e162e 100644 --- a/web/libs/ui/src/lib/card-new/card.tsx +++ b/web/libs/ui/src/lib/card-new/card.tsx @@ -1,6 +1,6 @@ import clsx from "clsx"; import type { HTMLAttributes, PropsWithChildren } from "react"; -import styles from "./card.module.scss"; +import styles from "./card.module.css"; export function Card({ children, className, ...rest }: PropsWithChildren>) { const finalClass = clsx(styles.card, className); diff --git a/web/libs/ui/src/lib/checkbox/checkbox.module.scss b/web/libs/ui/src/lib/checkbox/checkbox.module.css similarity index 100% rename from web/libs/ui/src/lib/checkbox/checkbox.module.scss rename to web/libs/ui/src/lib/checkbox/checkbox.module.css diff --git a/web/libs/ui/src/lib/checkbox/checkbox.tsx b/web/libs/ui/src/lib/checkbox/checkbox.tsx index bb62f775f373..c4873b8610c3 100644 --- a/web/libs/ui/src/lib/checkbox/checkbox.tsx +++ b/web/libs/ui/src/lib/checkbox/checkbox.tsx @@ -1,6 +1,6 @@ import { type InputHTMLAttributes, useEffect, useRef } from "react"; import { clsx } from "clsx"; -import styles from "./checkbox.module.scss"; +import styles from "./checkbox.module.css"; export interface CheckboxProps extends Omit, "type"> { indeterminate?: boolean; diff --git a/web/libs/ui/src/lib/code-block/code-block.module.scss b/web/libs/ui/src/lib/code-block/code-block.module.css similarity index 100% rename from web/libs/ui/src/lib/code-block/code-block.module.scss rename to web/libs/ui/src/lib/code-block/code-block.module.css diff --git a/web/libs/ui/src/lib/code-block/code-block.tsx b/web/libs/ui/src/lib/code-block/code-block.tsx index b7f50c007d52..fcdceb7dae6e 100644 --- a/web/libs/ui/src/lib/code-block/code-block.tsx +++ b/web/libs/ui/src/lib/code-block/code-block.tsx @@ -1,5 +1,5 @@ import { Button, cnm, IconCheck, IconCopy } from "@humansignal/ui"; -import styles from "./code-block.module.scss"; +import styles from "./code-block.module.css"; import { useCopyText } from "@humansignal/core/lib/hooks/useCopyText"; export function CodeBlock({ diff --git a/web/libs/ui/src/lib/code-editor/code-editor.module.scss b/web/libs/ui/src/lib/code-editor/code-editor.module.css similarity index 100% rename from web/libs/ui/src/lib/code-editor/code-editor.module.scss rename to web/libs/ui/src/lib/code-editor/code-editor.module.css diff --git a/web/libs/ui/src/lib/code-editor/code-editor.tsx b/web/libs/ui/src/lib/code-editor/code-editor.tsx index 70071564a6be..f19304b1f22b 100644 --- a/web/libs/ui/src/lib/code-editor/code-editor.tsx +++ b/web/libs/ui/src/lib/code-editor/code-editor.tsx @@ -18,7 +18,7 @@ import "codemirror/lib/codemirror.css"; import "codemirror/addon/hint/show-hint.css"; import "codemirror/addon/dialog/dialog.css"; import "codemirror/addon/search/matchesonscrollbar.css"; -import styles from "./code-editor.module.scss"; +import styles from "./code-editor.module.css"; import { cn } from "@humansignal/shad/utils"; import { forwardRef } from "react"; diff --git a/web/libs/ui/src/lib/data-table/data-table.module.scss b/web/libs/ui/src/lib/data-table/data-table.module.css similarity index 100% rename from web/libs/ui/src/lib/data-table/data-table.module.scss rename to web/libs/ui/src/lib/data-table/data-table.module.css diff --git a/web/libs/ui/src/lib/data-table/data-table.tsx b/web/libs/ui/src/lib/data-table/data-table.tsx index ed7c1c264736..bf99cfe1ef41 100644 --- a/web/libs/ui/src/lib/data-table/data-table.tsx +++ b/web/libs/ui/src/lib/data-table/data-table.tsx @@ -27,7 +27,7 @@ import { Tooltip } from "../Tooltip/Tooltip"; import { IconSortUp, IconSortDown, IconSearch, IconInfoOutline } from "@humansignal/icons"; import { EmptyState } from "../empty-state/empty-state"; import { Skeleton } from "../skeleton/skeleton"; -import styles from "./data-table.module.scss"; +import styles from "./data-table.module.css"; export type DataShape = Record[]; diff --git a/web/libs/ui/src/lib/date-range-picker/calendar-picker.module.scss b/web/libs/ui/src/lib/date-range-picker/calendar-picker.module.css similarity index 100% rename from web/libs/ui/src/lib/date-range-picker/calendar-picker.module.scss rename to web/libs/ui/src/lib/date-range-picker/calendar-picker.module.css diff --git a/web/libs/ui/src/lib/date-range-picker/calendar-picker.tsx b/web/libs/ui/src/lib/date-range-picker/calendar-picker.tsx index a3b7672fc840..43e27eead1be 100644 --- a/web/libs/ui/src/lib/date-range-picker/calendar-picker.tsx +++ b/web/libs/ui/src/lib/date-range-picker/calendar-picker.tsx @@ -8,7 +8,7 @@ import { mapSelected, type SelectedMap, } from "./date-utils"; -import styles from "./calendar-picker.module.scss"; +import styles from "./calendar-picker.module.css"; import clsx from "clsx"; type CalendarPickerProps = { diff --git a/web/libs/ui/src/lib/date-range-picker/date-range-picker.module.scss b/web/libs/ui/src/lib/date-range-picker/date-range-picker.module.css similarity index 100% rename from web/libs/ui/src/lib/date-range-picker/date-range-picker.module.scss rename to web/libs/ui/src/lib/date-range-picker/date-range-picker.module.css diff --git a/web/libs/ui/src/lib/date-range-picker/date-range-picker.tsx b/web/libs/ui/src/lib/date-range-picker/date-range-picker.tsx index 5601f94c1390..a032f995e05a 100644 --- a/web/libs/ui/src/lib/date-range-picker/date-range-picker.tsx +++ b/web/libs/ui/src/lib/date-range-picker/date-range-picker.tsx @@ -26,7 +26,7 @@ import { Space } from "../space/space"; import { Sidebar } from "./sidebar"; import { DateTimeInput } from "./date-time-input"; import { Typography } from "../typography/typography"; -import styles from "./date-range-picker.module.scss"; +import styles from "./date-range-picker.module.css"; const today = new Date(); const month = today.getMonth(); diff --git a/web/libs/ui/src/lib/date-range-picker/date-time-input.module.scss b/web/libs/ui/src/lib/date-range-picker/date-time-input.module.css similarity index 100% rename from web/libs/ui/src/lib/date-range-picker/date-time-input.module.scss rename to web/libs/ui/src/lib/date-range-picker/date-time-input.module.css diff --git a/web/libs/ui/src/lib/date-range-picker/date-time-input.tsx b/web/libs/ui/src/lib/date-range-picker/date-time-input.tsx index 2ef404b3dc09..427509d2e422 100644 --- a/web/libs/ui/src/lib/date-range-picker/date-time-input.tsx +++ b/web/libs/ui/src/lib/date-range-picker/date-time-input.tsx @@ -19,7 +19,7 @@ import { type Selected, Side, } from "./date-utils"; -import styles from "./date-time-input.module.scss"; +import styles from "./date-time-input.module.css"; import clsx from "clsx"; type SimpleInputProps = { diff --git a/web/libs/ui/src/lib/dropdown/dropdown.scss b/web/libs/ui/src/lib/dropdown/dropdown.prefix.css similarity index 100% rename from web/libs/ui/src/lib/dropdown/dropdown.scss rename to web/libs/ui/src/lib/dropdown/dropdown.prefix.css diff --git a/web/libs/ui/src/lib/dropdown/dropdown.test.tsx b/web/libs/ui/src/lib/dropdown/dropdown.test.tsx index aced186e3d2f..3a25bcd873ec 100644 --- a/web/libs/ui/src/lib/dropdown/dropdown.test.tsx +++ b/web/libs/ui/src/lib/dropdown/dropdown.test.tsx @@ -5,7 +5,7 @@ import { Dropdown, type DropdownRef } from "./dropdown"; import { DropdownContext, type DropdownContextValue } from "./dropdown-context"; // Mock the SCSS module -jest.mock("./dropdown.scss", () => ({})); +jest.mock("./dropdown.prefix.css", () => ({})); // Mock the alignment utility jest.mock("@humansignal/core/lib/utils/dom", () => ({ diff --git a/web/libs/ui/src/lib/dropdown/dropdown.tsx b/web/libs/ui/src/lib/dropdown/dropdown.tsx index bedd2f5b14d2..28f1d9b96ab2 100644 --- a/web/libs/ui/src/lib/dropdown/dropdown.tsx +++ b/web/libs/ui/src/lib/dropdown/dropdown.tsx @@ -18,7 +18,7 @@ import { aroundTransition } from "@humansignal/core/lib/utils/transition"; import { DropdownContext } from "./dropdown-context"; import { DropdownTrigger } from "./dropdown-trigger"; -import "./dropdown.scss"; +import "./dropdown.prefix.css"; let zIndexCounter = 0; diff --git a/web/libs/ui/src/lib/empty-state/empty-state.module.scss b/web/libs/ui/src/lib/empty-state/empty-state.module.css similarity index 100% rename from web/libs/ui/src/lib/empty-state/empty-state.module.scss rename to web/libs/ui/src/lib/empty-state/empty-state.module.css diff --git a/web/libs/ui/src/lib/empty-state/empty-state.spec.tsx b/web/libs/ui/src/lib/empty-state/empty-state.spec.tsx index 5b555842e400..0aa73e3f216c 100644 --- a/web/libs/ui/src/lib/empty-state/empty-state.spec.tsx +++ b/web/libs/ui/src/lib/empty-state/empty-state.spec.tsx @@ -5,7 +5,7 @@ import { IconInbox } from "@humansignal/icons"; import { Button } from "../button/button"; // Mock the styles since they're SCSS modules -jest.mock("./empty-state.module.scss", () => ({ +jest.mock("./empty-state.module.css", () => ({ base: "base", // Size classes "size-large": "size-large", diff --git a/web/libs/ui/src/lib/empty-state/empty-state.tsx b/web/libs/ui/src/lib/empty-state/empty-state.tsx index e5f8c1ca1de2..6052dd0eb5c9 100644 --- a/web/libs/ui/src/lib/empty-state/empty-state.tsx +++ b/web/libs/ui/src/lib/empty-state/empty-state.tsx @@ -1,7 +1,7 @@ import React, { type ReactNode, forwardRef } from "react"; import { cn } from "../../utils/utils"; import { Typography } from "../typography/typography"; -import styles from "./empty-state.module.scss"; +import styles from "./empty-state.module.css"; // Size configuration const sizes = { diff --git a/web/libs/ui/src/lib/enterprise-badge/enterprise-badge.module.scss b/web/libs/ui/src/lib/enterprise-badge/enterprise-badge.module.css similarity index 100% rename from web/libs/ui/src/lib/enterprise-badge/enterprise-badge.module.scss rename to web/libs/ui/src/lib/enterprise-badge/enterprise-badge.module.css diff --git a/web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.module.scss b/web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.module.css similarity index 100% rename from web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.module.scss rename to web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.module.css diff --git a/web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.tsx b/web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.tsx index 838bf71f3016..33b01f73c549 100644 --- a/web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.tsx +++ b/web/libs/ui/src/lib/enterprise-upgrade-overlay/enterprise-upgrade-overlay.tsx @@ -3,7 +3,7 @@ import { cn } from "../../utils/utils"; import { EnterpriseBadge } from "../enterprise-badge/enterprise-badge"; import { Button } from "../button/button"; import { Typography } from "../typography/typography"; -import styles from "./enterprise-upgrade-overlay.module.scss"; +import styles from "./enterprise-upgrade-overlay.module.css"; /** * EnterpriseUpgradeOverlay Component diff --git a/web/libs/ui/src/lib/json-viewer/json-viewer.module.scss b/web/libs/ui/src/lib/json-viewer/json-viewer.module.css similarity index 100% rename from web/libs/ui/src/lib/json-viewer/json-viewer.module.scss rename to web/libs/ui/src/lib/json-viewer/json-viewer.module.css diff --git a/web/libs/ui/src/lib/json-viewer/json-viewer.test.tsx b/web/libs/ui/src/lib/json-viewer/json-viewer.test.tsx index c6e3c0e14826..46fbdf7cd67f 100644 --- a/web/libs/ui/src/lib/json-viewer/json-viewer.test.tsx +++ b/web/libs/ui/src/lib/json-viewer/json-viewer.test.tsx @@ -39,7 +39,7 @@ jest.mock("./reader-view-button", () => ({ ReaderViewButton: () => null, })); -jest.mock("./json-viewer.module.scss", () => ({})); +jest.mock("./json-viewer.module.css", () => ({})); describe("JsonViewer filtered search", () => { beforeEach(() => { diff --git a/web/libs/ui/src/lib/json-viewer/json-viewer.tsx b/web/libs/ui/src/lib/json-viewer/json-viewer.tsx index 11e8fd96d1a6..fd2ba67ffb5b 100644 --- a/web/libs/ui/src/lib/json-viewer/json-viewer.tsx +++ b/web/libs/ui/src/lib/json-viewer/json-viewer.tsx @@ -6,7 +6,7 @@ import { Button } from "../button/button"; import { Tooltip } from "../Tooltip/Tooltip"; import type { JsonViewerProps } from "./types"; import { ReaderViewButton } from "./reader-view-button"; -import styles from "./json-viewer.module.scss"; +import styles from "./json-viewer.module.css"; // Custom Label Studio theme for json-edit-react // Note: Colors are applied via SCSS using :global selectors because diff --git a/web/libs/ui/src/lib/json-viewer/reader-view-modal.module.scss b/web/libs/ui/src/lib/json-viewer/reader-view-modal.module.css similarity index 100% rename from web/libs/ui/src/lib/json-viewer/reader-view-modal.module.scss rename to web/libs/ui/src/lib/json-viewer/reader-view-modal.module.css diff --git a/web/libs/ui/src/lib/json-viewer/reader-view-modal.tsx b/web/libs/ui/src/lib/json-viewer/reader-view-modal.tsx index 91dafa89c245..83dfd1c038c6 100644 --- a/web/libs/ui/src/lib/json-viewer/reader-view-modal.tsx +++ b/web/libs/ui/src/lib/json-viewer/reader-view-modal.tsx @@ -3,7 +3,7 @@ import sanitizeHtml from "sanitize-html"; import { Markdown } from "../../../../editor/src/components/Markdown/Markdown"; import { Modal } from "../modal"; import { Tabs, TabsList, TabsTrigger } from "../tabs/tabs"; -import styles from "./reader-view-modal.module.scss"; +import styles from "./reader-view-modal.module.css"; type ContentFormat = "plain" | "markdown" | "html"; diff --git a/web/libs/ui/src/lib/label/label.module.scss b/web/libs/ui/src/lib/label/label.module.css similarity index 100% rename from web/libs/ui/src/lib/label/label.module.scss rename to web/libs/ui/src/lib/label/label.module.css diff --git a/web/libs/ui/src/lib/label/label.tsx b/web/libs/ui/src/lib/label/label.tsx index 202c193f51a5..5075480ffa57 100644 --- a/web/libs/ui/src/lib/label/label.tsx +++ b/web/libs/ui/src/lib/label/label.tsx @@ -1,6 +1,6 @@ import type { PropsWithChildren } from "react"; import clsx from "clsx"; -import styles from "./label.module.scss"; +import styles from "./label.module.css"; type LabelProps = PropsWithChildren<{ text: string; required?: boolean; diff --git a/web/libs/ui/src/lib/message/message.module.scss b/web/libs/ui/src/lib/message/message.module.css similarity index 100% rename from web/libs/ui/src/lib/message/message.module.scss rename to web/libs/ui/src/lib/message/message.module.css diff --git a/web/libs/ui/src/lib/message/message.spec.tsx b/web/libs/ui/src/lib/message/message.spec.tsx index 69636445445b..33d280d96b32 100644 --- a/web/libs/ui/src/lib/message/message.spec.tsx +++ b/web/libs/ui/src/lib/message/message.spec.tsx @@ -4,7 +4,7 @@ import { Message, type MessageProps } from "./message"; import { IconUpload } from "@humansignal/icons"; // Mock the styles since they're SCSS modules -jest.mock("./message.module.scss", () => ({ +jest.mock("./message.module.css", () => ({ base: "base", // Size classes "size-medium": "size-medium", diff --git a/web/libs/ui/src/lib/message/message.tsx b/web/libs/ui/src/lib/message/message.tsx index 443e01fb8684..21e4a2b87507 100644 --- a/web/libs/ui/src/lib/message/message.tsx +++ b/web/libs/ui/src/lib/message/message.tsx @@ -9,7 +9,7 @@ import { IconCloseCircleOutline, IconClose, } from "@humansignal/icons"; -import styles from "./message.module.scss"; +import styles from "./message.module.css"; // Variant configuration const variants = { diff --git a/web/libs/ui/src/lib/modal/Modal.scss b/web/libs/ui/src/lib/modal/Modal.prefix.css similarity index 100% rename from web/libs/ui/src/lib/modal/Modal.scss rename to web/libs/ui/src/lib/modal/Modal.prefix.css diff --git a/web/libs/ui/src/lib/modal/ModalPopup.tsx b/web/libs/ui/src/lib/modal/ModalPopup.tsx index f5ba186d1812..9428c0a2a0b0 100644 --- a/web/libs/ui/src/lib/modal/ModalPopup.tsx +++ b/web/libs/ui/src/lib/modal/ModalPopup.tsx @@ -10,7 +10,7 @@ import { ModalFooter } from "./ModalFooter"; import { ModalHeader } from "./ModalHeader"; import { ModalTitle } from "./ModalTitle"; -import "./Modal.scss"; +import "./Modal.prefix.css"; const ModalContext = createContext(null); diff --git a/web/libs/ui/src/lib/pagination/pagination.module.scss b/web/libs/ui/src/lib/pagination/pagination.module.css similarity index 100% rename from web/libs/ui/src/lib/pagination/pagination.module.scss rename to web/libs/ui/src/lib/pagination/pagination.module.css diff --git a/web/libs/ui/src/lib/pagination/pagination.tsx b/web/libs/ui/src/lib/pagination/pagination.tsx index 67b7d0ebc5bd..03ae6d0032ff 100644 --- a/web/libs/ui/src/lib/pagination/pagination.tsx +++ b/web/libs/ui/src/lib/pagination/pagination.tsx @@ -1,7 +1,7 @@ import { type FC, type KeyboardEvent, useCallback, useMemo, useRef, useState } from "react"; import { Select } from "../select/select"; import { cn } from "../../utils/utils"; -import styles from "./pagination.module.scss"; +import styles from "./pagination.module.css"; import { IconChevronLeft, IconChevronRight, IconFastForward, IconRewind } from "@humansignal/icons"; import { Button } from "../button/button"; import { Typography } from "../typography/typography"; diff --git a/web/libs/ui/src/lib/popover/popover.module.scss b/web/libs/ui/src/lib/popover/popover.module.css similarity index 100% rename from web/libs/ui/src/lib/popover/popover.module.scss rename to web/libs/ui/src/lib/popover/popover.module.css diff --git a/web/libs/ui/src/lib/popover/popover.tsx b/web/libs/ui/src/lib/popover/popover.tsx index 1367af0c5a95..1adff423aad8 100644 --- a/web/libs/ui/src/lib/popover/popover.tsx +++ b/web/libs/ui/src/lib/popover/popover.tsx @@ -7,7 +7,7 @@ import { } from "../../shad/components/ui/popover"; import { twMerge } from "tailwind-merge"; import clsx from "clsx"; -import styles from "./popover.module.scss"; +import styles from "./popover.module.css"; export interface PopoverProps extends React.ComponentProps { trigger?: React.ReactNode; diff --git a/web/libs/ui/src/lib/select/select.module.scss b/web/libs/ui/src/lib/select/select.module.css similarity index 100% rename from web/libs/ui/src/lib/select/select.module.scss rename to web/libs/ui/src/lib/select/select.module.css diff --git a/web/libs/ui/src/lib/select/select.spec.tsx b/web/libs/ui/src/lib/select/select.spec.tsx index 0b9c082cdc7d..40f0f0acb717 100644 --- a/web/libs/ui/src/lib/select/select.spec.tsx +++ b/web/libs/ui/src/lib/select/select.spec.tsx @@ -13,7 +13,7 @@ global.ResizeObserver = class ResizeObserver { Element.prototype.scrollIntoView = jest.fn(); // Mock the styles -jest.mock("./select.module.scss", () => ({ +jest.mock("./select.module.css", () => ({ selectTrigger: "selectTrigger", isInline: "isInline", isOpen: "isOpen", diff --git a/web/libs/ui/src/lib/select/select.tsx b/web/libs/ui/src/lib/select/select.tsx index d86bf7691100..ba5175c2ee5e 100644 --- a/web/libs/ui/src/lib/select/select.tsx +++ b/web/libs/ui/src/lib/select/select.tsx @@ -15,7 +15,7 @@ import { Badge } from "../badge/badge"; import { isDefined } from "@humansignal/core/lib/utils/helpers"; import { IconChevron, IconChevronDown } from "@humansignal/icons"; import clsx from "clsx"; -import styles from "./select.module.scss"; +import styles from "./select.module.css"; import { cn, cnm } from "../../utils/utils"; import { VariableSizeList } from "react-window"; import InfiniteLoader from "react-window-infinite-loader"; diff --git a/web/libs/ui/src/lib/space/space.module.scss b/web/libs/ui/src/lib/space/space.module.css similarity index 100% rename from web/libs/ui/src/lib/space/space.module.scss rename to web/libs/ui/src/lib/space/space.module.css diff --git a/web/libs/ui/src/lib/space/space.tsx b/web/libs/ui/src/lib/space/space.tsx index f085e5c93913..b4f2d2707319 100644 --- a/web/libs/ui/src/lib/space/space.tsx +++ b/web/libs/ui/src/lib/space/space.tsx @@ -1,5 +1,5 @@ import { cn } from "@humansignal/shad/utils"; -import styles from "./space.module.scss"; +import styles from "./space.module.css"; import type { CSSProperties, PropsWithChildren } from "react"; export type SpaceProps = PropsWithChildren<{ diff --git a/web/libs/ui/src/lib/sparkles/sparkles.module.scss b/web/libs/ui/src/lib/sparkles/sparkles.module.css similarity index 100% rename from web/libs/ui/src/lib/sparkles/sparkles.module.scss rename to web/libs/ui/src/lib/sparkles/sparkles.module.css diff --git a/web/libs/ui/src/lib/sparkles/sparkles.tsx b/web/libs/ui/src/lib/sparkles/sparkles.tsx index 8b6c8d5ad734..ca9e31cf1e97 100644 --- a/web/libs/ui/src/lib/sparkles/sparkles.tsx +++ b/web/libs/ui/src/lib/sparkles/sparkles.tsx @@ -1,7 +1,7 @@ import React from "react"; import { IconSparkle } from "@humansignal/icons"; import { usePrefersReducedMotion, useRandomInterval } from "../../hooks/sparkles"; -import styles from "./sparkles.module.scss"; +import styles from "./sparkles.module.css"; import clsx from "clsx"; import type { SparkleAreaOptions, Sparkle } from "./types"; import { randomPositionAvoidingCenter } from "./utils"; diff --git a/web/libs/ui/src/lib/spinner/spinner.module.scss b/web/libs/ui/src/lib/spinner/spinner.module.css similarity index 100% rename from web/libs/ui/src/lib/spinner/spinner.module.scss rename to web/libs/ui/src/lib/spinner/spinner.module.css diff --git a/web/libs/ui/src/lib/spinner/spinner.tsx b/web/libs/ui/src/lib/spinner/spinner.tsx index ba86d0867285..405484f79170 100644 --- a/web/libs/ui/src/lib/spinner/spinner.tsx +++ b/web/libs/ui/src/lib/spinner/spinner.tsx @@ -1,5 +1,5 @@ import type { CSSProperties } from "react"; -import styles from "./spinner.module.scss"; +import styles from "./spinner.module.css"; import { cn } from "@humansignal/shad/utils"; export type SpinnerProps = { diff --git a/web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.module.scss b/web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.module.css similarity index 100% rename from web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.module.scss rename to web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.module.css diff --git a/web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.tsx b/web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.tsx index 807d43e41b5e..ea4e205800d4 100644 --- a/web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.tsx +++ b/web/libs/ui/src/lib/tag-autocomplete/tag-autocomplete.tsx @@ -15,7 +15,7 @@ import { cnm } from "../../utils/utils"; import { Tag } from "./tag"; import { useTagAutocomplete } from "./use-tag-autocomplete"; import type { TagAutocompleteProps, NormalizedTagOption } from "./types"; -import styles from "./tag-autocomplete.module.scss"; +import styles from "./tag-autocomplete.module.css"; export const TagAutocomplete = forwardRef( (props: TagAutocompleteProps, ref: ForwardedRef) => { diff --git a/web/libs/ui/src/lib/tag-autocomplete/tag.tsx b/web/libs/ui/src/lib/tag-autocomplete/tag.tsx index ff686f65a866..2105d4bfafbd 100644 --- a/web/libs/ui/src/lib/tag-autocomplete/tag.tsx +++ b/web/libs/ui/src/lib/tag-autocomplete/tag.tsx @@ -2,7 +2,7 @@ import { forwardRef, type KeyboardEvent, type MouseEvent } from "react"; import { IconClose } from "@humansignal/icons"; import { Badge } from "@humansignal/ui"; import { cnm } from "../../utils/utils"; -import styles from "./tag-autocomplete.module.scss"; +import styles from "./tag-autocomplete.module.css"; export interface TagProps { /** Tag label text */ diff --git a/web/libs/ui/src/lib/toast/toast.module.scss b/web/libs/ui/src/lib/toast/toast.module.css similarity index 100% rename from web/libs/ui/src/lib/toast/toast.module.scss rename to web/libs/ui/src/lib/toast/toast.module.css diff --git a/web/libs/ui/src/lib/toast/toast.tsx b/web/libs/ui/src/lib/toast/toast.tsx index 42f6444f0bfb..8bdbac0a1323 100644 --- a/web/libs/ui/src/lib/toast/toast.tsx +++ b/web/libs/ui/src/lib/toast/toast.tsx @@ -1,6 +1,6 @@ import { createContext, type FC, type ReactNode, useCallback, useContext, useState } from "react"; import * as ToastPrimitive from "@radix-ui/react-toast"; -import styles from "./toast.module.scss"; +import styles from "./toast.module.css"; import clsx from "clsx"; import { IconCross } from "../../assets/icons"; import { nanoid } from "nanoid"; diff --git a/web/libs/ui/src/lib/toggle/toggle.module.scss b/web/libs/ui/src/lib/toggle/toggle.module.css similarity index 100% rename from web/libs/ui/src/lib/toggle/toggle.module.scss rename to web/libs/ui/src/lib/toggle/toggle.module.css diff --git a/web/libs/ui/src/lib/toggle/toggle.tsx b/web/libs/ui/src/lib/toggle/toggle.tsx index b6addaad96e9..83bbacc9eb3a 100644 --- a/web/libs/ui/src/lib/toggle/toggle.tsx +++ b/web/libs/ui/src/lib/toggle/toggle.tsx @@ -1,7 +1,7 @@ import { forwardRef, useCallback, useEffect, useMemo, useState } from "react"; import clsx from "clsx"; import { Label } from "@humansignal/ui"; -import styles from "./toggle.module.scss"; +import styles from "./toggle.module.css"; type ToggleProps = { className?: string; diff --git a/web/libs/ui/src/lib/typography/typography.module.scss b/web/libs/ui/src/lib/typography/typography.module.css similarity index 100% rename from web/libs/ui/src/lib/typography/typography.module.scss rename to web/libs/ui/src/lib/typography/typography.module.css diff --git a/web/libs/ui/src/lib/typography/typography.tsx b/web/libs/ui/src/lib/typography/typography.tsx index bf821eab4d4c..d46b08f50d21 100644 --- a/web/libs/ui/src/lib/typography/typography.tsx +++ b/web/libs/ui/src/lib/typography/typography.tsx @@ -1,7 +1,7 @@ import type React from "react"; import { forwardRef, useState, useEffect, useRef } from "react"; import { cnm } from "../../utils/utils"; -import styles from "./typography.module.scss"; +import styles from "./typography.module.css"; // Size constants const SIZES = { diff --git a/web/libs/ui/src/styles.scss b/web/libs/ui/src/styles.prefix.css similarity index 51% rename from web/libs/ui/src/styles.scss rename to web/libs/ui/src/styles.prefix.css index e3be1263ae27..621b0bfd5c14 100644 --- a/web/libs/ui/src/styles.scss +++ b/web/libs/ui/src/styles.prefix.css @@ -3,8 +3,8 @@ */ /* Import design tokens */ -@import './tokens/tokens'; -@import './tokens/typography'; -@import './tokens/colors'; +@import './tokens/tokens.prefix.css'; +@import './tokens/typography.prefix.css'; +@import './tokens/colors.prefix.css'; /* Additional global styles can be added here */ diff --git a/web/libs/ui/src/tokens/colors.scss b/web/libs/ui/src/tokens/colors.prefix.css similarity index 99% rename from web/libs/ui/src/tokens/colors.scss rename to web/libs/ui/src/tokens/colors.prefix.css index 26ab660350cb..f251c7f0f922 100644 --- a/web/libs/ui/src/tokens/colors.scss +++ b/web/libs/ui/src/tokens/colors.prefix.css @@ -1,6 +1,6 @@ /* Legacy colors */ /* TODO: Remove these once we've converted all the components to use the new colors */ -/* which are defined in the `tokens.scss` file */ +/* which are defined in the `tokens.prefix.css` file */ :root { /* Deprecated: [DO NOT USE] */ --black-raw: 0 0 0; diff --git a/web/libs/ui/src/tokens/tokens.scss b/web/libs/ui/src/tokens/tokens.prefix.css similarity index 100% rename from web/libs/ui/src/tokens/tokens.scss rename to web/libs/ui/src/tokens/tokens.prefix.css diff --git a/web/libs/ui/src/tokens/typography.scss b/web/libs/ui/src/tokens/typography.prefix.css similarity index 100% rename from web/libs/ui/src/tokens/typography.scss rename to web/libs/ui/src/tokens/typography.prefix.css diff --git a/web/nx.json b/web/nx.json index 2257882f7bd3..cf03095234c3 100644 --- a/web/nx.json +++ b/web/nx.json @@ -41,15 +41,15 @@ "generators": { "@nx/react": { "application": { - "style": "scss", + "style": "css", "bundler": "webpack", "babel": true }, "component": { - "style": "scss" + "style": "css" }, "library": { - "style": "scss", + "style": "css", "unitTestRunner": "jest" } } diff --git a/web/package.json b/web/package.json index 59d611164b54..7646c601de8a 100644 --- a/web/package.json +++ b/web/package.json @@ -7,7 +7,7 @@ "ui:test:component": "nx test-component ui", "biome": "biome", "lint": "biome check --write .", - "lint-scss": "yarn stylelint '**/*.scss' --fix", + "lint-css": "biome check --write '**/*.css'", "ls:dev": "nx run labelstudio:serve:development", "ls:watch": "nx run labelstudio:build:development --watch", "ls:build": "nx run labelstudio:build:production", @@ -204,17 +204,13 @@ "postcss": "8.4.38", "postcss-import": "^16.1.0", "postcss-loader": "^7.3.3", + "postcss-nested": "^7.0.2", "proper-lockfile": "^4.1.2", "react-refresh": "^0.10.0", - "sass": "^1.55.0", - "sass-loader": "16.0.5", "shallow-equal": "^1.2.1", "sinon": "^17.0.1", "source-map-loader": "^5.0.0", "style-loader": "^3.3.3", - "stylelint": "^16.9.0", - "stylelint-config-standard-scss": "^13.1.0", - "stylelint-config-tailwindcss": "^0.0.7", "tailwind-scrollbar": "3", "tailwindcss": "3.4.3", "tailwindcss-animate": "^1.0.7", @@ -247,8 +243,16 @@ "moment": "2.29.4", "on-headers": "1.1.0", "form-data": "4.0.4", - "qs": ">=6.14.2", + "sass": "npm:empty-npm-package@1.0.0", + "sass-loader": "npm:empty-npm-package@1.0.0", + "sass-embedded": "npm:empty-npm-package@1.0.0", "stylus": "npm:empty-npm-package@1.0.0", + "less": "npm:empty-npm-package@1.0.0", + "less-loader": "npm:empty-npm-package@1.0.0", + "stylelint": "npm:empty-npm-package@1.0.0", + "stylelint-config-tailwindcss": "npm:empty-npm-package@1.0.0", + "stylelint-config-standard": "npm:empty-npm-package@1.0.0", + "qs": ">=6.14.2", "rollup": ">=4.59.0", "@isaacs/brace-expansion": ">=5.0.1", "immutable": ">=5.1.5", diff --git a/web/postcss.config.js b/web/postcss.config.js index 26acb6aeffad..138e97c18033 100644 --- a/web/postcss.config.js +++ b/web/postcss.config.js @@ -1,6 +1,7 @@ module.exports = { plugins: { "postcss-import": {}, + "postcss-nested": {}, autoprefixer: {}, tailwindcss: {}, }, diff --git a/web/tools/design-tokens-converter/README.md b/web/tools/design-tokens-converter/README.md index 714ad2967651..c8c095d28f09 100644 --- a/web/tools/design-tokens-converter/README.md +++ b/web/tools/design-tokens-converter/README.md @@ -24,17 +24,17 @@ nx design-tokens ui ``` 3. This will generate: - - `libs/ui/src/tokens/tokens.scss` - Contains CSS variables for light and dark themes + - `libs/ui/src/tokens/tokens.prefix.css` - Contains CSS variables for light and dark themes - `libs/ui/src/tokens/tokens.js` - Contains JavaScript object for Tailwind integration ## Importing the Generated Files ### CSS Variables -Import the SCSS file in your main stylesheet: +Import the CSS file in your main stylesheet: -```scss -@import 'libs/ui/src/tokens/tokens.scss'; +```css +@import 'libs/ui/src/tokens/tokens.prefix.css'; ``` ### Tailwind Integration diff --git a/web/tools/design-tokens-converter/design-tokens-converter.mjs b/web/tools/design-tokens-converter/design-tokens-converter.mjs index 0512606d812d..4495279a2fb1 100644 --- a/web/tools/design-tokens-converter/design-tokens-converter.mjs +++ b/web/tools/design-tokens-converter/design-tokens-converter.mjs @@ -86,7 +86,7 @@ const workspaceRoot = findWorkspaceRoot(); // Paths const designVariablesPath = path.join(workspaceRoot, "design-tokens.json"); -const cssOutputPath = path.join(workspaceRoot, "libs/ui/src/tokens/tokens.scss"); +const cssOutputPath = path.join(workspaceRoot, "libs/ui/src/tokens/tokens.prefix.css"); const jsOutputPath = path.join(workspaceRoot, "libs/ui/src/tokens/tokens.js"); /** diff --git a/web/tools/extract-antd-no-reset/extract-antd-no-reset.mjs b/web/tools/extract-antd-no-reset/extract-antd-no-reset.mjs index 85309fd2189b..0c7b5a185427 100644 --- a/web/tools/extract-antd-no-reset/extract-antd-no-reset.mjs +++ b/web/tools/extract-antd-no-reset/extract-antd-no-reset.mjs @@ -46,8 +46,6 @@ const header = `/*! * Modified version to exclude global resets * */ -/* stylelint-disable */ - /* This is a modified version of antd.css that excludes global reset styles */ `; diff --git a/web/tools/fix-bare-nesting.js b/web/tools/fix-bare-nesting.js deleted file mode 100644 index 333dc1f35748..000000000000 --- a/web/tools/fix-bare-nesting.js +++ /dev/null @@ -1,320 +0,0 @@ -#!/usr/bin/env node - -/** - * Transforms bare HTML element selectors nested inside CSS/SCSS rules - * to use the `&` prefix required by native CSS nesting. - * - * Before: .parent { div { color: red; } } - * After: .parent { & div { color: red; } } - * - * Only transforms lines that: - * 1. Are indented (nested inside a rule) - * 2. Start with a bare HTML element name - * 3. Are followed by `{`, `,`, or whitespace+selector continuation - * - * Leaves alone: - * - Lines starting with &, ., #, [, :, >, +, ~, *, @, / - * - Top-level (non-indented) selectors - * - Lines inside comments - * - Property declarations (contain `:` before `{`) - * - * Usage: - * node tools/fix-bare-nesting.js --dry-run # Preview changes - * node tools/fix-bare-nesting.js # Apply changes - * node tools/fix-bare-nesting.js --file path # Single file - */ - -const fs = require("node:fs"); -const path = require("node:path"); - -const WEB_ROOT = path.resolve(__dirname, ".."); - -const HTML_ELEMENTS = new Set([ - "a", - "abbr", - "address", - "article", - "aside", - "audio", - "b", - "bdi", - "bdo", - "blockquote", - "body", - "br", - "button", - "canvas", - "caption", - "cite", - "code", - "col", - "colgroup", - "data", - "datalist", - "dd", - "del", - "details", - "dfn", - "dialog", - "div", - "dl", - "dt", - "em", - "embed", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hgroup", - "hr", - "html", - "i", - "iframe", - "img", - "input", - "ins", - "kbd", - "label", - "legend", - "li", - "link", - "main", - "map", - "mark", - "menu", - "meter", - "nav", - "noscript", - "object", - "ol", - "optgroup", - "option", - "output", - "p", - "path", - "picture", - "pre", - "progress", - "q", - "rect", - "rp", - "rt", - "ruby", - "s", - "samp", - "script", - "search", - "section", - "select", - "slot", - "small", - "source", - "span", - "strong", - "style", - "sub", - "summary", - "sup", - "svg", - "table", - "tbody", - "td", - "template", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "track", - "u", - "ul", - "var", - "video", - "wbr", - "circle", - "ellipse", - "g", - "line", - "polygon", - "polyline", - "text", - "use", -]); - -function findScssFiles(dir, results = []) { - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - if (entry.name === "node_modules" || entry.name === "dist" || entry.name === ".scss-snapshots") continue; - findScssFiles(fullPath, results); - } else if (entry.isFile() && entry.name.endsWith(".scss")) { - results.push(fullPath); - } - } - return results; -} - -/** - * Matches a line that is a bare HTML element selector needing `&` prefix. - * Returns the transformed line, or null if no transform needed. - */ -function transformLine(line, nestingDepth, inComment) { - if (inComment) return null; - if (nestingDepth < 1) return null; - - const trimmed = line.trimStart(); - - if (trimmed === "" || trimmed.startsWith("//") || trimmed.startsWith("/*") || trimmed.startsWith("*")) return null; - if ( - trimmed.startsWith("&") || - trimmed.startsWith(".") || - trimmed.startsWith("#") || - trimmed.startsWith("[") || - trimmed.startsWith(":") || - trimmed.startsWith(">") || - trimmed.startsWith("+") || - trimmed.startsWith("~") || - trimmed.startsWith("*") || - trimmed.startsWith("@") || - trimmed.startsWith("/") || - trimmed.startsWith("$") || - trimmed.startsWith("-") || - trimmed.startsWith('"') || - trimmed.startsWith("'") || - trimmed.startsWith("#{") - ) - return null; - - const isPropertyDecl = /^[a-z-]+\s*:/.test(trimmed) && !trimmed.includes("{"); - if (isPropertyDecl) return null; - - const match = trimmed.match(/^([a-zA-Z][a-zA-Z0-9]*)/); - if (!match) return null; - - const firstWord = match[1].toLowerCase(); - if (!HTML_ELEMENTS.has(firstWord)) return null; - - const afterElement = trimmed.slice(match[0].length); - const validContinuation = - afterElement === "" || - afterElement.startsWith(" ") || - afterElement.startsWith("{") || - afterElement.startsWith(",") || - afterElement.startsWith(".") || - afterElement.startsWith("[") || - afterElement.startsWith(":") || - afterElement.startsWith("#") || - afterElement.startsWith(">") || - afterElement.startsWith("+") || - afterElement.startsWith("~"); - - if (!validContinuation) return null; - - const indent = line.slice(0, line.length - line.trimStart().length); - return `${indent}& ${trimmed}`; -} - -function processFile(filePath) { - const content = fs.readFileSync(filePath, "utf-8"); - const lines = content.split("\n"); - const changes = []; - - let nestingDepth = 0; - let inBlockComment = false; - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - - if (inBlockComment) { - if (line.includes("*/")) inBlockComment = false; - continue; - } - - if (line.trimStart().startsWith("/*") && !line.includes("*/")) { - inBlockComment = true; - continue; - } - - const transformed = transformLine(line, nestingDepth, inBlockComment); - if (transformed !== null) { - changes.push({ - line: i + 1, - before: line, - after: transformed, - }); - lines[i] = transformed; - } - - const stripped = line.replace(/\/\/.*$/, "").replace(/\/\*.*?\*\//g, ""); - for (const ch of stripped) { - if (ch === "{") nestingDepth++; - if (ch === "}") nestingDepth = Math.max(0, nestingDepth - 1); - } - } - - return { - original: content, - transformed: lines.join("\n"), - changes, - }; -} - -function main() { - const args = process.argv.slice(2); - const dryRun = args.includes("--dry-run"); - const singleFileIdx = args.indexOf("--file"); - const singleFile = singleFileIdx !== -1 ? args[singleFileIdx + 1] : null; - - let files; - if (singleFile) { - files = [path.resolve(singleFile)]; - } else { - files = findScssFiles(WEB_ROOT); - } - - console.log(`${dryRun ? "[DRY RUN] " : ""}Processing ${files.length} .scss files...\n`); - - let totalChanges = 0; - let filesChanged = 0; - - for (const file of files) { - const relative = path.relative(WEB_ROOT, file); - const { transformed, changes } = processFile(file); - - if (changes.length === 0) continue; - - filesChanged++; - totalChanges += changes.length; - - console.log(`${relative} (${changes.length} changes)`); - for (const c of changes) { - console.log(` L${c.line}: ${c.before.trim()}`); - console.log(` → ${c.after.trim()}`); - } - console.log(); - - if (!dryRun) { - fs.writeFileSync(file, transformed, "utf-8"); - } - } - - console.log(`\n${dryRun ? "[DRY RUN] " : ""}Summary:`); - console.log(` Files changed: ${filesChanged}`); - console.log(` Total transformations: ${totalChanges}`); - if (dryRun) { - console.log("\nRe-run without --dry-run to apply changes."); - } -} - -main(); diff --git a/web/tools/validate-scss-transform.js b/web/tools/validate-scss-transform.js deleted file mode 100644 index 52f3ca7037ca..000000000000 --- a/web/tools/validate-scss-transform.js +++ /dev/null @@ -1,296 +0,0 @@ -#!/usr/bin/env node - -/** - * Validates that SCSS→CSS compilation output is identical before and after - * a source transformation (e.g., adding `&` before bare nested elements). - * - * Usage: - * # Step 1: Snapshot current compiled output (BEFORE changes) - * node tools/validate-scss-transform.js snapshot - * - * # Step 2: Make your changes to .scss files - * - * # Step 3: Validate that compiled output is identical - * node tools/validate-scss-transform.js validate - * - * # Optional: Clean up snapshot directory - * node tools/validate-scss-transform.js clean - */ - -const sass = require("sass"); -const fs = require("node:fs"); -const path = require("node:path"); -const crypto = require("node:crypto"); - -const SNAPSHOT_DIR = path.resolve(__dirname, "../.scss-snapshots"); -const WEB_ROOT = path.resolve(__dirname, ".."); - -function findScssFiles(dir, results = []) { - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - if (entry.name === "node_modules" || entry.name === "dist" || entry.name === ".scss-snapshots") continue; - findScssFiles(fullPath, results); - } else if (entry.isFile() && entry.name.endsWith(".scss") && !entry.name.startsWith("_")) { - results.push(fullPath); - } - } - return results; -} - -function compileScss(filePath) { - try { - const result = sass.compile(filePath, { - style: "expanded", - silenceDeprecations: ["import", "global-builtin", "legacy-js-api", "color-functions"], - loadPaths: [WEB_ROOT, path.join(WEB_ROOT, "node_modules")], - }); - return { css: result.css, error: null }; - } catch (err) { - return { css: null, error: err.message }; - } -} - -function hashContent(content) { - return crypto.createHash("sha256").update(content).digest("hex"); -} - -/** - * Normalize CSS for comparison by collapsing multi-line selector lists - * into single lines. SCSS may reformat selector lists when `&` is added - * to bare nested selectors — the selectors are semantically identical - * but may be placed on one line vs. multiple lines. - */ -function normalizeCSS(css) { - const lines = css.split("\n"); - const result = []; - let i = 0; - while (i < lines.length) { - let line = lines[i]; - while (line.trimEnd().endsWith(",") && i + 1 < lines.length) { - i++; - line = `${line.trimEnd()} ${lines[i].trimStart()}`; - } - result.push(line); - i++; - } - return result.join("\n"); -} - -function getSnapshotPath(scssPath) { - const relative = path.relative(WEB_ROOT, scssPath); - return path.join(SNAPSHOT_DIR, relative.replace(/\.scss$/, ".snapshot.json")); -} - -function snapshot() { - const files = findScssFiles(WEB_ROOT); - console.log(`Found ${files.length} .scss files (excluding partials)`); - - fs.mkdirSync(SNAPSHOT_DIR, { recursive: true }); - - let compiled = 0; - let skipped = 0; - let errors = 0; - - for (const file of files) { - const relative = path.relative(WEB_ROOT, file); - const { css, error } = compileScss(file); - - const snapshotPath = getSnapshotPath(file); - fs.mkdirSync(path.dirname(snapshotPath), { recursive: true }); - - if (error) { - fs.writeFileSync( - snapshotPath, - JSON.stringify( - { - file: relative, - status: "error", - error: error, - hash: null, - }, - null, - 2, - ), - ); - errors++; - } else if (css !== null) { - const normalized = normalizeCSS(css); - fs.writeFileSync( - snapshotPath, - JSON.stringify( - { - file: relative, - status: "ok", - error: null, - hash: hashContent(css), - normalizedHash: hashContent(normalized), - css: css, - normalizedCss: normalized, - }, - null, - 2, - ), - ); - compiled++; - } else { - skipped++; - } - } - - console.log("\nSnapshot complete:"); - console.log(` Compiled: ${compiled}`); - console.log(` Errors (pre-existing): ${errors}`); - console.log(` Skipped: ${skipped}`); - console.log(` Saved to: ${SNAPSHOT_DIR}`); -} - -function validate() { - if (!fs.existsSync(SNAPSHOT_DIR)) { - console.error("No snapshots found. Run 'snapshot' first."); - process.exit(1); - } - - const files = findScssFiles(WEB_ROOT); - console.log(`Validating ${files.length} .scss files against snapshots...\n`); - - let pass = 0; - let fail = 0; - let formatOnly = 0; - let newErrors = 0; - let fixedErrors = 0; - let noSnapshot = 0; - const failures = []; - - for (const file of files) { - const relative = path.relative(WEB_ROOT, file); - const snapshotPath = getSnapshotPath(file); - - if (!fs.existsSync(snapshotPath)) { - noSnapshot++; - continue; - } - - const snapshotData = JSON.parse(fs.readFileSync(snapshotPath, "utf-8")); - const { css, error } = compileScss(file); - - if (snapshotData.status === "error") { - if (error) { - pass++; - } else { - fixedErrors++; - pass++; - } - continue; - } - - if (error) { - newErrors++; - failures.push({ - file: relative, - reason: "NEW COMPILE ERROR", - detail: error, - }); - continue; - } - - const newHash = hashContent(css); - const normalizedNew = normalizeCSS(css); - const normalizedNewHash = hashContent(normalizedNew); - const snapshotNormalizedHash = snapshotData.normalizedHash || hashContent(normalizeCSS(snapshotData.css)); - - if (newHash === snapshotData.hash) { - pass++; - } else if (normalizedNewHash === snapshotNormalizedHash) { - pass++; - formatOnly++; - } else { - fail++; - const oldLines = normalizedNew.split("\n"); - const snapshotLines = normalizeCSS(snapshotData.css).split("\n"); - const diffLines = []; - - const maxLen = Math.max(snapshotLines.length, oldLines.length); - for (let i = 0; i < maxLen; i++) { - const oldLine = snapshotLines[i] ?? ""; - const newLine = oldLines[i] ?? ""; - if (oldLine !== newLine) { - diffLines.push({ - line: i + 1, - before: oldLine, - after: newLine, - }); - } - } - - failures.push({ - file: relative, - reason: "CSS OUTPUT CHANGED", - diffCount: diffLines.length, - firstDiffs: diffLines.slice(0, 5), - }); - } - } - - console.log("Results:"); - console.log(` ✅ Pass (identical output): ${pass - formatOnly}`); - if (formatOnly > 0) console.log(` ✅ Pass (selector formatting only, semantically identical): ${formatOnly}`); - if (fixedErrors > 0) console.log(` 🔧 Fixed (was error, now compiles): ${fixedErrors}`); - if (noSnapshot > 0) console.log(` ⚠️ No snapshot (new file?): ${noSnapshot}`); - if (fail > 0) console.log(` ❌ FAIL (output changed): ${fail}`); - if (newErrors > 0) console.log(` 💥 NEW ERRORS (was ok, now fails): ${newErrors}`); - - if (failures.length > 0) { - console.log("\n--- FAILURES ---\n"); - for (const f of failures) { - console.log(`File: ${f.file}`); - console.log(` Reason: ${f.reason}`); - if (f.detail) { - console.log(` Error: ${f.detail.substring(0, 200)}`); - } - if (f.firstDiffs) { - console.log(` Changed lines: ${f.diffCount}`); - for (const d of f.firstDiffs) { - console.log(` Line ${d.line}:`); - console.log(` before: ${d.before}`); - console.log(` after: ${d.after}`); - } - if (f.diffCount > 5) console.log(` ... and ${f.diffCount - 5} more`); - } - console.log(); - } - } - - if (fail > 0 || newErrors > 0) { - console.log(`\n❌ VALIDATION FAILED — ${fail + newErrors} file(s) have different output`); - process.exit(1); - } else { - console.log("\n✅ VALIDATION PASSED — all compiled CSS output is identical"); - process.exit(0); - } -} - -function clean() { - if (fs.existsSync(SNAPSHOT_DIR)) { - fs.rmSync(SNAPSHOT_DIR, { recursive: true }); - console.log(`Cleaned up ${SNAPSHOT_DIR}`); - } else { - console.log("Nothing to clean."); - } -} - -const command = process.argv[2]; -switch (command) { - case "snapshot": - snapshot(); - break; - case "validate": - validate(); - break; - case "clean": - clean(); - break; - default: - console.log("Usage: node tools/validate-scss-transform.js "); - process.exit(1); -} diff --git a/web/tsconfig.base.json b/web/tsconfig.base.json index c79afe74a057..99a2d4b33545 100644 --- a/web/tsconfig.base.json +++ b/web/tsconfig.base.json @@ -64,7 +64,7 @@ { "name": "typescript-plugin-css-modules", "options": { - "customMatcher": "\\.module\\.scss$", + "customMatcher": "\\.module\\.css$", "classnameTransform": "asIs" } } diff --git a/web/webpack.config.js b/web/webpack.config.js index 20a8b522c5d9..a8c3481d46a0 100644 --- a/web/webpack.config.js +++ b/web/webpack.config.js @@ -147,65 +147,68 @@ module.exports = composePlugins( }; config.module.rules.forEach((rule) => { - const testString = rule.test.toString(); - const isScss = testString.includes("scss"); - const isCssModule = testString.includes(".module"); - - if (isScss) { - rule.oneOf.forEach((loader) => { - if (loader.use) { - const cssLoader = loader.use.find((use) => use.loader && use.loader.includes("css-loader")); - - if (cssLoader && cssLoader.options) { - cssLoader.options.modules = { - mode: "local", - auto: true, - namedExport: false, - localIdentName: "[local]--[hash:base64:5]", - }; - } - } - }); - } - - if (rule.test.toString().match(/scss|sass/) && !isCssModule) { - const r = rule.oneOf.filter((r) => { - // we don't need rules that don't have loaders - if (!r.use) return false; - - const testString = r.test.toString(); - - // we also don't need css modules as these are used directly - // in the code and don't need prefixing - if (testString.match(/module|raw|antd/)) return false; - - // we only target pre-processors that has 'css-loader included' - return testString.match(/scss|sass/) && r.use.some((u) => u.loader && u.loader.includes("css-loader")); - }); - - r.forEach((_r) => { - const cssLoader = _r.use.find((use) => use.loader && use.loader.includes("css-loader")); - - if (!cssLoader) return; - - const isSASS = _r.use.some((use) => use.loader && use.loader.match(/sass|scss/)); - - if (isSASS) _r.exclude = /node_modules/; - - if (cssLoader.options) { - cssLoader.options.modules = { - localIdentName: `${css_prefix}[local]`, // Customize this format - getLocalIdent(_ctx, _ident, className) { - if (className.includes("ant")) return className; + if (!rule.oneOf || !rule.test?.toString().includes("css")) return; + + rule.oneOf.forEach((oneOfRule) => { + if (!oneOfRule.use) return; + + oneOfRule.use = oneOfRule.use.filter( + (use) => !(use.loader && /sass-loader|stylus-loader|less-loader/.test(use.loader)), + ); + + const innerTest = oneOfRule.test?.toString() ?? ""; + const cssLoader = oneOfRule.use.find((use) => use.loader?.includes("/css-loader/")); + + if (innerTest.includes("module") && cssLoader?.options) { + cssLoader.options.modules = { + mode: "local", + auto: true, + namedExport: false, + localIdentName: "[local]--[hash:base64:5]", + }; + } + }); + + const insertions = []; + rule.oneOf.forEach((oneOfRule, idx) => { + if (!oneOfRule.test || !oneOfRule.use) return; + const t = oneOfRule.test.toString(); + if (/^\/\\\.css\$\/$/.test(t) && oneOfRule.use.some((u) => u.loader?.includes("/css-loader/"))) { + insertions.push(idx); + } + }); + + for (let i = insertions.length - 1; i >= 0; i--) { + const idx = insertions[i]; + const template = rule.oneOf[idx]; + const prefixUse = template.use.map((u) => { + if (typeof u === "string") return u; + if (u.loader?.includes("/css-loader/")) { + return { + ...u, + options: { + ...(u.options ?? {}), + modules: { + localIdentName: `${css_prefix}[local]`, + getLocalIdent(_ctx, _ident, className) { + if (className.includes("ant")) return className; + }, + }, }, }; } + return u; }); - } - if (testString.includes(".css")) { - rule.exclude = /tailwind\.css/; + rule.oneOf.splice(idx, 0, { + test: /\.prefix\.css$/, + include: template.include, + exclude: /node_modules/, + use: prefixUse, + }); } + + rule.exclude = /tailwind\.css/; }); // Force local @humansignal icon SVGs through svgr regardless of issuer. diff --git a/web/yarn.lock b/web/yarn.lock index 3a6bfe346cfa..887d5f50fe73 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -1162,29 +1162,6 @@ resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.2.1.tgz#5d171538907a8cb395fdc2eb5e8f7947d96c7f2f" integrity sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw== -"@bufbuild/protobuf@^2.5.0": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.11.0.tgz#3ec3985c9074b23aea337957225fe15a0e845f8e" - integrity sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ== - -"@cacheable/memory@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@cacheable/memory/-/memory-2.0.7.tgz#1e066dc543b7c6797d0d230ce23d90898aca14c7" - integrity sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A== - dependencies: - "@cacheable/utils" "^2.3.3" - "@keyv/bigmap" "^1.3.0" - hookified "^1.14.0" - keyv "^5.5.5" - -"@cacheable/utils@^2.3.3": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@cacheable/utils/-/utils-2.3.3.tgz#56f0c0a3b2cad85f32ee2de3c73ff05d455e2c6c" - integrity sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A== - dependencies: - hashery "^1.3.0" - keyv "^5.5.5" - "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -1202,31 +1179,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@csstools/css-parser-algorithms@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" - integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== - -"@csstools/css-syntax-patches-for-csstree@^1.0.19": - version "1.0.26" - resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz#44098e3087523472a2306f64ace9a356b8ef0a63" - integrity sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA== - -"@csstools/css-tokenizer@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" - integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== - -"@csstools/media-query-list-parser@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#7aec77bcb89c2da80ef207e73f474ef9e1b3cdf1" - integrity sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ== - -"@csstools/selector-specificity@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz#037817b574262134cabd68fc4ec1a454f168407b" - integrity sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw== - "@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" @@ -1303,11 +1255,6 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@dual-bundle/import-meta-resolve@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz#cd0b25b3808cd9e684cd6cd549bbf8e1dcf05ee7" - integrity sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg== - "@emnapi/core@^1.1.0", "@emnapi/core@^1.4.3", "@emnapi/core@^1.5.0", "@emnapi/core@^1.7.1": version "1.8.1" resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349" @@ -2239,19 +2186,6 @@ "@jsonjoy.com/buffers" "^1.0.0" "@jsonjoy.com/codegen" "^1.0.0" -"@keyv/bigmap@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@keyv/bigmap/-/bigmap-1.3.1.tgz#fc82fa83947e7ff68c6798d08907db842771ef2c" - integrity sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ== - dependencies: - hashery "^1.4.0" - hookified "^1.15.0" - -"@keyv/serialize@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@keyv/serialize/-/serialize-1.1.1.tgz#0c01dd3a3483882af7cf3878d4e71d505c81fc4a" - integrity sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA== - "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" @@ -3209,95 +3143,6 @@ resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== -"@parcel/watcher-android-arm64@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz#5f32e0dba356f4ac9a11068d2a5c134ca3ba6564" - integrity sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A== - -"@parcel/watcher-darwin-arm64@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz#88d3e720b59b1eceffce98dac46d7c40e8be5e8e" - integrity sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA== - -"@parcel/watcher-darwin-x64@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz#bf05d76a78bc15974f15ec3671848698b0838063" - integrity sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg== - -"@parcel/watcher-freebsd-x64@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz#8bc26e9848e7303ac82922a5ae1b1ef1bdb48a53" - integrity sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng== - -"@parcel/watcher-linux-arm-glibc@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz#1328fee1deb0c2d7865079ef53a2ba4cc2f8b40a" - integrity sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ== - -"@parcel/watcher-linux-arm-musl@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz#bad0f45cb3e2157746db8b9d22db6a125711f152" - integrity sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg== - -"@parcel/watcher-linux-arm64-glibc@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz#b75913fbd501d9523c5f35d420957bf7d0204809" - integrity sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA== - -"@parcel/watcher-linux-arm64-musl@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz#da5621a6a576070c8c0de60dea8b46dc9c3827d4" - integrity sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA== - -"@parcel/watcher-linux-x64-glibc@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz#ce437accdc4b30f93a090b4a221fd95cd9b89639" - integrity sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ== - -"@parcel/watcher-linux-x64-musl@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz#02400c54b4a67efcc7e2327b249711920ac969e2" - integrity sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg== - -"@parcel/watcher-win32-arm64@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz#caae3d3c7583ca0a7171e6bd142c34d20ea1691e" - integrity sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q== - -"@parcel/watcher-win32-ia32@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz#9ac922550896dfe47bfc5ae3be4f1bcaf8155d6d" - integrity sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g== - -"@parcel/watcher-win32-x64@2.5.6": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz#73fdafba2e21c448f0e456bbe13178d8fe11739d" - integrity sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw== - -"@parcel/watcher@^2.4.1": - version "2.5.6" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.6.tgz#3f932828c894f06d0ad9cfefade1756ecc6ef1f1" - integrity sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ== - dependencies: - detect-libc "^2.0.3" - is-glob "^4.0.3" - node-addon-api "^7.0.0" - picomatch "^4.0.3" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.5.6" - "@parcel/watcher-darwin-arm64" "2.5.6" - "@parcel/watcher-darwin-x64" "2.5.6" - "@parcel/watcher-freebsd-x64" "2.5.6" - "@parcel/watcher-linux-arm-glibc" "2.5.6" - "@parcel/watcher-linux-arm-musl" "2.5.6" - "@parcel/watcher-linux-arm64-glibc" "2.5.6" - "@parcel/watcher-linux-arm64-musl" "2.5.6" - "@parcel/watcher-linux-x64-glibc" "2.5.6" - "@parcel/watcher-linux-x64-musl" "2.5.6" - "@parcel/watcher-win32-arm64" "2.5.6" - "@parcel/watcher-win32-ia32" "2.5.6" - "@parcel/watcher-win32-x64" "2.5.6" - "@peculiar/asn1-cms@^2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz#88267055c460ca806651f916315a934c1b1ac994" @@ -5907,7 +5752,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@>=8.18.0, ajv@^8.0.0, ajv@^8.0.1, ajv@^8.12.0, ajv@^8.17.1, ajv@^8.9.0: +ajv@>=8.18.0, ajv@^8.0.0, ajv@^8.12.0, ajv@^8.17.1, ajv@^8.9.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== @@ -6995,11 +6840,6 @@ bail@^2.0.0: resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== -balanced-match@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" - integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== - balanced-match@^4.0.2: version "4.0.4" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" @@ -7279,17 +7119,6 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -cacheable@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/cacheable/-/cacheable-2.3.2.tgz#89800b4864c3ab8b23dae6dca8b6232cbf49b299" - integrity sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA== - dependencies: - "@cacheable/memory" "^2.0.7" - "@cacheable/utils" "^2.3.3" - hookified "^1.15.0" - keyv "^5.5.5" - qified "^0.6.0" - cachedir@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" @@ -7518,7 +7347,7 @@ chokidar@^3.5.3, chokidar@^3.6.0: optionalDependencies: fsevents "~2.3.2" -chokidar@^4.0.0, chokidar@^4.0.1: +chokidar@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== @@ -7748,11 +7577,6 @@ colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16, colorette@^2.0.20: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -colorjs.io@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef" - integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw== - colormap@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/colormap/-/colormap-2.3.2.tgz#4422c1178ce563806e265b96782737be85815abf" @@ -7965,13 +7789,6 @@ cookies@~0.9.1: depd "~2.0.0" keygrip "~1.1.0" -copy-anything@^2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" - integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== - dependencies: - is-what "^3.14.1" - copy-to-clipboard@^3.2.0: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -8052,16 +7869,6 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: parse-json "^5.2.0" path-type "^4.0.0" -cosmiconfig@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -8118,11 +7925,6 @@ css-declaration-sorter@^7.2.0: resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz#acd204976d7ca5240b5579bfe6e73d4d088fd568" integrity sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA== -css-functions-list@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.3.tgz#95652b0c24f0f59b291a9fc386041a19d4f40dbe" - integrity sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA== - css-loader@^6.11.0, css-loader@^6.4.0, css-loader@^6.7.1: version "6.11.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" @@ -8183,7 +7985,7 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^3.0.1, css-tree@^3.1.0: +css-tree@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.1.0.tgz#7aabc035f4e66b5c86f54570d55e05b1346eb0fd" integrity sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w== @@ -9308,23 +9110,11 @@ entities@^6.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== -env-paths@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - envinfo@^7.7.3: version "7.21.0" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae" integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow== -errno@^0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.3.1: version "1.3.4" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414" @@ -9809,7 +9599,7 @@ fast-fifo@^1.2.0, fast-fifo@^1.3.2: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.0.3, fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2, fast-glob@^3.3.3: +fast-glob@^3.0.3, fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.7, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -9835,7 +9625,7 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== -fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.16: +fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== @@ -9898,13 +9688,6 @@ figures@3.2.0, figures@^3.2.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^11.1.1: - version "11.1.2" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-11.1.2.tgz#5b2014aac2259b5591ae6fd7f6d1ed2153545abe" - integrity sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log== - dependencies: - flat-cache "^6.1.20" - file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -10081,21 +9864,12 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat-cache@^6.1.20: - version "6.1.20" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-6.1.20.tgz#9db7bf5278c4ca29c92492dcb0c6a52a7017ff83" - integrity sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ== - dependencies: - cacheable "^2.3.2" - flatted "^3.3.3" - hookified "^1.15.0" - flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.7, flatted@^3.2.9, flatted@^3.3.3: +flatted@^3.2.7, flatted@^3.2.9: version "3.3.3" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== @@ -10510,13 +10284,6 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -10528,15 +10295,6 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -10556,18 +10314,6 @@ globby@10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - globby@^12.0.2: version "12.2.0" resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" @@ -10580,11 +10326,6 @@ globby@^12.0.2: merge2 "^1.4.1" slash "^4.0.0" -globjoin@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" - integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== - glur@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" @@ -10698,13 +10439,6 @@ hasha@5.2.2, hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" -hashery@^1.3.0, hashery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/hashery/-/hashery-1.4.0.tgz#3af04d9af0c63ff2f15a353ee9c2d11fdef7919f" - integrity sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ== - dependencies: - hookified "^1.14.0" - hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -10845,11 +10579,6 @@ hono@^4.11.4: resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.5.tgz#8c16209b35040025d3f110d18f3b821de6cab00f" integrity sha512-3qq+FUBtlTHhtYxbxheZgY8NIFnkkC/MR8u5TTsr7YZ3wixryQ3cCwn3iZbg8p8B88iDBBAYSfZDS75t8MN7Vg== -hookified@^1.14.0, hookified@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.15.0.tgz#d51db9fe134b8bd19c1aa88f9fcd7878995e4b66" - integrity sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw== - hosted-git-info@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" @@ -10920,11 +10649,6 @@ html-react-parser@^1.2.4: react-property "2.0.0" style-to-js "1.1.1" -html-tags@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== - html-url-attributes@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.1.tgz#83b052cd5e437071b756cd74ae70f708870c2d87" @@ -11177,22 +10901,12 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.9, ignore@^5.2.0: +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.9: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -ignore@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== - -immutable@>=5.1.5, immutable@^5.0.2: +immutable@>=5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165" integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A== @@ -11260,7 +10974,7 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.4, ini@^1.3.5: +ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -11666,11 +11380,6 @@ is-weakset@^2.0.3: call-bound "^1.0.3" get-intrinsic "^1.2.6" -is-what@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -12913,13 +12622,6 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -keyv@^5.5.5: - version "5.6.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-5.6.0.tgz#03044074c6b4d072d0a62c7b9fa649537baf0105" - integrity sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw== - dependencies: - "@keyv/serialize" "^1.1.1" - kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -12947,11 +12649,6 @@ klona@^2.0.5: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== -known-css-properties@^0.37.0: - version "0.37.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.37.0.tgz#10ebe49b9dbb6638860ff8a002fb65a053f4aec5" - integrity sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ== - koa-compose@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" @@ -13004,27 +12701,10 @@ lerp@^1.0.3: resolved "https://registry.yarnpkg.com/lerp/-/lerp-1.0.3.tgz#a18c8968f917896de15ccfcc28d55a6b731e776e" integrity sha512-70Rh4rCkJDvwWiTsyZ1HmJGvnyfFah4m6iTux29XmasRiZPDBpT9Cfa4ai73+uLZxnlKruUS62jj2lb11wURiA== -less-loader@^11.1.0: - version "11.1.4" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-11.1.4.tgz#e8a070844efaefbe59b978acaf57b9d3e868cf08" - integrity sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A== - -less@^4.1.3, less@^4.2.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/less/-/less-4.5.1.tgz#739266532249a3de232e8b60ffb1b27ad5ec6ad8" - integrity sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^3.1.0" - source-map "~0.6.0" +less-loader@^11.1.0, "less-loader@npm:empty-npm-package@1.0.0", less@^4.1.3, less@^4.2.0, "less@npm:empty-npm-package@1.0.0", sass-embedded@^1.83.4, "sass-embedded@npm:empty-npm-package@1.0.0", sass-loader@^16.0.4, "sass-loader@npm:empty-npm-package@1.0.0", sass@^1.70.0, sass@^1.85.0, "sass@npm:empty-npm-package@1.0.0", "stylelint-config-standard@npm:empty-npm-package@1.0.0", "stylelint-config-tailwindcss@npm:empty-npm-package@1.0.0", "stylelint@npm:empty-npm-package@1.0.0", stylus@^0.62.0, "stylus@npm:empty-npm-package@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/empty-npm-package/-/empty-npm-package-1.0.0.tgz#fda29eb6de5efa391f73d578697853af55f6793a" + integrity sha512-q4Mq/+XO7UNDdMiPpR/LIBIW1Zl4V0Z6UT9aKGqIAnBCtCb3lvZJM1KbDbdzdC8fKflwflModfjR29Nt0EpcwA== leven@^3.1.0: version "3.1.0" @@ -13236,11 +12916,6 @@ lodash.padend@^4.6.1: resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -13363,14 +13038,6 @@ magic-string@^0.30.17, magic-string@^0.30.21, magic-string@^0.30.3, magic-string dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -13424,11 +13091,6 @@ math-intrinsics@^1.1.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -mathml-tag-names@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" - integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== - mdast-util-from-markdown@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" @@ -13544,11 +13206,6 @@ mdn-data@2.12.2: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.12.2.tgz#9ae6c41a9e65adf61318b32bff7b64fbfb13f8cf" integrity sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA== -mdn-data@^2.25.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.26.0.tgz#377bcdadab4ded03f9aa90b4eb0e013aab99b46c" - integrity sha512-ZqI0qjKWHMPcGUfLmlr80NPNVHIOjPMHtIOe1qXYFGS0YBZ1YKAzo9yk8W+gGrLCN0Xdv/RKxqdIsqPakEfmow== - mdurl@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" @@ -13596,11 +13253,6 @@ memfs@^4.43.1: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -meow@^13.2.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f" - integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== - merge-descriptors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" @@ -13857,7 +13509,7 @@ mime-types@^3.0.0, mime-types@^3.0.1, mime-types@^3.0.2: dependencies: mime-db "^1.54.0" -mime@1.6.0, mime@^1.4.1, mime@^1.6.0: +mime@1.6.0, mime@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -14076,14 +13728,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -needle@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" - integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== - dependencies: - iconv-lite "^0.6.3" - sax "^1.2.4" - negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -14133,11 +13777,6 @@ node-abort-controller@^3.0.1: resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== -node-addon-api@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" - integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== - node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -14664,11 +14303,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -14845,11 +14479,6 @@ pify@^2.2.0, pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" @@ -15126,11 +14755,6 @@ postcss-loader@^7.3.3: jiti "^1.20.0" semver "^7.5.4" -postcss-media-query-parser@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" - integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== - postcss-merge-longhand@^5.1.7: version "5.1.7" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" @@ -15280,6 +14904,13 @@ postcss-nested@^6.0.1: dependencies: postcss-selector-parser "^6.1.1" +postcss-nested@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-7.0.2.tgz#863d83a6b5df0a2894560394be93d5383ea37a65" + integrity sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw== + dependencies: + postcss-selector-parser "^7.0.0" + postcss-normalize-charset@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" @@ -15451,21 +15082,6 @@ postcss-reduce-transforms@^6.0.2: dependencies: postcss-value-parser "^4.2.0" -postcss-resolve-nested-selector@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#3d84dec809f34de020372c41b039956966896686" - integrity sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw== - -postcss-safe-parser@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz#36e4f7e608111a0ca940fd9712ce034718c40ec0" - integrity sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A== - -postcss-scss@^4.0.9: - version "4.0.9" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685" - integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== - postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" @@ -15474,7 +15090,7 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-select cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^7.0.0, postcss-selector-parser@^7.1.0, postcss-selector-parser@^7.1.1: +postcss-selector-parser@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f" integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== @@ -15526,7 +15142,7 @@ postcss@8.4.38: picocolors "^1.0.0" source-map-js "^1.2.0" -postcss@^8.0.0, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38, postcss@^8.4.41, postcss@^8.5.6: +postcss@^8.0.0, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38, postcss@^8.4.41: version "8.5.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -15670,11 +15286,6 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - psl@^1.1.33: version "1.15.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" @@ -15717,13 +15328,6 @@ pvutils@^1.1.3: resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.5.tgz#84b0dea4a5d670249aa9800511804ee0b7c2809c" integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== -qified@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/qified/-/qified-0.6.0.tgz#a9c33f51fa37d03003065638bb7dff45d7a81297" - integrity sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA== - dependencies: - hookified "^1.14.0" - qs@>=6.14.2, qs@^6.14.0, qs@^6.14.1, qs@^6.4.0, qs@~6.14.0, qs@~6.14.1: version "6.15.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.0.tgz#db8fd5d1b1d2d6b5b33adaf87429805f1909e7b3" @@ -17001,7 +16605,7 @@ rw@1: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -rxjs@^7.4.0, rxjs@^7.5.1, rxjs@^7.8.0: +rxjs@^7.5.1, rxjs@^7.8.0: version "7.8.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== @@ -17049,162 +16653,6 @@ sanitize-html@^2.14.0: parse-srcset "^1.0.2" postcss "^8.3.11" -sass-embedded-all-unknown@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.97.3.tgz#a0cf18681cc0ec5f51101b8b89640df158fb8dc3" - integrity sha512-t6N46NlPuXiY3rlmG6/+1nwebOBOaLFOOVqNQOC2cJhghOD4hh2kHNQQTorCsbY9S1Kir2la1/XLBwOJfui0xg== - dependencies: - sass "1.97.3" - -sass-embedded-android-arm64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.97.3.tgz#8093d124f0b671fd691a925805d8d6b0c9d08a44" - integrity sha512-aiZ6iqiHsUsaDx0EFbbmmA0QgxicSxVVN3lnJJ0f1RStY0DthUkquGT5RJ4TPdaZ6ebeJWkboV4bra+CP766eA== - -sass-embedded-android-arm@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.97.3.tgz#256236b9c857f83ece13229d8704a44587a0a660" - integrity sha512-cRTtf/KV/q0nzGZoUzVkeIVVFv3L/tS1w4WnlHapphsjTXF/duTxI8JOU1c/9GhRPiMdfeXH7vYNcMmtjwX7jg== - -sass-embedded-android-riscv64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.97.3.tgz#c71cfef7a6a94cc043f74936ec62be89115c7a32" - integrity sha512-zVEDgl9JJodofGHobaM/q6pNETG69uuBIGQHRo789jloESxxZe82lI3AWJQuPmYCOG5ElfRthqgv89h3gTeLYA== - -sass-embedded-android-x64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.97.3.tgz#07065245d9154d3353952bce5c30f87fbd7db59c" - integrity sha512-3ke0le7ZKepyXn/dKKspYkpBC0zUk/BMciyP5ajQUDy4qJwobd8zXdAq6kOkdiMB+d9UFJOmEkvgFJHl3lqwcw== - -sass-embedded-darwin-arm64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.97.3.tgz#49887421ada0d00ba9e93012690e34d8aa132bc7" - integrity sha512-fuqMTqO4gbOmA/kC5b9y9xxNYw6zDEyfOtMgabS7Mz93wimSk2M1quQaTJnL98Mkcsl2j+7shNHxIS/qpcIDDA== - -sass-embedded-darwin-x64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.97.3.tgz#5f9aef81f5337f5e8e67cf0bd2d8514a7529326e" - integrity sha512-b/2RBs/2bZpP8lMkyZ0Px0vkVkT8uBd0YXpOwK7iOwYkAT8SsO4+WdVwErsqC65vI5e1e5p1bb20tuwsoQBMVA== - -sass-embedded-linux-arm64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.97.3.tgz#fd08cb53040c25c78a5e418914a47bc74a72d169" - integrity sha512-IP1+2otCT3DuV46ooxPaOKV1oL5rLjteRzf8ldZtfIEcwhSgSsHgA71CbjYgLEwMY9h4jeal8Jfv3QnedPvSjg== - -sass-embedded-linux-arm@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.97.3.tgz#1fdd2e4e8d8f4b6144fb8a24e8e8bbb704696184" - integrity sha512-2lPQ7HQQg4CKsH18FTsj2hbw5GJa6sBQgDsls+cV7buXlHjqF8iTKhAQViT6nrpLK/e8nFCoaRgSqEC8xMnXuA== - -sass-embedded-linux-musl-arm64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.97.3.tgz#21cbc27b312ff2460d6c7c8ea093bce2a549fbc2" - integrity sha512-Lij0SdZCsr+mNRSyDZ7XtJpXEITrYsaGbOTz5e6uFLJ9bmzUbV7M8BXz2/cA7bhfpRPT7/lwRKPdV4+aR9Ozcw== - -sass-embedded-linux-musl-arm@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.97.3.tgz#f6d3905031e44313d3fb742c683ddbf45bf12c64" - integrity sha512-cBTMU68X2opBpoYsSZnI321gnoaiMBEtc+60CKCclN6PCL3W3uXm8g4TLoil1hDD6mqU9YYNlVG6sJ+ZNef6Lg== - -sass-embedded-linux-musl-riscv64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.97.3.tgz#a42f9f4c51b42431e93287a6dc1df83e920bf658" - integrity sha512-sBeLFIzMGshR4WmHAD4oIM7WJVkSoCIEwutzptFtGlSlwfNiijULp+J5hA2KteGvI6Gji35apR5aWj66wEn/iA== - -sass-embedded-linux-musl-x64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.97.3.tgz#55b5bd5e56b0ece474ed52a890131fae4e020675" - integrity sha512-/oWJ+OVrDg7ADDQxRLC/4g1+Nsz1g4mkYS2t6XmyMJKFTFK50FVI2t5sOdFH+zmMp+nXHKM036W94y9m4jjEcw== - -sass-embedded-linux-riscv64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.97.3.tgz#d6367150d1c389a1310cbda539d4b503da7ff5a3" - integrity sha512-l3IfySApLVYdNx0Kjm7Zehte1CDPZVcldma3dZt+TfzvlAEerM6YDgsk5XEj3L8eHBCgHgF4A0MJspHEo2WNfA== - -sass-embedded-linux-x64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.97.3.tgz#cebfe65b052cbaae76c8e02feac8f85e90942224" - integrity sha512-Kwqwc/jSSlcpRjULAOVbndqEy2GBzo6OBmmuBVINWUaJLJ8Kczz3vIsDUWLfWz/kTEw9FHBSiL0WCtYLVAXSLg== - -sass-embedded-unknown-all@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.97.3.tgz#a4f82e5133e28de65034e67faf1e137790ac5ac6" - integrity sha512-/GHajyYJmvb0IABUQHbVHf1nuHPtIDo/ClMZ81IDr59wT5CNcMe7/dMNujXwWugtQVGI5UGmqXWZQCeoGnct8Q== - dependencies: - sass "1.97.3" - -sass-embedded-win32-arm64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.97.3.tgz#41c539cc8732a11b9b4c0da2309d1fc5564655c3" - integrity sha512-RDGtRS1GVvQfMGAmVXNxYiUOvPzn9oO1zYB/XUM9fudDRnieYTcUytpNTQZLs6Y1KfJxgt5Y+giRceC92fT8Uw== - -sass-embedded-win32-x64@1.97.3: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.97.3.tgz#e4e200e1e5a62ef075f962eb2d11d85dc58b762e" - integrity sha512-SFRa2lED9UEwV6vIGeBXeBOLKF+rowF3WmNfb/BzhxmdAsKofCXrJ8ePW7OcDVrvNEbTOGwhsReIsF5sH8fVaw== - -sass-embedded@^1.83.4: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.97.3.tgz#1cab95995787d7e310f6272d58f80c67b5ead4ba" - integrity sha512-eKzFy13Nk+IRHhlAwP3sfuv+PzOrvzUkwJK2hdoCKYcWGSdmwFpeGpWmyewdw8EgBnsKaSBtgf/0b2K635ecSA== - dependencies: - "@bufbuild/protobuf" "^2.5.0" - colorjs.io "^0.5.0" - immutable "^5.0.2" - rxjs "^7.4.0" - supports-color "^8.1.1" - sync-child-process "^1.0.2" - varint "^6.0.0" - optionalDependencies: - sass-embedded-all-unknown "1.97.3" - sass-embedded-android-arm "1.97.3" - sass-embedded-android-arm64 "1.97.3" - sass-embedded-android-riscv64 "1.97.3" - sass-embedded-android-x64 "1.97.3" - sass-embedded-darwin-arm64 "1.97.3" - sass-embedded-darwin-x64 "1.97.3" - sass-embedded-linux-arm "1.97.3" - sass-embedded-linux-arm64 "1.97.3" - sass-embedded-linux-musl-arm "1.97.3" - sass-embedded-linux-musl-arm64 "1.97.3" - sass-embedded-linux-musl-riscv64 "1.97.3" - sass-embedded-linux-musl-x64 "1.97.3" - sass-embedded-linux-riscv64 "1.97.3" - sass-embedded-linux-x64 "1.97.3" - sass-embedded-unknown-all "1.97.3" - sass-embedded-win32-arm64 "1.97.3" - sass-embedded-win32-x64 "1.97.3" - -sass-loader@16.0.5: - version "16.0.5" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.5.tgz#257bc90119ade066851cafe7f2c3f3504c7cda98" - integrity sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw== - dependencies: - neo-async "^2.6.2" - -sass-loader@^16.0.4: - version "16.0.6" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-16.0.6.tgz#913b05607d06c386bc37870494e1e3a3e091fd3b" - integrity sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA== - dependencies: - neo-async "^2.6.2" - -sass@1.97.3, sass@^1.55.0, sass@^1.70.0, sass@^1.85.0: - version "1.97.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.3.tgz#9cb59339514fa7e2aec592b9700953ac6e331ab2" - integrity sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg== - dependencies: - chokidar "^4.0.0" - immutable "^5.0.2" - source-map-js ">=0.6.2 <2.0.0" - optionalDependencies: - "@parcel/watcher" "^2.4.1" - -sax@^1.2.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b" - integrity sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw== - sax@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sax/-/sax-1.5.0.tgz#b5549b671069b7aa392df55ec7574cf411179eb8" @@ -17306,7 +16754,7 @@ semver@7.6.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: +semver@^5.3.0, semver@^5.5.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -17655,7 +17103,7 @@ sorted-array-functions@^1.3.0: resolved "https://registry.yarnpkg.com/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz#8605695563294dffb2c9796d602bd8459f7a0dd5" integrity sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1: +source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -18051,104 +17499,6 @@ stylehacks@^6.1.1: browserslist "^4.23.0" postcss-selector-parser "^6.0.16" -stylelint-config-recommended-scss@^14.0.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz#1a5855655cddcb5f77c10f38c76567adf2bb9aa3" - integrity sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg== - dependencies: - postcss-scss "^4.0.9" - stylelint-config-recommended "^14.0.1" - stylelint-scss "^6.4.0" - -stylelint-config-recommended@^14.0.1: - version "14.0.1" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz#d25e86409aaf79ee6c6085c2c14b33c7e23c90c6" - integrity sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg== - -stylelint-config-standard-scss@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz#2be36ca13087325a42c1f26df8267808667cc886" - integrity sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA== - dependencies: - stylelint-config-recommended-scss "^14.0.0" - stylelint-config-standard "^36.0.0" - -stylelint-config-standard@^36.0.0: - version "36.0.1" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz#727cbb2a1ef3e210f5ce8329cde531129f156609" - integrity sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw== - dependencies: - stylelint-config-recommended "^14.0.1" - -stylelint-config-tailwindcss@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/stylelint-config-tailwindcss/-/stylelint-config-tailwindcss-0.0.7.tgz#12721dce1b1d546561f48e1c497c68fed3a2c5ff" - integrity sha512-n2dCWH+0ppr0/by4EYCLWW7g5LU+l4UzUIsYS7xbVHqvm9UWa7UhltNdNiz5NmLF/FmbJR4Yd/v9DuUGvLw1Tg== - -stylelint-scss@^6.4.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-6.14.0.tgz#b3f69e6e6236807aef021caf995fdf00255d80f0" - integrity sha512-ZKmHMZolxeuYsnB+PCYrTpFce0/QWX9i9gh0hPXzp73WjuIMqUpzdQaBCrKoLWh6XtCFSaNDErkMPqdjy1/8aA== - dependencies: - css-tree "^3.0.1" - is-plain-object "^5.0.0" - known-css-properties "^0.37.0" - mdn-data "^2.25.0" - postcss-media-query-parser "^0.2.3" - postcss-resolve-nested-selector "^0.1.6" - postcss-selector-parser "^7.1.1" - postcss-value-parser "^4.2.0" - -stylelint@^16.9.0: - version "16.26.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.26.1.tgz#7048accf9c3990dc074dff13c6f3cdc35c780c95" - integrity sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw== - dependencies: - "@csstools/css-parser-algorithms" "^3.0.5" - "@csstools/css-syntax-patches-for-csstree" "^1.0.19" - "@csstools/css-tokenizer" "^3.0.4" - "@csstools/media-query-list-parser" "^4.0.3" - "@csstools/selector-specificity" "^5.0.0" - "@dual-bundle/import-meta-resolve" "^4.2.1" - balanced-match "^2.0.0" - colord "^2.9.3" - cosmiconfig "^9.0.0" - css-functions-list "^3.2.3" - css-tree "^3.1.0" - debug "^4.4.3" - fast-glob "^3.3.3" - fastest-levenshtein "^1.0.16" - file-entry-cache "^11.1.1" - global-modules "^2.0.0" - globby "^11.1.0" - globjoin "^0.1.4" - html-tags "^3.3.1" - ignore "^7.0.5" - imurmurhash "^0.1.4" - is-plain-object "^5.0.0" - known-css-properties "^0.37.0" - mathml-tag-names "^2.1.3" - meow "^13.2.0" - micromatch "^4.0.8" - normalize-path "^3.0.0" - picocolors "^1.1.1" - postcss "^8.5.6" - postcss-resolve-nested-selector "^0.1.6" - postcss-safe-parser "^7.0.1" - postcss-selector-parser "^7.1.0" - postcss-value-parser "^4.2.0" - resolve-from "^5.0.0" - string-width "^4.2.3" - supports-hyperlinks "^3.2.0" - svg-tags "^1.0.0" - table "^6.9.0" - write-file-atomic "^5.0.1" - -stylus@^0.62.0, "stylus@npm:empty-npm-package@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/empty-npm-package/-/empty-npm-package-1.0.0.tgz#fda29eb6de5efa391f73d578697853af55f6793a" - integrity sha512-q4Mq/+XO7UNDdMiPpR/LIBIW1Zl4V0Z6UT9aKGqIAnBCtCb3lvZJM1KbDbdzdC8fKflwflModfjR29Nt0EpcwA== - sucrase@^3.32.0, sucrase@^3.35.0: version "3.35.1" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.1.tgz#4619ea50393fe8bd0ae5071c26abd9b2e346bfe1" @@ -18174,7 +17524,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -18188,14 +17538,6 @@ supports-color@^8.0.0, supports-color@^8.1.1: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz#b8e485b179681dea496a1e7abdf8985bd3145461" - integrity sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -18206,11 +17548,6 @@ svg-parser@^2.0.4: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== - svgo@>=3.3.3, svgo@^2.7.0, svgo@^3.0.2, svgo@^3.2.0: version "4.0.1" resolved "https://registry.yarnpkg.com/svgo/-/svgo-4.0.1.tgz#c82dacd04ee9f1d55cd4e0b7f9a214c86670e3ee" @@ -18229,18 +17566,6 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -sync-child-process@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/sync-child-process/-/sync-child-process-1.0.2.tgz#45e7c72e756d1243e80b547ea2e17957ab9e367f" - integrity sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA== - dependencies: - sync-message-port "^1.0.0" - -sync-message-port@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sync-message-port/-/sync-message-port-1.1.3.tgz#6055c565ee8c81d2f9ee5aae7db757e6d9088c0c" - integrity sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg== - synckit@^0.11.8: version "0.11.12" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.12.tgz#abe74124264fbc00a48011b0d98bdc1cffb64a7b" @@ -18259,17 +17584,6 @@ table-layout@^0.4.2: typical "^2.6.1" wordwrapjs "^3.0.0" -table@^6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" - integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - tagged-tag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tagged-tag/-/tagged-tag-1.0.0.tgz#a0b5917c2864cba54841495abfa3f6b13edcf4d6" @@ -19148,11 +18462,6 @@ value-equal@^1.0.1: resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - vary@^1, vary@^1.1.2, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -19505,7 +18814,7 @@ which-typed-array@^1.1.13: gopd "^1.2.0" has-tostringtag "^1.0.2" -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==