mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
chore: replace eslint with biome (#14263)
This commit is contained in:
committed by
GitHub
parent
7b09d98238
commit
d15f16fa2e
@ -7,7 +7,7 @@ trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = tab
|
||||
|
||||
[*.{md,json,yaml,yml,tf,tfvars,nix}]
|
||||
[*.{md,yaml,yml,tf,tfvars,nix}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
|
@ -79,19 +79,13 @@ result
|
||||
# by Prettier.
|
||||
helm/**/templates/*.yaml
|
||||
|
||||
# Terraform state files used in tests, these are automatically generated.
|
||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
||||
**/testdata/**/*.tf*.json
|
||||
|
||||
# Testdata shouldn't be formatted.
|
||||
scripts/apitypings/testdata/**/*.ts
|
||||
enterprise/tailnet/testdata/*.golden.html
|
||||
tailnet/testdata/*.golden.html
|
||||
|
||||
# Generated files shouldn't be formatted.
|
||||
site/e2e/provisionerGenerated.ts
|
||||
testdata/
|
||||
|
||||
# Ignore generated files
|
||||
**/pnpm-lock.yaml
|
||||
|
||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
||||
**/*.gen.json
|
||||
|
||||
# Everything in site/ is formatted by Biome. For the rest of the repo though, we
|
||||
# need broader language support.
|
||||
site/
|
||||
|
@ -2,19 +2,13 @@
|
||||
# by Prettier.
|
||||
helm/**/templates/*.yaml
|
||||
|
||||
# Terraform state files used in tests, these are automatically generated.
|
||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
||||
**/testdata/**/*.tf*.json
|
||||
|
||||
# Testdata shouldn't be formatted.
|
||||
scripts/apitypings/testdata/**/*.ts
|
||||
enterprise/tailnet/testdata/*.golden.html
|
||||
tailnet/testdata/*.golden.html
|
||||
|
||||
# Generated files shouldn't be formatted.
|
||||
site/e2e/provisionerGenerated.ts
|
||||
testdata/
|
||||
|
||||
# Ignore generated files
|
||||
**/pnpm-lock.yaml
|
||||
|
||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
||||
**/*.gen.json
|
||||
|
||||
# Everything in site/ is formatted by Biome. For the rest of the repo though, we
|
||||
# need broader language support.
|
||||
site/
|
||||
|
4
.vscode/extensions.json
vendored
4
.vscode/extensions.json
vendored
@ -9,7 +9,7 @@
|
||||
"zxh404.vscode-proto3",
|
||||
"redhat.vscode-yaml",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"EditorConfig.EditorConfig"
|
||||
"EditorConfig.EditorConfig",
|
||||
"biomejs.biome"
|
||||
]
|
||||
}
|
||||
|
14
.vscode/settings.json
vendored
14
.vscode/settings.json
vendored
@ -190,7 +190,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"eslint.workingDirectories": ["./site"],
|
||||
"search.exclude": {
|
||||
"**.pb.go": true,
|
||||
"**/*.gen.json": true,
|
||||
@ -224,5 +223,16 @@
|
||||
// with VS Code.
|
||||
"typescript.tsdk": "./site/node_modules/typescript/lib",
|
||||
// Playwright tests in VSCode will open a browser to live "view" the test.
|
||||
"playwright.reuseBrowser": true
|
||||
"playwright.reuseBrowser": true,
|
||||
|
||||
"[javascript][javascriptreact][json][jsonc][typescript][typescriptreact]": {
|
||||
"editor.defaultFormatter": "biomejs.biome"
|
||||
// "editor.codeActionsOnSave": {
|
||||
// "source.organizeImports.biome": "explicit"
|
||||
// }
|
||||
},
|
||||
|
||||
"[css][html][markdown][yaml]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
}
|
||||
}
|
||||
|
80
Makefile
80
Makefile
@ -391,7 +391,7 @@ BOLD := $(shell tput bold 2>/dev/null)
|
||||
GREEN := $(shell tput setaf 2 2>/dev/null)
|
||||
RESET := $(shell tput sgr0 2>/dev/null)
|
||||
|
||||
fmt: fmt/eslint fmt/prettier fmt/terraform fmt/shfmt fmt/go
|
||||
fmt: fmt/ts fmt/go fmt/terraform fmt/shfmt fmt/prettier
|
||||
.PHONY: fmt
|
||||
|
||||
fmt/go:
|
||||
@ -401,15 +401,19 @@ fmt/go:
|
||||
go run mvdan.cc/gofumpt@v0.4.0 -w -l .
|
||||
.PHONY: fmt/go
|
||||
|
||||
fmt/eslint:
|
||||
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/eslint$(RESET)"
|
||||
fmt/ts:
|
||||
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/ts$(RESET)"
|
||||
cd site
|
||||
pnpm run lint:fix
|
||||
.PHONY: fmt/eslint
|
||||
# Avoid writing files in CI to reduce file write activity
|
||||
ifdef CI
|
||||
pnpm run check --linter-enabled=false
|
||||
else
|
||||
pnpm run check:fix
|
||||
endif
|
||||
.PHONY: fmt/ts
|
||||
|
||||
fmt/prettier:
|
||||
fmt/prettier: .prettierignore
|
||||
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/prettier$(RESET)"
|
||||
cd site
|
||||
# Avoid writing files in CI to reduce file write activity
|
||||
ifdef CI
|
||||
pnpm run format:check
|
||||
@ -442,7 +446,7 @@ lint/site-icons:
|
||||
|
||||
lint/ts:
|
||||
cd site
|
||||
pnpm i && pnpm lint
|
||||
pnpm lint
|
||||
.PHONY: lint/ts
|
||||
|
||||
lint/go:
|
||||
@ -495,9 +499,6 @@ gen: \
|
||||
.prettierignore.include \
|
||||
.prettierignore \
|
||||
provisioner/terraform/testdata/version \
|
||||
site/.prettierrc.yaml \
|
||||
site/.prettierignore \
|
||||
site/.eslintignore \
|
||||
site/e2e/provisionerGenerated.ts \
|
||||
site/src/theme/icons.json \
|
||||
examples/examples.gen.json \
|
||||
@ -526,9 +527,6 @@ gen/mark-fresh:
|
||||
coderd/apidoc/swagger.json \
|
||||
.prettierignore.include \
|
||||
.prettierignore \
|
||||
site/.prettierrc.yaml \
|
||||
site/.prettierignore \
|
||||
site/.eslintignore \
|
||||
site/e2e/provisionerGenerated.ts \
|
||||
site/src/theme/icons.json \
|
||||
examples/examples.gen.json \
|
||||
@ -603,7 +601,6 @@ provisionerd/proto/provisionerd.pb.go: provisionerd/proto/provisionerd.proto
|
||||
site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go')
|
||||
go run ./scripts/apitypings/ > $@
|
||||
./scripts/pnpm_install.sh
|
||||
pnpm exec prettier --write "$@"
|
||||
|
||||
site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go
|
||||
cd site
|
||||
@ -613,7 +610,7 @@ site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisio
|
||||
site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*)
|
||||
go run ./scripts/gensite/ -icons "$@"
|
||||
./scripts/pnpm_install.sh
|
||||
pnpm exec prettier --write "$@"
|
||||
pnpm -C site/ exec biome format --write src/theme/icons.json
|
||||
|
||||
examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates)
|
||||
go run ./scripts/examplegen/main.go > examples/examples.gen.json
|
||||
@ -702,23 +699,6 @@ scripts/ci-report/testdata/.gen-golden: $(wildcard scripts/ci-report/testdata/*)
|
||||
go test ./scripts/ci-report -run=TestOutputMatchesGoldenFile -update
|
||||
touch "$@"
|
||||
|
||||
# Generate a prettierrc for the site package that uses relative paths for
|
||||
# overrides. This allows us to share the same prettier config between the
|
||||
# site and the root of the repo.
|
||||
site/.prettierrc.yaml: .prettierrc.yaml
|
||||
. ./scripts/lib.sh
|
||||
dependencies yq
|
||||
|
||||
echo "# Code generated by Makefile (../$<). DO NOT EDIT." > "$@"
|
||||
echo "" >> "$@"
|
||||
|
||||
# Replace all listed override files with relative paths inside site/.
|
||||
# - ./ -> ../
|
||||
# - ./site -> ./
|
||||
yq \
|
||||
'.overrides[].files |= map(. | sub("^./"; "") | sub("^"; "../") | sub("../site/"; "./") | sub("../!"; "!../"))' \
|
||||
"$<" >> "$@"
|
||||
|
||||
# Combine .gitignore with .prettierignore.include to generate .prettierignore.
|
||||
.prettierignore: .gitignore .prettierignore.include
|
||||
echo "# Code generated by Makefile ($^). DO NOT EDIT." > "$@"
|
||||
@ -728,40 +708,6 @@ site/.prettierrc.yaml: .prettierrc.yaml
|
||||
cat "$$f" >> "$@"
|
||||
done
|
||||
|
||||
# Generate ignore files based on gitignore into the site directory. We turn all
|
||||
# rules into relative paths for the `site/` directory (where applicable),
|
||||
# following the pattern format defined by git:
|
||||
# https://git-scm.com/docs/gitignore#_pattern_format
|
||||
#
|
||||
# This is done for compatibility reasons, see:
|
||||
# https://github.com/prettier/prettier/issues/8048
|
||||
# https://github.com/prettier/prettier/issues/8506
|
||||
# https://github.com/prettier/prettier/issues/8679
|
||||
site/.eslintignore site/.prettierignore: .prettierignore Makefile
|
||||
rm -f "$@"
|
||||
touch "$@"
|
||||
# Skip generated by header, inherit `.prettierignore` header as-is.
|
||||
while read -r rule; do
|
||||
# Remove leading ! if present to simplify rule, added back at the end.
|
||||
tmp="$${rule#!}"
|
||||
ignore="$${rule%"$$tmp"}"
|
||||
rule="$$tmp"
|
||||
case "$$rule" in
|
||||
# Comments or empty lines (include).
|
||||
\#*|'') ;;
|
||||
# Generic rules (include).
|
||||
\*\**) ;;
|
||||
# Site prefixed rules (include).
|
||||
site/*) rule="$${rule#site/}";;
|
||||
./site/*) rule="$${rule#./site/}";;
|
||||
# Rules that are non-generic and don't start with site (rewrite).
|
||||
/*) rule=.."$$rule";;
|
||||
*/?*) rule=../"$$rule";;
|
||||
*) ;;
|
||||
esac
|
||||
echo "$${ignore}$${rule}" >> "$@"
|
||||
done < "$<"
|
||||
|
||||
test:
|
||||
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./...
|
||||
.PHONY: test
|
||||
|
@ -16,7 +16,6 @@
|
||||
"@chakra-ui/react": "2.8.2",
|
||||
"@emotion/react": "11.11.4",
|
||||
"@emotion/styled": "11.11.5",
|
||||
"@types/lodash": "4.14.196",
|
||||
"archiver": "6.0.2",
|
||||
"framer-motion": "^10.17.6",
|
||||
"front-matter": "4.0.2",
|
||||
@ -36,7 +35,7 @@
|
||||
"@types/react-dom": "18.3.0",
|
||||
"eslint": "8.56.0",
|
||||
"eslint-config-next": "14.0.1",
|
||||
"prettier": "3.1.0",
|
||||
"prettier": "3.3.3",
|
||||
"typescript": "5.3.2"
|
||||
},
|
||||
"engines": {
|
||||
|
427
offlinedocs/pnpm-lock.yaml
generated
427
offlinedocs/pnpm-lock.yaml
generated
@ -10,22 +10,19 @@ importers:
|
||||
dependencies:
|
||||
'@chakra-ui/react':
|
||||
specifier: 2.8.2
|
||||
version: 2.8.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
||||
version: 2.8.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@emotion/react':
|
||||
specifier: 11.11.4
|
||||
version: 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||
'@emotion/styled':
|
||||
specifier: 11.11.5
|
||||
version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
||||
'@types/lodash':
|
||||
specifier: 4.14.196
|
||||
version: 4.14.196
|
||||
version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||
archiver:
|
||||
specifier: 6.0.2
|
||||
version: 6.0.2
|
||||
framer-motion:
|
||||
specifier: ^10.17.6
|
||||
version: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
version: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
front-matter:
|
||||
specifier: 4.0.2
|
||||
version: 4.0.2
|
||||
@ -34,7 +31,7 @@ importers:
|
||||
version: 4.17.21
|
||||
next:
|
||||
specifier: 14.2.4
|
||||
version: 14.2.4(react-dom@18.3.1)(react@18.3.1)
|
||||
version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react:
|
||||
specifier: 18.3.1
|
||||
version: 18.3.1
|
||||
@ -54,6 +51,9 @@ importers:
|
||||
specifier: 4.0.0
|
||||
version: 4.0.0
|
||||
devDependencies:
|
||||
'@types/lodash':
|
||||
specifier: 4.14.196
|
||||
version: 4.14.196
|
||||
'@types/node':
|
||||
specifier: 18.19.0
|
||||
version: 18.19.0
|
||||
@ -70,8 +70,8 @@ importers:
|
||||
specifier: 14.0.1
|
||||
version: 14.0.1(eslint@8.56.0)(typescript@5.3.2)
|
||||
prettier:
|
||||
specifier: 3.1.0
|
||||
version: 3.1.0
|
||||
specifier: 3.3.3
|
||||
version: 3.3.3
|
||||
typescript:
|
||||
specifier: 5.3.2
|
||||
version: 5.3.2
|
||||
@ -2100,8 +2100,8 @@ packages:
|
||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
||||
prettier@3.1.0:
|
||||
resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==}
|
||||
prettier@3.3.3:
|
||||
resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
@ -2634,69 +2634,69 @@ snapshots:
|
||||
'@babel/helper-validator-identifier': 7.22.20
|
||||
to-fast-properties: 2.0.0
|
||||
|
||||
'@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
||||
'@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-controllable-state': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/alert@2.2.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/alert@2.2.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/anatomy@2.2.2': {}
|
||||
|
||||
'@chakra-ui/avatar@2.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/avatar@2.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/breadcrumb@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/breadcrumb@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/breakpoint-utils@2.0.8':
|
||||
dependencies:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
|
||||
'@chakra-ui/button@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/button@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/card@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/card@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/checkbox@2.3.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/checkbox@2.3.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
'@chakra-ui/react-use-callback-ref': 2.1.0(react@18.3.1)
|
||||
@ -2705,8 +2705,8 @@ snapshots:
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@zag-js/focus-visible': 0.16.0
|
||||
react: 18.3.1
|
||||
|
||||
@ -2716,10 +2716,10 @@ snapshots:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/close-button@2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/close-button@2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/color-mode@2.2.0(react@18.3.1)':
|
||||
@ -2727,9 +2727,9 @@ snapshots:
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/control-box@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/control-box@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/counter@2.1.0(react@18.3.1)':
|
||||
@ -2739,7 +2739,7 @@ snapshots:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.4)(react@18.3.1)':
|
||||
'@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||
react: 18.3.1
|
||||
@ -2752,7 +2752,7 @@ snapshots:
|
||||
|
||||
'@chakra-ui/dom-utils@2.1.0': {}
|
||||
|
||||
'@chakra-ui/editable@3.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/editable@3.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
@ -2763,7 +2763,7 @@ snapshots:
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/event-utils@2.0.8': {}
|
||||
@ -2776,14 +2776,14 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
|
||||
'@chakra-ui/form-control@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/form-control@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/hooks@2.2.1(react@18.3.1)':
|
||||
@ -2794,38 +2794,38 @@ snapshots:
|
||||
copy-to-clipboard: 3.3.3
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/icon@3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/icon@3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/image@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/image@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/input@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/input@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/object-utils': 2.1.0
|
||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/layout@2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/layout@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/breakpoint-utils': 2.0.8
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/object-utils': 2.1.0
|
||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/lazy-utils@2.0.5': {}
|
||||
@ -2834,15 +2834,15 @@ snapshots:
|
||||
dependencies:
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/breakpoint-utils': 2.0.8
|
||||
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
||||
'@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/clickable': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||
@ -2858,35 +2858,35 @@ snapshots:
|
||||
'@chakra-ui/react-use-outside-click': 2.2.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.2)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
||||
'@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/focus-lock': 2.1.0(@types/react@18.3.3)(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
aria-hidden: 1.2.3
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
react-remove-scroll: 2.5.6(@types/react@18.3.3)(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
|
||||
'@chakra-ui/number-input@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/number-input@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/counter': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
'@chakra-ui/react-use-callback-ref': 2.1.0(react@18.3.1)
|
||||
@ -2896,14 +2896,14 @@ snapshots:
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/number-utils@2.0.7': {}
|
||||
|
||||
'@chakra-ui/object-utils@2.1.0': {}
|
||||
|
||||
'@chakra-ui/pin-input@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/pin-input@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||
@ -2911,12 +2911,12 @@ snapshots:
|
||||
'@chakra-ui/react-use-controllable-state': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
||||
'@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/lazy-utils': 2.0.5
|
||||
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
@ -2927,8 +2927,8 @@ snapshots:
|
||||
'@chakra-ui/react-use-focus-on-pointer-down': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/popper@3.1.0(react@18.3.1)':
|
||||
@ -2938,39 +2938,39 @@ snapshots:
|
||||
'@popperjs/core': 2.11.8
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/portal@2.1.0(react-dom@18.3.1)(react@18.3.1)':
|
||||
'@chakra-ui/portal@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
|
||||
'@chakra-ui/progress@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/progress@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/provider@2.4.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)':
|
||||
'@chakra-ui/provider@2.4.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4)(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/utils': 2.0.15
|
||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
|
||||
'@chakra-ui/radio@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/radio@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@zag-js/focus-visible': 0.16.0
|
||||
react: 18.3.1
|
||||
|
||||
@ -3081,92 +3081,92 @@ snapshots:
|
||||
'@chakra-ui/utils': 2.0.15
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/react@2.8.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
||||
'@chakra-ui/react@2.8.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
||||
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/avatar': 2.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/breadcrumb': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/button': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/card': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/control-box': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/avatar': 2.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/breadcrumb': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/button': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/card': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/control-box': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/counter': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4)(react@18.3.1)
|
||||
'@chakra-ui/editable': 3.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/editable': 3.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/focus-lock': 2.1.0(@types/react@18.3.3)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/hooks': 2.2.1(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/input': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/layout': 2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/input': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/layout': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/live-region': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
||||
'@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.2)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/number-input': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/pin-input': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
||||
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/number-input': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/pin-input': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/progress': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/provider': 2.4.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/radio': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/progress': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/provider': 2.4.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/radio': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/select': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/skeleton': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/skip-nav': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/slider': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/stat': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/stepper': 2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/select': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/skeleton': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/skip-nav': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/slider': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/stat': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/stepper': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/styled-system': 2.9.2
|
||||
'@chakra-ui/switch': 2.1.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/table': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/tabs': 3.0.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/tag': 3.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/textarea': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/switch': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/table': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/tabs': 3.0.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/tag': 3.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/textarea': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/theme': 3.3.1(@chakra-ui/styled-system@2.9.2)
|
||||
'@chakra-ui/theme-utils': 2.0.21
|
||||
'@chakra-ui/toast': 7.0.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/tooltip': 2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
||||
'@chakra-ui/toast': 7.0.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/tooltip': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/utils': 2.0.15
|
||||
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
|
||||
'@chakra-ui/select@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/select@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/shared-utils@2.0.5': {}
|
||||
|
||||
'@chakra-ui/skeleton@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/skeleton@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-use-previous': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/skip-nav@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/skip-nav@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/slider@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/slider@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/number-utils': 2.0.7
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
@ -3178,29 +3178,29 @@ snapshots:
|
||||
'@chakra-ui/react-use-pan-event': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-size': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/spinner@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/spinner@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/stat@2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/stat@2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/stepper@2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/stepper@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/styled-system@2.9.2':
|
||||
@ -3209,15 +3209,15 @@ snapshots:
|
||||
csstype: 3.1.2
|
||||
lodash.mergewith: 4.6.2
|
||||
|
||||
'@chakra-ui/switch@2.1.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
||||
'@chakra-ui/switch@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/system@2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)':
|
||||
'@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/color-mode': 2.2.0(react@18.3.1)
|
||||
'@chakra-ui/object-utils': 2.1.0
|
||||
@ -3226,18 +3226,18 @@ snapshots:
|
||||
'@chakra-ui/theme-utils': 2.0.21
|
||||
'@chakra-ui/utils': 2.0.15
|
||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-fast-compare: 3.2.2
|
||||
|
||||
'@chakra-ui/table@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/table@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/tabs@3.0.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/tabs@3.0.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/clickable': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||
@ -3248,21 +3248,21 @@ snapshots:
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/tag@3.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/tag@3.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/textarea@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/textarea@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/theme-tools@2.1.2(@chakra-ui/styled-system@2.9.2)':
|
||||
@ -3286,41 +3286,41 @@ snapshots:
|
||||
'@chakra-ui/styled-system': 2.9.2
|
||||
'@chakra-ui/theme-tools': 2.1.2(@chakra-ui/styled-system@2.9.2)
|
||||
|
||||
'@chakra-ui/toast@7.0.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
||||
'@chakra-ui/toast@7.0.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-timeout': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/styled-system': 2.9.2
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/theme': 3.3.1(@chakra-ui/styled-system@2.9.2)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
|
||||
'@chakra-ui/tooltip@2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
||||
'@chakra-ui/tooltip@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/dom-utils': 2.1.0
|
||||
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||
'@chakra-ui/react-use-disclosure': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-event-listener': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
|
||||
'@chakra-ui/transition@2.1.0(framer-motion@10.17.6)(react@18.3.1)':
|
||||
'@chakra-ui/transition@2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/shared-utils': 2.0.5
|
||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
||||
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@chakra-ui/utils@2.0.15':
|
||||
@ -3330,9 +3330,9 @@ snapshots:
|
||||
framesync: 6.1.2
|
||||
lodash.mergewith: 4.6.2
|
||||
|
||||
'@chakra-ui/visually-hidden@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
||||
'@chakra-ui/visually-hidden@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||
dependencies:
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
|
||||
'@emotion/babel-plugin@11.11.0':
|
||||
@ -3382,9 +3382,10 @@ snapshots:
|
||||
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
|
||||
'@emotion/utils': 1.2.1
|
||||
'@emotion/weak-memoize': 0.3.1
|
||||
'@types/react': 18.3.3
|
||||
hoist-non-react-statics: 3.3.2
|
||||
react: 18.3.1
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
'@emotion/serialize@1.1.4':
|
||||
dependencies:
|
||||
@ -3396,7 +3397,7 @@ snapshots:
|
||||
|
||||
'@emotion/sheet@1.2.2': {}
|
||||
|
||||
'@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)':
|
||||
'@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
|
||||
dependencies:
|
||||
'@babel/runtime': 7.22.6
|
||||
'@emotion/babel-plugin': 11.11.0
|
||||
@ -3405,8 +3406,9 @@ snapshots:
|
||||
'@emotion/serialize': 1.1.4
|
||||
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
|
||||
'@emotion/utils': 1.2.1
|
||||
'@types/react': 18.3.3
|
||||
react: 18.3.1
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
'@emotion/unitless@0.8.1': {}
|
||||
|
||||
@ -3574,6 +3576,7 @@ snapshots:
|
||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2)
|
||||
debug: 4.3.4
|
||||
eslint: 8.56.0
|
||||
optionalDependencies:
|
||||
typescript: 5.3.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@ -3594,6 +3597,7 @@ snapshots:
|
||||
is-glob: 4.0.3
|
||||
semver: 7.5.4
|
||||
tsutils: 3.21.0(typescript@5.3.2)
|
||||
optionalDependencies:
|
||||
typescript: 5.3.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@ -4040,11 +4044,12 @@ snapshots:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||
eslint: 8.56.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
|
||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0)
|
||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.56.0)
|
||||
eslint-plugin-react: 7.33.2(eslint@8.56.0)
|
||||
eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0)
|
||||
optionalDependencies:
|
||||
typescript: 5.3.2
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-webpack
|
||||
@ -4058,13 +4063,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.56.0):
|
||||
eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0):
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
enhanced-resolve: 5.15.0
|
||||
eslint: 8.56.0
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||
get-tsconfig: 4.6.2
|
||||
globby: 13.2.2
|
||||
is-core-module: 2.13.0
|
||||
@ -4076,19 +4081,19 @@ snapshots:
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0):
|
||||
eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||
debug: 3.2.7
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||
eslint: 8.56.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
|
||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0):
|
||||
eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
|
||||
dependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||
array-includes: 3.1.6
|
||||
array.prototype.findlastindex: 1.2.3
|
||||
array.prototype.flat: 1.3.1
|
||||
@ -4097,7 +4102,7 @@ snapshots:
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.56.0
|
||||
eslint-import-resolver-node: 0.3.7
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||
has: 1.0.3
|
||||
is-core-module: 2.13.0
|
||||
is-glob: 4.0.3
|
||||
@ -4107,6 +4112,8 @@ snapshots:
|
||||
object.values: 1.1.6
|
||||
semver: 6.3.1
|
||||
tsconfig-paths: 3.14.2
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-typescript
|
||||
- eslint-import-resolver-webpack
|
||||
@ -4305,13 +4312,13 @@ snapshots:
|
||||
dependencies:
|
||||
is-callable: 1.2.7
|
||||
|
||||
framer-motion@10.17.6(react-dom@18.3.1)(react@18.3.1):
|
||||
framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
tslib: 2.6.2
|
||||
optionalDependencies:
|
||||
'@emotion/is-prop-valid': 0.8.8
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
|
||||
framesync@6.1.2:
|
||||
dependencies:
|
||||
@ -5137,7 +5144,7 @@ snapshots:
|
||||
|
||||
natural-compare@1.4.0: {}
|
||||
|
||||
next@14.2.4(react-dom@18.3.1)(react@18.3.1):
|
||||
next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
'@next/env': 14.2.4
|
||||
'@swc/helpers': 0.5.5
|
||||
@ -5301,7 +5308,7 @@ snapshots:
|
||||
|
||||
prelude-ls@1.2.1: {}
|
||||
|
||||
prettier@3.1.0: {}
|
||||
prettier@3.3.3: {}
|
||||
|
||||
process-nextick-args@2.0.1: {}
|
||||
|
||||
@ -5335,13 +5342,14 @@ snapshots:
|
||||
react-focus-lock@2.9.5(@types/react@18.3.3)(react@18.3.1):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.22.6
|
||||
'@types/react': 18.3.3
|
||||
focus-lock: 0.11.6
|
||||
prop-types: 15.8.1
|
||||
react: 18.3.1
|
||||
react-clientside-effect: 1.2.6(react@18.3.1)
|
||||
use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1)
|
||||
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
react-icons@4.12.0(react@18.3.1):
|
||||
dependencies:
|
||||
@ -5368,28 +5376,31 @@ snapshots:
|
||||
|
||||
react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1):
|
||||
dependencies:
|
||||
'@types/react': 18.3.3
|
||||
react: 18.3.1
|
||||
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
|
||||
tslib: 2.6.2
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
react-remove-scroll@2.5.6(@types/react@18.3.3)(react@18.3.1):
|
||||
dependencies:
|
||||
'@types/react': 18.3.3
|
||||
react: 18.3.1
|
||||
react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1)
|
||||
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
|
||||
tslib: 2.6.2
|
||||
use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1)
|
||||
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
|
||||
dependencies:
|
||||
'@types/react': 18.3.3
|
||||
get-nonce: 1.0.1
|
||||
invariant: 2.2.4
|
||||
react: 18.3.1
|
||||
tslib: 2.6.2
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
react@18.3.1:
|
||||
dependencies:
|
||||
@ -5789,16 +5800,18 @@ snapshots:
|
||||
|
||||
use-callback-ref@1.3.0(@types/react@18.3.3)(react@18.3.1):
|
||||
dependencies:
|
||||
'@types/react': 18.3.3
|
||||
react: 18.3.1
|
||||
tslib: 2.6.2
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
|
||||
dependencies:
|
||||
'@types/react': 18.3.3
|
||||
detect-node-es: 1.1.0
|
||||
react: 18.3.1
|
||||
tslib: 2.6.2
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.3
|
||||
|
||||
util-deprecate@1.0.2: {}
|
||||
|
||||
|
12
package.json
12
package.json
@ -2,15 +2,13 @@
|
||||
"_comment": "This version doesn't matter, it's just to allow importing from other repos.",
|
||||
"name": "coder",
|
||||
"version": "0.0.0",
|
||||
"packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247",
|
||||
"scripts": {
|
||||
"format": "prettier --cache --write",
|
||||
"format": "prettier --cache --write '**/*.{css,html,json,md,yaml,yml}'",
|
||||
"format:check": "prettier --cache --check '**/*.{css,html,json,md,yaml,yml}'",
|
||||
"storybook": "pnpm run -C site/ storybook"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"exec": "^0.2.1"
|
||||
},
|
||||
"packageManager": "pnpm@8.14.0+sha1.bb42032ff80dba5f9245bc1b03470d2fa0b7fb2f"
|
||||
"prettier": "3.3.3"
|
||||
}
|
||||
}
|
||||
|
21
pnpm-lock.yaml
generated
21
pnpm-lock.yaml
generated
@ -7,29 +7,18 @@ settings:
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
exec:
|
||||
specifier: ^0.2.1
|
||||
version: 0.2.1
|
||||
devDependencies:
|
||||
prettier:
|
||||
specifier: 3.0.0
|
||||
version: 3.0.0
|
||||
specifier: 3.3.3
|
||||
version: 3.3.3
|
||||
|
||||
packages:
|
||||
|
||||
exec@0.2.1:
|
||||
resolution: {integrity: sha512-lE5ZlJgRYh+rmwidatL2AqRA/U9IBoCpKlLriBmnfUIrV/Rj4oLjb63qZ57iBCHWi5j9IjLt5wOWkFYPiTfYAg==}
|
||||
engines: {node: '>= v0.9.1'}
|
||||
deprecated: deprecated in favor of builtin child_process.execFile
|
||||
|
||||
prettier@3.0.0:
|
||||
resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
|
||||
prettier@3.3.3:
|
||||
resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
snapshots:
|
||||
|
||||
exec@0.2.1: {}
|
||||
|
||||
prettier@3.0.0: {}
|
||||
prettier@3.3.3: {}
|
||||
|
@ -1,97 +0,0 @@
|
||||
# Code generated by Makefile (.gitignore .prettierignore.include). DO NOT EDIT.
|
||||
|
||||
# .gitignore:
|
||||
# Common ignore patterns, these rules applies in both root and subdirectories.
|
||||
.DS_Store
|
||||
.eslintcache
|
||||
.gitpod.yml
|
||||
.idea
|
||||
**/*.swp
|
||||
gotests.coverage
|
||||
gotests.xml
|
||||
gotests_stats.json
|
||||
gotests.json
|
||||
node_modules/
|
||||
vendor/
|
||||
yarn-error.log
|
||||
|
||||
# VSCode settings.
|
||||
**/.vscode/*
|
||||
# Allow VSCode recommendations and default settings in project root.
|
||||
!../.vscode/extensions.json
|
||||
!../.vscode/settings.json
|
||||
|
||||
# Front-end ignore patterns.
|
||||
.next/
|
||||
build-storybook.log
|
||||
coverage/
|
||||
storybook-static/
|
||||
test-results/*
|
||||
e2e/test-results/*
|
||||
e2e/states/*.json
|
||||
e2e/.auth.json
|
||||
playwright-report/*
|
||||
.swc
|
||||
|
||||
# Make target for updating golden files (any dir).
|
||||
.gen-golden
|
||||
|
||||
# Build
|
||||
build/
|
||||
dist/
|
||||
out/
|
||||
|
||||
# Bundle analysis
|
||||
stats/
|
||||
|
||||
*.tfstate
|
||||
*.tfstate.backup
|
||||
*.tfplan
|
||||
*.lock.hcl
|
||||
.terraform/
|
||||
|
||||
**/.coderv2/*
|
||||
**/__debug_bin
|
||||
|
||||
# direnv
|
||||
.envrc
|
||||
*.test
|
||||
|
||||
# Loadtesting
|
||||
.././scaletest/terraform/.terraform
|
||||
.././scaletest/terraform/.terraform.lock.hcl
|
||||
../scaletest/terraform/secrets.tfvars
|
||||
.terraform.tfstate.*
|
||||
|
||||
# Nix
|
||||
result
|
||||
|
||||
# Data dumps from unit tests
|
||||
**/*.test.sql
|
||||
|
||||
# Filebrowser.db
|
||||
**/filebrowser.db
|
||||
|
||||
# pnpm
|
||||
.pnpm-store/
|
||||
# .prettierignore.include:
|
||||
# Helm templates contain variables that are invalid YAML and can't be formatted
|
||||
# by Prettier.
|
||||
../helm/**/templates/*.yaml
|
||||
|
||||
# Terraform state files used in tests, these are automatically generated.
|
||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
||||
**/testdata/**/*.tf*.json
|
||||
|
||||
# Testdata shouldn't be formatted.
|
||||
../scripts/apitypings/testdata/**/*.ts
|
||||
../enterprise/tailnet/testdata/*.golden.html
|
||||
../tailnet/testdata/*.golden.html
|
||||
|
||||
# Generated files shouldn't be formatted.
|
||||
e2e/provisionerGenerated.ts
|
||||
|
||||
**/pnpm-lock.yaml
|
||||
|
||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
||||
**/*.gen.json
|
@ -1,205 +0,0 @@
|
||||
---
|
||||
env:
|
||||
browser: true
|
||||
commonjs: true
|
||||
es6: true
|
||||
jest: true
|
||||
node: true
|
||||
ignorePatterns:
|
||||
- "jest.polyfills.js"
|
||||
extends:
|
||||
- eslint:recommended
|
||||
- plugin:@typescript-eslint/recommended
|
||||
- plugin:@typescript-eslint/recommended-requiring-type-checking
|
||||
- plugin:eslint-comments/recommended
|
||||
- plugin:import/recommended
|
||||
- plugin:import/typescript
|
||||
- plugin:react/recommended
|
||||
- plugin:jsx-a11y/strict
|
||||
- plugin:compat/recommended
|
||||
- prettier
|
||||
parser: "@typescript-eslint/parser"
|
||||
parserOptions:
|
||||
ecmaVersion: 2018
|
||||
project: "./tsconfig.json"
|
||||
sourceType: module
|
||||
ecmaFeatures:
|
||||
jsx: true
|
||||
# REMARK(Grey): We might want to move this to repository root eventually to
|
||||
# lint multiple projects (supply array to project property).
|
||||
tsconfigRootDir: "./"
|
||||
plugins:
|
||||
- "@typescript-eslint"
|
||||
- import
|
||||
- react-hooks
|
||||
- jest
|
||||
- unicorn
|
||||
- testing-library
|
||||
overrides:
|
||||
- files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"]
|
||||
extends: ["plugin:testing-library/react", "plugin:testing-library/dom"]
|
||||
rules:
|
||||
# Occasionally, we must traverse the DOM when querying for an element to
|
||||
# avoid the performance costs that come with using selectors like ByRole.
|
||||
# You can read more about these performance costs here:
|
||||
# https://coder.com/docs/contributing/frontend#tests-getting-too-slow.
|
||||
testing-library/no-node-access: off
|
||||
testing-library/no-container: off
|
||||
- files: ["e2e/**/*.[tj]s"]
|
||||
extends: ["plugin:testing-library/react", "plugin:testing-library/dom"]
|
||||
rules:
|
||||
# Sometimes the eslint-plugin-testing-library believes playwright queries are
|
||||
# also react-testing-library queries, which is not the case. So we disable this
|
||||
# rule for all e2e tests.
|
||||
testing-library/prefer-screen-queries: "off"
|
||||
root: true
|
||||
rules:
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/no-misused-promises": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/no-unsafe-argument": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/no-unsafe-assignment": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/no-unsafe-call": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/no-unsafe-member-access": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/no-unsafe-return": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/require-await": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/restrict-plus-operands": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/restrict-template-expressions": "off"
|
||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
||||
"@typescript-eslint/unbound-method": "off"
|
||||
|
||||
"@typescript-eslint/brace-style":
|
||||
["error", "1tbs", { "allowSingleLine": false }]
|
||||
"@typescript-eslint/consistent-type-imports":
|
||||
- error
|
||||
- fixStyle: inline-type-imports
|
||||
"@typescript-eslint/method-signature-style": ["error", "property"]
|
||||
"@typescript-eslint/no-import-type-side-effects": "error"
|
||||
# We're disabling the `no-namespace` rule to use a pattern of defining an interface,
|
||||
# and then defining functions that operate on that data via namespace. This is helpful for
|
||||
# dealing with immutable objects. This is a common pattern that shows up in some other
|
||||
# large TypeScript projects, like VSCode.
|
||||
# More details: https://github.com/coder/m/pull/9720#discussion_r697609528
|
||||
"@typescript-eslint/no-namespace": "off"
|
||||
"@typescript-eslint/no-unused-vars":
|
||||
- error
|
||||
- argsIgnorePattern: "^_"
|
||||
varsIgnorePattern: "^_"
|
||||
ignoreRestSiblings: true
|
||||
"@typescript-eslint/no-empty-interface":
|
||||
- error
|
||||
- allowSingleExtends: true
|
||||
"brace-style": "off"
|
||||
"curly": ["error", "all"]
|
||||
"eslint-comments/disable-enable-pair":
|
||||
- error
|
||||
- allowWholeFile: true
|
||||
"eslint-comments/require-description": "error"
|
||||
eqeqeq: error
|
||||
import/default: "off"
|
||||
import/namespace: "off"
|
||||
import/newline-after-import:
|
||||
- error
|
||||
- count: 1
|
||||
import/no-named-as-default: "off"
|
||||
import/no-named-as-default-member: "off"
|
||||
import/prefer-default-export: "off"
|
||||
import/order:
|
||||
- error
|
||||
- groups: [["builtin", "external"], "internal", "parent"]
|
||||
newlines-between: never
|
||||
alphabetize:
|
||||
order: asc
|
||||
caseInsensitive: true
|
||||
jest/no-focused-tests: "error"
|
||||
jsx-a11y/label-has-for: "off"
|
||||
jsx-a11y/no-autofocus: "off"
|
||||
no-console:
|
||||
- warn
|
||||
- allow:
|
||||
- warn
|
||||
- error
|
||||
- info
|
||||
- debug
|
||||
no-dupe-class-members: "off"
|
||||
no-implicit-coercion: "error"
|
||||
no-restricted-imports:
|
||||
- error
|
||||
- paths:
|
||||
- name: "@mui/material"
|
||||
message:
|
||||
"Use path imports to avoid pulling in unused modules. See:
|
||||
https://material-ui.com/guides/minimizing-bundle-size/"
|
||||
- name: "@mui/icons-material"
|
||||
message:
|
||||
"Use path imports to avoid pulling in unused modules. See:
|
||||
https://material-ui.com/guides/minimizing-bundle-size/"
|
||||
- name: "@mui/material/Avatar"
|
||||
message:
|
||||
"You should use the Avatar component provided on
|
||||
components/Avatar/Avatar"
|
||||
- name: "@mui/material/Alert"
|
||||
message:
|
||||
"You should use the Alert component provided on
|
||||
components/Alert/Alert"
|
||||
- name: "@mui/material/Popover"
|
||||
message:
|
||||
"You should use the Popover component provided on
|
||||
components/Popover/Popover"
|
||||
- name: "@mui/material/Typography"
|
||||
message:
|
||||
"You should use the native HTML elements as span, p, h1, h2, h3..."
|
||||
- name: "@mui/material/Box"
|
||||
message: "You should use a <div> instead"
|
||||
- name: "@mui/material/styles"
|
||||
importNames: ["Interpolation", "Theme", "useTheme"]
|
||||
message: "Import from @emotion/react instead."
|
||||
- name: "lodash"
|
||||
message: "Import from lodash/<name> instead."
|
||||
no-unused-vars: "off"
|
||||
"object-curly-spacing": "off"
|
||||
react-hooks/exhaustive-deps: warn
|
||||
react-hooks/rules-of-hooks: error
|
||||
react/display-name: "off"
|
||||
react/jsx-no-script-url:
|
||||
- error
|
||||
- - name: Link
|
||||
props:
|
||||
- to
|
||||
- name: Button
|
||||
props:
|
||||
- href
|
||||
- name: IconButton
|
||||
props:
|
||||
- href
|
||||
react/prop-types: "off"
|
||||
react/jsx-boolean-value: ["error", "never"]
|
||||
react/jsx-curly-brace-presence:
|
||||
- error
|
||||
- children: ignore
|
||||
# https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#eslint
|
||||
react/jsx-key: error
|
||||
react/jsx-uses-react: "off"
|
||||
react/no-unknown-property: ["error", { ignore: ["css"] }]
|
||||
react/react-in-jsx-scope: "off"
|
||||
# https://github.com/jsx-eslint/eslint-plugin-react/issues/2628#issuecomment-984160944
|
||||
no-restricted-syntax:
|
||||
[
|
||||
"error",
|
||||
{
|
||||
selector: "ImportDeclaration[source.value='react'][specifiers.0.type='ImportDefaultSpecifier']",
|
||||
message: "Default React import not allowed",
|
||||
},
|
||||
]
|
||||
settings:
|
||||
react:
|
||||
version: detect
|
||||
import/resolver:
|
||||
typescript: {}
|
@ -1,97 +0,0 @@
|
||||
# Code generated by Makefile (.gitignore .prettierignore.include). DO NOT EDIT.
|
||||
|
||||
# .gitignore:
|
||||
# Common ignore patterns, these rules applies in both root and subdirectories.
|
||||
.DS_Store
|
||||
.eslintcache
|
||||
.gitpod.yml
|
||||
.idea
|
||||
**/*.swp
|
||||
gotests.coverage
|
||||
gotests.xml
|
||||
gotests_stats.json
|
||||
gotests.json
|
||||
node_modules/
|
||||
vendor/
|
||||
yarn-error.log
|
||||
|
||||
# VSCode settings.
|
||||
**/.vscode/*
|
||||
# Allow VSCode recommendations and default settings in project root.
|
||||
!../.vscode/extensions.json
|
||||
!../.vscode/settings.json
|
||||
|
||||
# Front-end ignore patterns.
|
||||
.next/
|
||||
build-storybook.log
|
||||
coverage/
|
||||
storybook-static/
|
||||
test-results/*
|
||||
e2e/test-results/*
|
||||
e2e/states/*.json
|
||||
e2e/.auth.json
|
||||
playwright-report/*
|
||||
.swc
|
||||
|
||||
# Make target for updating golden files (any dir).
|
||||
.gen-golden
|
||||
|
||||
# Build
|
||||
build/
|
||||
dist/
|
||||
out/
|
||||
|
||||
# Bundle analysis
|
||||
stats/
|
||||
|
||||
*.tfstate
|
||||
*.tfstate.backup
|
||||
*.tfplan
|
||||
*.lock.hcl
|
||||
.terraform/
|
||||
|
||||
**/.coderv2/*
|
||||
**/__debug_bin
|
||||
|
||||
# direnv
|
||||
.envrc
|
||||
*.test
|
||||
|
||||
# Loadtesting
|
||||
.././scaletest/terraform/.terraform
|
||||
.././scaletest/terraform/.terraform.lock.hcl
|
||||
../scaletest/terraform/secrets.tfvars
|
||||
.terraform.tfstate.*
|
||||
|
||||
# Nix
|
||||
result
|
||||
|
||||
# Data dumps from unit tests
|
||||
**/*.test.sql
|
||||
|
||||
# Filebrowser.db
|
||||
**/filebrowser.db
|
||||
|
||||
# pnpm
|
||||
.pnpm-store/
|
||||
# .prettierignore.include:
|
||||
# Helm templates contain variables that are invalid YAML and can't be formatted
|
||||
# by Prettier.
|
||||
../helm/**/templates/*.yaml
|
||||
|
||||
# Terraform state files used in tests, these are automatically generated.
|
||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
||||
**/testdata/**/*.tf*.json
|
||||
|
||||
# Testdata shouldn't be formatted.
|
||||
../scripts/apitypings/testdata/**/*.ts
|
||||
../enterprise/tailnet/testdata/*.golden.html
|
||||
../tailnet/testdata/*.golden.html
|
||||
|
||||
# Generated files shouldn't be formatted.
|
||||
e2e/provisionerGenerated.ts
|
||||
|
||||
**/pnpm-lock.yaml
|
||||
|
||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
||||
**/*.gen.json
|
@ -1,20 +0,0 @@
|
||||
# Code generated by Makefile (../.prettierrc.yaml). DO NOT EDIT.
|
||||
|
||||
# This config file is used in conjunction with `.editorconfig` to specify
|
||||
# formatting for prettier-supported files. See `.editorconfig` and
|
||||
# `site/.editorconfig` for whitespace formatting options.
|
||||
printWidth: 80
|
||||
proseWrap: always
|
||||
trailingComma: all
|
||||
useTabs: false
|
||||
tabWidth: 2
|
||||
overrides:
|
||||
- files:
|
||||
- ../README.md
|
||||
- ../docs/reference/api/**/*.md
|
||||
- ../docs/reference/cli/**/*.md
|
||||
- ../docs/changelogs/*.md
|
||||
- ../.github/**/*.{yaml,yml,toml}
|
||||
- ../scripts/**/*.{yaml,yml,toml}
|
||||
options:
|
||||
proseWrap: preserve
|
45
site/biome.json
Normal file
45
site/biome.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"files": {
|
||||
"ignore": ["**/*Generated.ts"]
|
||||
},
|
||||
"formatter": {
|
||||
"indentStyle": "space",
|
||||
"indentWidth": 2
|
||||
},
|
||||
"linter": {
|
||||
"rules": {
|
||||
"a11y": {
|
||||
"noSvgWithoutTitle": { "level": "off" },
|
||||
"useButtonType": { "level": "off" }
|
||||
},
|
||||
"style": {
|
||||
"noNonNullAssertion": { "level": "off" },
|
||||
"noParameterAssign": { "level": "off" },
|
||||
"useDefaultParameterLast": { "level": "off" },
|
||||
"useSelfClosingElements": { "level": "off" }
|
||||
},
|
||||
"suspicious": {
|
||||
"noArrayIndexKey": { "level": "off" },
|
||||
"noThenProperty": { "level": "off" }
|
||||
},
|
||||
"nursery": {
|
||||
"noRestrictedImports": {
|
||||
"level": "error",
|
||||
"options": {
|
||||
"paths": {
|
||||
"@mui/material": "Use @mui/material/<name> instead. See: https://material-ui.com/guides/minimizing-bundle-size/.",
|
||||
"@mui/icons-material": "Use @mui/icons-material/<name> instead. See: https://material-ui.com/guides/minimizing-bundle-size/.",
|
||||
"@mui/material/Avatar": "Use components/Avatar/Avatar instead.",
|
||||
"@mui/material/Alert": "Use components/Alert/Alert instead.",
|
||||
"@mui/material/Popover": "Use components/Popover/Popover instead.",
|
||||
"@mui/material/Typography": "Use native HTML elements instead. Eg: <span>, <p>, <h1>, etc.",
|
||||
"@mui/material/Box": "Use a <div> instead.",
|
||||
"@mui/material/styles": "Import from @emotion/react instead.",
|
||||
"lodash": "Use lodash/<name> instead."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
import type { Page } from "@playwright/test";
|
||||
import { expect } from "@playwright/test";
|
||||
import { formatDuration, intervalToDuration } from "date-fns";
|
||||
import { type DeploymentConfig, API } from "api/api";
|
||||
import { API, type DeploymentConfig } from "api/api";
|
||||
import type { SerpentOption } from "api/typesGenerated";
|
||||
import { formatDuration, intervalToDuration } from "date-fns";
|
||||
import { coderPort } from "./constants";
|
||||
import { findSessionToken, randomName } from "./helpers";
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import * as path from "path";
|
||||
import * as path from "node:path";
|
||||
|
||||
export const coderMain = path.join(__dirname, "../../enterprise/cmd/coder");
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { expect, type Page } from "@playwright/test";
|
||||
import { type Page, expect } from "@playwright/test";
|
||||
|
||||
type PollingOptions = { timeout?: number; intervals?: number[] };
|
||||
|
||||
@ -11,7 +11,10 @@ export const expectUrl = expect.extend({
|
||||
let pass: boolean;
|
||||
try {
|
||||
await expect
|
||||
.poll(() => (actual = new URL(page.url()).pathname), options)
|
||||
.poll(() => {
|
||||
actual = new URL(page.url()).pathname;
|
||||
return actual;
|
||||
}, options)
|
||||
.toBe(expected);
|
||||
pass = true;
|
||||
} catch {
|
||||
@ -24,11 +27,11 @@ export const expectUrl = expect.extend({
|
||||
actual,
|
||||
expected,
|
||||
message: () =>
|
||||
"The page does not have the expected URL pathname.\n" +
|
||||
`Expected: ${this.isNot ? "not" : ""}${this.utils.printExpected(
|
||||
`The page does not have the expected URL pathname.\nExpected: ${
|
||||
this.isNot ? "not" : ""
|
||||
}${this.utils.printExpected(
|
||||
expected,
|
||||
)}\n` +
|
||||
`Actual: ${this.utils.printReceived(actual)}`,
|
||||
)}\nActual: ${this.utils.printReceived(actual)}`,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
@ -1,16 +1,16 @@
|
||||
import { type BrowserContext, expect, type Page, test } from "@playwright/test";
|
||||
import { type ChildProcess, exec, spawn } from "child_process";
|
||||
import { randomUUID } from "crypto";
|
||||
import express from "express";
|
||||
import capitalize from "lodash/capitalize";
|
||||
import path from "path";
|
||||
import * as ssh from "ssh2";
|
||||
import { Duplex } from "stream";
|
||||
import { type ChildProcess, exec, spawn } from "node:child_process";
|
||||
import { randomUUID } from "node:crypto";
|
||||
import path from "node:path";
|
||||
import { Duplex } from "node:stream";
|
||||
import { type BrowserContext, type Page, expect, test } from "@playwright/test";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
WorkspaceBuildParameter,
|
||||
UpdateTemplateMeta,
|
||||
WorkspaceBuildParameter,
|
||||
} from "api/typesGenerated";
|
||||
import express from "express";
|
||||
import capitalize from "lodash/capitalize";
|
||||
import * as ssh from "ssh2";
|
||||
import { TarWriter } from "utils/tar";
|
||||
import {
|
||||
agentPProfPort,
|
||||
@ -26,13 +26,13 @@ import {
|
||||
Agent,
|
||||
type App,
|
||||
AppSharingLevel,
|
||||
type ApplyComplete,
|
||||
type ExternalAuthProviderResource,
|
||||
type ParseComplete,
|
||||
type PlanComplete,
|
||||
type ApplyComplete,
|
||||
type Resource,
|
||||
Response,
|
||||
type RichParameter,
|
||||
type ExternalAuthProviderResource,
|
||||
} from "./provisionerGenerated";
|
||||
|
||||
// requiresEnterpriseLicense will skip the test if we're not running with an enterprise license
|
||||
@ -88,7 +88,7 @@ export const createWorkspace = async (
|
||||
|
||||
await page.getByTestId("form-submit").click();
|
||||
|
||||
await expectUrl(page).toHavePathName("/@admin/" + name);
|
||||
await expectUrl(page).toHavePathName(`/@admin/${name}`);
|
||||
|
||||
await page.waitForSelector("*[data-testid='build-status'] >> text=Running", {
|
||||
state: "visible",
|
||||
@ -102,7 +102,7 @@ export const verifyParameters = async (
|
||||
richParameters: RichParameter[],
|
||||
expectedBuildParameters: WorkspaceBuildParameter[],
|
||||
) => {
|
||||
await page.goto("/@admin/" + workspaceName + "/settings/parameters", {
|
||||
await page.goto(`/@admin/${workspaceName}/settings/parameters`, {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
await expectUrl(page).toHavePathName(
|
||||
@ -120,7 +120,7 @@ export const verifyParameters = async (
|
||||
}
|
||||
|
||||
const parameterLabel = await page.waitForSelector(
|
||||
"[data-testid='parameter-field-" + richParameter.name + "']",
|
||||
`[data-testid='parameter-field-${richParameter.name}']`,
|
||||
{ state: "visible" },
|
||||
);
|
||||
|
||||
@ -128,17 +128,13 @@ export const verifyParameters = async (
|
||||
|
||||
if (richParameter.type === "bool") {
|
||||
const parameterField = await parameterLabel.waitForSelector(
|
||||
"[data-testid='parameter-field-bool'] .MuiRadio-root.Mui-checked" +
|
||||
muiDisabled +
|
||||
" input",
|
||||
`[data-testid='parameter-field-bool'] .MuiRadio-root.Mui-checked${muiDisabled} input`,
|
||||
);
|
||||
const value = await parameterField.inputValue();
|
||||
expect(value).toEqual(buildParameter.value);
|
||||
} else if (richParameter.options.length > 0) {
|
||||
const parameterField = await parameterLabel.waitForSelector(
|
||||
"[data-testid='parameter-field-options'] .MuiRadio-root.Mui-checked" +
|
||||
muiDisabled +
|
||||
" input",
|
||||
`[data-testid='parameter-field-options'] .MuiRadio-root.Mui-checked${muiDisabled} input`,
|
||||
);
|
||||
const value = await parameterField.inputValue();
|
||||
expect(value).toEqual(buildParameter.value);
|
||||
@ -147,7 +143,7 @@ export const verifyParameters = async (
|
||||
} else {
|
||||
// text or number
|
||||
const parameterField = await parameterLabel.waitForSelector(
|
||||
"[data-testid='parameter-field-text'] input" + muiDisabled,
|
||||
`[data-testid='parameter-field-text'] input${muiDisabled}`,
|
||||
);
|
||||
const value = await parameterField.inputValue();
|
||||
expect(value).toEqual(buildParameter.value);
|
||||
@ -266,7 +262,7 @@ export const sshIntoWorkspace = async (
|
||||
};
|
||||
|
||||
export const stopWorkspace = async (page: Page, workspaceName: string) => {
|
||||
await page.goto("/@admin/" + workspaceName, {
|
||||
await page.goto(`/@admin/${workspaceName}`, {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
||||
@ -283,9 +279,9 @@ export const buildWorkspaceWithParameters = async (
|
||||
workspaceName: string,
|
||||
richParameters: RichParameter[] = [],
|
||||
buildParameters: WorkspaceBuildParameter[] = [],
|
||||
confirm: boolean = false,
|
||||
confirm = false,
|
||||
) => {
|
||||
await page.goto("/@admin/" + workspaceName, {
|
||||
await page.goto(`/@admin/${workspaceName}`, {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
||||
@ -321,7 +317,7 @@ export const downloadCoderVersion = async (
|
||||
version = version.slice(1);
|
||||
}
|
||||
|
||||
const binaryName = "coder-e2e-" + version;
|
||||
const binaryName = `coder-e2e-${version}`;
|
||||
const tempDir = "/tmp/coder-e2e-cache";
|
||||
// The install script adds `./bin` automatically to the path :shrug:
|
||||
const binaryPath = path.join(tempDir, "bin", binaryName);
|
||||
@ -367,7 +363,7 @@ export const downloadCoderVersion = async (
|
||||
if (code === 0) {
|
||||
resolve();
|
||||
} else {
|
||||
reject(new Error("install.sh failed with code " + code));
|
||||
reject(new Error(`install.sh failed with code ${code}`));
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -385,8 +381,8 @@ export const startAgentWithCommand = async (
|
||||
...process.env,
|
||||
CODER_AGENT_URL: `http://localhost:${coderPort}`,
|
||||
CODER_AGENT_TOKEN: token,
|
||||
CODER_AGENT_PPROF_ADDRESS: "127.0.0.1:" + agentPProfPort,
|
||||
CODER_AGENT_PROMETHEUS_ADDRESS: "127.0.0.1:" + prometheusPort,
|
||||
CODER_AGENT_PPROF_ADDRESS: `127.0.0.1:${agentPProfPort}`,
|
||||
CODER_AGENT_PROMETHEUS_ADDRESS: `127.0.0.1:${prometheusPort}`,
|
||||
},
|
||||
});
|
||||
cp.stdout.on("data", (data: Buffer) => {
|
||||
@ -406,7 +402,7 @@ export const startAgentWithCommand = async (
|
||||
return cp;
|
||||
};
|
||||
|
||||
export const stopAgent = async (cp: ChildProcess, goRun: boolean = true) => {
|
||||
export const stopAgent = async (cp: ChildProcess, goRun = true) => {
|
||||
// When the web server is started with `go run`, it spawns a child process with coder server.
|
||||
// `pkill -P` terminates child processes belonging the same group as `go run`.
|
||||
// The command `kill` is used to terminate a web server started as a standalone binary.
|
||||
@ -415,7 +411,7 @@ export const stopAgent = async (cp: ChildProcess, goRun: boolean = true) => {
|
||||
throw new Error(`exec error: ${JSON.stringify(error)}`);
|
||||
}
|
||||
});
|
||||
await waitUntilUrlIsNotResponding("http://localhost:" + prometheusPort);
|
||||
await waitUntilUrlIsNotResponding(`http://localhost:${prometheusPort}`);
|
||||
};
|
||||
|
||||
export const waitUntilUrlIsNotResponding = async (url: string) => {
|
||||
@ -555,7 +551,7 @@ const createTemplateVersionTar = async (
|
||||
try {
|
||||
Agent.encode(agentResource);
|
||||
} catch (e) {
|
||||
let m = `Error: agentResource encode failed, missing defaults?`;
|
||||
let m = "Error: agentResource encode failed, missing defaults?";
|
||||
if (e instanceof Error) {
|
||||
if (!e.stack?.includes(e.message)) {
|
||||
m += `\n${e.name}: ${e.message}`;
|
||||
@ -632,7 +628,9 @@ export class Awaiter {
|
||||
private callback?: () => void;
|
||||
|
||||
constructor() {
|
||||
this.promise = new Promise((r) => (this.callback = r));
|
||||
this.promise = new Promise((r) => {
|
||||
this.callback = r;
|
||||
});
|
||||
}
|
||||
|
||||
public done(): void {
|
||||
@ -745,22 +743,18 @@ export const fillParameters = async (
|
||||
}
|
||||
|
||||
const parameterLabel = await page.waitForSelector(
|
||||
"[data-testid='parameter-field-" + richParameter.name + "']",
|
||||
`[data-testid='parameter-field-${richParameter.name}']`,
|
||||
{ state: "visible" },
|
||||
);
|
||||
|
||||
if (richParameter.type === "bool") {
|
||||
const parameterField = await parameterLabel.waitForSelector(
|
||||
"[data-testid='parameter-field-bool'] .MuiRadio-root input[value='" +
|
||||
buildParameter.value +
|
||||
"']",
|
||||
`[data-testid='parameter-field-bool'] .MuiRadio-root input[value='${buildParameter.value}']`,
|
||||
);
|
||||
await parameterField.click();
|
||||
} else if (richParameter.options.length > 0) {
|
||||
const parameterField = await parameterLabel.waitForSelector(
|
||||
"[data-testid='parameter-field-options'] .MuiRadio-root input[value='" +
|
||||
buildParameter.value +
|
||||
"']",
|
||||
`[data-testid='parameter-field-options'] .MuiRadio-root input[value='${buildParameter.value}']`,
|
||||
);
|
||||
await parameterField.click();
|
||||
} else if (richParameter.type === "list(string)") {
|
||||
@ -856,7 +850,7 @@ export const updateWorkspace = async (
|
||||
richParameters: RichParameter[] = [],
|
||||
buildParameters: WorkspaceBuildParameter[] = [],
|
||||
) => {
|
||||
await page.goto("/@admin/" + workspaceName, {
|
||||
await page.goto(`/@admin/${workspaceName}`, {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
||||
@ -878,7 +872,7 @@ export const updateWorkspaceParameters = async (
|
||||
richParameters: RichParameter[] = [],
|
||||
buildParameters: WorkspaceBuildParameter[] = [],
|
||||
) => {
|
||||
await page.goto("/@admin/" + workspaceName + "/settings/parameters", {
|
||||
await page.goto(`/@admin/${workspaceName}/settings/parameters`, {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
await expectUrl(page).toHavePathName(
|
||||
@ -897,7 +891,7 @@ export async function openTerminalWindow(
|
||||
page: Page,
|
||||
context: BrowserContext,
|
||||
workspaceName: string,
|
||||
agentName: string = "dev",
|
||||
agentName = "dev",
|
||||
): Promise<Page> {
|
||||
// Wait for the web terminal to open in a new tab
|
||||
const pagePromise = context.waitForEvent("page");
|
||||
|
@ -1,10 +1,10 @@
|
||||
import http from "node:http";
|
||||
import type { BrowserContext, Page } from "@playwright/test";
|
||||
import http from "http";
|
||||
import { coderPort, gitAuth } from "./constants";
|
||||
|
||||
export const beforeCoderTest = async (page: Page) => {
|
||||
// eslint-disable-next-line no-console -- Show everything that was printed with console.log()
|
||||
page.on("console", (msg) => console.log("[onConsole] " + msg.text()));
|
||||
page.on("console", (msg) => console.log(`[onConsole] ${msg.text()}`));
|
||||
|
||||
page.on("request", (request) => {
|
||||
if (!isApiCall(request.url())) {
|
||||
|
@ -132,7 +132,7 @@ export const seventhParameter: RichParameter = {
|
||||
// It helps to avoid cross-test interference when user-auto-fill triggers on
|
||||
// the same parameter name.
|
||||
export const randParamName = (p: RichParameter): RichParameter => {
|
||||
const name = p.name + "_" + Math.random().toString(36).substring(7);
|
||||
const name = `${p.name}_${Math.random().toString(36).substring(7)}`;
|
||||
return { ...p, name: name };
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { execSync } from "node:child_process";
|
||||
import * as path from "node:path";
|
||||
import { defineConfig } from "@playwright/test";
|
||||
import { execSync } from "child_process";
|
||||
import * as path from "path";
|
||||
import {
|
||||
coderMain,
|
||||
coderPort,
|
||||
@ -38,14 +38,15 @@ try {
|
||||
}
|
||||
|
||||
if (!hasTerraform || !hasDocker) {
|
||||
const msg =
|
||||
"Terraform provisioners require docker & terraform binaries to function. \n" +
|
||||
(hasTerraform
|
||||
const msg = `Terraform provisioners require docker & terraform binaries to function. \n${
|
||||
hasTerraform
|
||||
? ""
|
||||
: "\tThe `terraform` executable is not present in the runtime environment.\n") +
|
||||
(hasDocker
|
||||
: "\tThe `terraform` executable is not present in the runtime environment.\n"
|
||||
}${
|
||||
hasDocker
|
||||
? ""
|
||||
: "\tThe `docker` executable is not present in the runtime environment.\n");
|
||||
: "\tThe `docker` executable is not present in the runtime environment.\n"
|
||||
}`;
|
||||
throw new Error(msg);
|
||||
}
|
||||
|
||||
@ -96,7 +97,7 @@ export default defineConfig({
|
||||
"--provisioner-daemons 10",
|
||||
// TODO: Enable some terraform provisioners
|
||||
`--provisioner-types=echo${requireTerraformTests ? ",terraform" : ""}`,
|
||||
`--provisioner-daemons=10`,
|
||||
"--provisioner-daemons=10",
|
||||
"--web-terminal-renderer=dom",
|
||||
"--pprof-enable",
|
||||
]
|
||||
@ -146,7 +147,7 @@ export default defineConfig({
|
||||
gitAuth.webPort,
|
||||
gitAuth.validatePath,
|
||||
),
|
||||
CODER_PPROF_ADDRESS: "127.0.0.1:" + coderdPProfPort,
|
||||
CODER_PPROF_ADDRESS: `127.0.0.1:${coderdPProfPort}`,
|
||||
CODER_EXPERIMENTS: `multi-organization,${e2eFakeExperiment1},${e2eFakeExperiment2}`,
|
||||
|
||||
// Tests for Deployment / User Authentication / OIDC
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { spawn, type ChildProcess, exec } from "child_process";
|
||||
import { type ChildProcess, exec, spawn } from "node:child_process";
|
||||
import { coderMain, coderPort, workspaceProxyPort } from "./constants";
|
||||
import { waitUntilUrlIsNotResponding } from "./helpers";
|
||||
|
||||
@ -28,10 +28,7 @@ export const startWorkspaceProxy = async (
|
||||
return cp;
|
||||
};
|
||||
|
||||
export const stopWorkspaceProxy = async (
|
||||
cp: ChildProcess,
|
||||
goRun: boolean = true,
|
||||
) => {
|
||||
export const stopWorkspaceProxy = async (cp: ChildProcess, goRun = true) => {
|
||||
exec(goRun ? `pkill -P ${cp.pid}` : `kill ${cp.pid}`, (error) => {
|
||||
if (error) {
|
||||
throw new Error(`exec error: ${JSON.stringify(error)}`);
|
||||
|
@ -1,15 +1,15 @@
|
||||
import * as fs from "node:fs/promises";
|
||||
import type { Writable } from "node:stream";
|
||||
/* eslint-disable no-console -- Logging is sort of the whole point here */
|
||||
import type {
|
||||
FullConfig,
|
||||
Suite,
|
||||
TestCase,
|
||||
TestResult,
|
||||
FullResult,
|
||||
Reporter,
|
||||
Suite,
|
||||
TestCase,
|
||||
TestError,
|
||||
TestResult,
|
||||
} from "@playwright/test/reporter";
|
||||
import * as fs from "fs/promises";
|
||||
import type { Writable } from "stream";
|
||||
import { API } from "api/api";
|
||||
import { coderdPProfPort, enterpriseLicense } from "./constants";
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { randomUUID } from "node:crypto";
|
||||
import * as http from "node:http";
|
||||
import { test } from "@playwright/test";
|
||||
import { randomUUID } from "crypto";
|
||||
import * as http from "http";
|
||||
import {
|
||||
createTemplate,
|
||||
createWorkspace,
|
||||
@ -37,7 +37,7 @@ test("app", async ({ context, page }) => {
|
||||
token,
|
||||
apps: [
|
||||
{
|
||||
url: "http://localhost:" + addr.port,
|
||||
url: `http://localhost:${addr.port}`,
|
||||
displayName: appName,
|
||||
order: 0,
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { Page } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { type DeploymentConfig, API } from "api/api";
|
||||
import { API, type DeploymentConfig } from "api/api";
|
||||
import {
|
||||
findConfigOption,
|
||||
setupApiCalls,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect, type Page } from "@playwright/test";
|
||||
import { type Page, expect, test } from "@playwright/test";
|
||||
import { API } from "api/api";
|
||||
import { setupApiCalls } from "../../api";
|
||||
import { coderPort, workspaceProxyPort } from "../../constants";
|
||||
@ -23,7 +23,7 @@ test("default proxy is online", async ({ page }) => {
|
||||
const workspaceProxyStatus = workspaceProxyPrimary.locator("td.status span");
|
||||
|
||||
await expect(workspaceProxyName).toHaveText("Default");
|
||||
await expect(workspaceProxyURL).toHaveText("http://localhost:" + coderPort);
|
||||
await expect(workspaceProxyURL).toHaveText(`http://localhost:${coderPort}`);
|
||||
await expect(workspaceProxyStatus).toHaveText("Healthy");
|
||||
});
|
||||
|
||||
@ -50,7 +50,7 @@ test("custom proxy is online", async ({ page }) => {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
|
||||
const workspaceProxy = page.locator(`table.MuiTable-root tr`, {
|
||||
const workspaceProxy = page.locator("table.MuiTable-root tr", {
|
||||
hasText: proxyName,
|
||||
});
|
||||
|
||||
@ -82,7 +82,7 @@ const waitUntilWorkspaceProxyIsHealthy = async (
|
||||
while (retries < maxRetries) {
|
||||
await page.reload();
|
||||
|
||||
const workspaceProxy = page.locator(`table.MuiTable-root tr`, {
|
||||
const workspaceProxy = page.locator("table.MuiTable-root tr", {
|
||||
hasText: proxyName,
|
||||
});
|
||||
const workspaceProxyStatus = workspaceProxy.locator("td.status span");
|
||||
|
@ -26,8 +26,7 @@ test.beforeAll(async ({ baseURL }) => {
|
||||
});
|
||||
srv.use(gitAuth.authPath, (req, res) => {
|
||||
res.redirect(
|
||||
`${baseURL}/external-auth/${gitAuth.webProvider}/callback?code=1234&state=` +
|
||||
req.query.state,
|
||||
`${baseURL}/external-auth/${gitAuth.webProvider}/callback?code=1234&state=${req.query.state}`,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import {
|
||||
createGroup,
|
||||
createUser,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||
import { requiresEnterpriseLicense } from "../../helpers";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { randomName, requiresEnterpriseLicense } from "../../helpers";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||
import { requiresEnterpriseLicense } from "../../helpers";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||
import { requiresEnterpriseLicense } from "../../helpers";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { API } from "api/api";
|
||||
import {
|
||||
createGroup,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { setupApiCalls } from "../api";
|
||||
import { expectUrl } from "../expectUrl";
|
||||
import { requiresEnterpriseLicense } from "../helpers";
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { randomUUID } from "node:crypto";
|
||||
import { test } from "@playwright/test";
|
||||
import { randomUUID } from "crypto";
|
||||
import {
|
||||
createTemplate,
|
||||
createWorkspace,
|
||||
@ -16,7 +16,7 @@ const agentVersion = "v2.12.1";
|
||||
|
||||
test.beforeEach(({ page }) => beforeCoderTest(page));
|
||||
|
||||
test("ssh with agent " + agentVersion, async ({ page }) => {
|
||||
test(`ssh with agent ${agentVersion}`, async ({ page }) => {
|
||||
test.setTimeout(40_000); // This is a slow test, 20s may not be enough on Mac.
|
||||
|
||||
const token = randomUUID();
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { randomUUID } from "node:crypto";
|
||||
import { test } from "@playwright/test";
|
||||
import { randomUUID } from "crypto";
|
||||
import {
|
||||
createTemplate,
|
||||
createWorkspace,
|
||||
@ -16,7 +16,7 @@ const clientVersion = "v0.27.0";
|
||||
|
||||
test.beforeEach(({ page }) => beforeCoderTest(page));
|
||||
|
||||
test("ssh with client " + clientVersion, async ({ page }) => {
|
||||
test(`ssh with client ${clientVersion}`, async ({ page }) => {
|
||||
const token = randomUUID();
|
||||
const template = await createTemplate(page, {
|
||||
apply: [
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
||||
test.beforeEach(({ page }) => beforeCoderTest(page));
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { randomName } from "../../helpers";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { randomUUID } from "node:crypto";
|
||||
import { test } from "@playwright/test";
|
||||
import { randomUUID } from "crypto";
|
||||
import {
|
||||
createTemplate,
|
||||
createWorkspace,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import { username } from "../../constants";
|
||||
import {
|
||||
createTemplate,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
import { expect, test } from "@playwright/test";
|
||||
import {
|
||||
StarterTemplates,
|
||||
createTemplate,
|
||||
@ -10,14 +10,14 @@ import {
|
||||
} from "../../helpers";
|
||||
import { beforeCoderTest } from "../../hooks";
|
||||
import {
|
||||
secondParameter,
|
||||
fourthParameter,
|
||||
fifthParameter,
|
||||
firstParameter,
|
||||
thirdParameter,
|
||||
fourthParameter,
|
||||
randParamName,
|
||||
secondParameter,
|
||||
seventhParameter,
|
||||
sixthParameter,
|
||||
randParamName,
|
||||
thirdParameter,
|
||||
} from "../../parameters";
|
||||
import type { RichParameter } from "../../provisionerGenerated";
|
||||
|
||||
|
@ -12,9 +12,9 @@ import { beforeCoderTest } from "../../hooks";
|
||||
import {
|
||||
fifthParameter,
|
||||
firstParameter,
|
||||
secondBuildOption,
|
||||
secondParameter,
|
||||
sixthParameter,
|
||||
secondBuildOption,
|
||||
} from "../../parameters";
|
||||
import type { RichParameter } from "../../provisionerGenerated";
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
// Toggle eslint --fix by specifying the `FIX` env.
|
||||
const fix = !!process.env.FIX;
|
||||
|
||||
module.exports = {
|
||||
cliOptions: {
|
||||
ext: [".js", ".ts", ".tsx"],
|
||||
ignorePath: ".eslintignore",
|
||||
cache: false,
|
||||
fix,
|
||||
resolvePluginsRelativeTo: ".",
|
||||
maxWarnings: 0,
|
||||
},
|
||||
};
|
@ -49,21 +49,6 @@ module.exports = {
|
||||
"^@fontsource": "<rootDir>/src/testHelpers/styleMock.ts",
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: "lint",
|
||||
runner: "jest-runner-eslint",
|
||||
testMatch: [
|
||||
"<rootDir>/**/*.js",
|
||||
"<rootDir>/**/*.ts",
|
||||
"<rootDir>/**/*.tsx",
|
||||
],
|
||||
testPathIgnorePatterns: [
|
||||
"/out/",
|
||||
"/_jest/",
|
||||
"jest.config.js",
|
||||
"jest-runner.*.js",
|
||||
],
|
||||
},
|
||||
],
|
||||
collectCoverageFrom: [
|
||||
// included files
|
||||
|
@ -1,193 +1,177 @@
|
||||
{
|
||||
"name": "coder-v2",
|
||||
"description": "Coder V2 (Workspaces V2)",
|
||||
"repository": "https://github.com/coder/coder",
|
||||
"private": true,
|
||||
"license": "AGPL-3.0",
|
||||
"scripts": {
|
||||
"build": "NODE_ENV=production pnpm vite build",
|
||||
"check:all": "pnpm format:check && pnpm lint && pnpm test",
|
||||
"chromatic": "chromatic",
|
||||
"dev": "vite",
|
||||
"format": "prettier --cache --write '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'",
|
||||
"format:check": "prettier --cache --check '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'",
|
||||
"lint": "pnpm run lint:types && jest --selectProjects lint",
|
||||
"lint:fix": "eslint --fix e2e/ src/",
|
||||
"lint:types": "tsc -p .",
|
||||
"playwright:install": "playwright install --with-deps chromium",
|
||||
"playwright:test": "playwright test --config=e2e/playwright.config.ts",
|
||||
"playwright:test-ui": "playwright test --config=e2e/playwright.config.ts --ui $([[ \"$CODER\" == \"true\" ]] && echo --ui-port=7500 --ui-host=0.0.0.0)",
|
||||
"gen:provisioner": "protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=./e2e/ --ts_proto_opt=outputJsonMethods=false,outputEncodeMethods=encode-no-creation,outputClientImpl=false,nestJs=false,outputPartialMethods=false,fileSuffix=Generated,suffix=hey -I ../provisionersdk/proto ../provisionersdk/proto/provisioner.proto && pnpm exec prettier --ignore-path '/dev/null' --cache --write './e2e/provisionerGenerated.ts'",
|
||||
"storybook": "STORYBOOK=true storybook dev -p 6006",
|
||||
"storybook:build": "storybook build",
|
||||
"storybook:ci": "storybook build --test",
|
||||
"test": "jest --selectProjects test",
|
||||
"test:ci": "jest --selectProjects test --silent",
|
||||
"test:coverage": "jest --selectProjects test --collectCoverage",
|
||||
"test:watch": "jest --selectProjects test --watch",
|
||||
"test:storybook": "test-storybook",
|
||||
"stats": "STATS=true pnpm build && npx http-server ./stats -p 8081 -c-1",
|
||||
"deadcode": "ts-prune | grep -v \".stories\\|.config\\|e2e\\|__mocks__\\|used in module\\|testHelpers\\|typesGenerated\" || echo \"No deadcode found.\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@alwaysmeticulous/recorder-loader": "2.137.0",
|
||||
"@emoji-mart/data": "1.2.1",
|
||||
"@emoji-mart/react": "1.1.1",
|
||||
"@emotion/css": "11.11.2",
|
||||
"@emotion/react": "11.11.4",
|
||||
"@emotion/styled": "11.11.5",
|
||||
"@fastly/performance-observer-polyfill": "2.0.0",
|
||||
"@fontsource-variable/inter": "5.0.15",
|
||||
"@fontsource/ibm-plex-mono": "5.0.5",
|
||||
"@monaco-editor/react": "4.6.0",
|
||||
"@mui/icons-material": "5.16.0",
|
||||
"@mui/lab": "5.0.0-alpha.129",
|
||||
"@mui/material": "5.16.0",
|
||||
"@mui/system": "5.16.0",
|
||||
"@mui/utils": "5.16.0",
|
||||
"@mui/x-tree-view": "7.9.0",
|
||||
"@tanstack/react-query-devtools": "4.35.3",
|
||||
"@xterm/addon-canvas": "0.7.0",
|
||||
"@xterm/addon-fit": "0.10.0",
|
||||
"@xterm/addon-unicode11": "0.8.0",
|
||||
"@xterm/addon-web-links": "0.11.0",
|
||||
"@xterm/addon-webgl": "0.18.0",
|
||||
"@xterm/xterm": "5.5.0",
|
||||
"ansi-to-html": "0.7.2",
|
||||
"axios": "1.7.2",
|
||||
"canvas": "3.0.0-rc2",
|
||||
"chart.js": "4.4.0",
|
||||
"chartjs-adapter-date-fns": "3.0.0",
|
||||
"chartjs-plugin-annotation": "3.0.1",
|
||||
"chroma-js": "2.4.2",
|
||||
"color-convert": "2.0.1",
|
||||
"cron-parser": "4.9.0",
|
||||
"cronstrue": "2.43.0",
|
||||
"date-fns": "2.30.0",
|
||||
"dayjs": "1.11.4",
|
||||
"emoji-mart": "5.6.0",
|
||||
"file-saver": "2.0.5",
|
||||
"formik": "2.4.6",
|
||||
"front-matter": "4.0.2",
|
||||
"jszip": "3.10.1",
|
||||
"lodash": "4.17.21",
|
||||
"monaco-editor": "0.50.0",
|
||||
"pretty-bytes": "6.1.0",
|
||||
"react": "18.3.1",
|
||||
"react-chartjs-2": "5.2.0",
|
||||
"react-color": "2.19.3",
|
||||
"react-confetti": "6.1.0",
|
||||
"react-date-range": "1.4.0",
|
||||
"react-dom": "18.3.1",
|
||||
"react-helmet-async": "2.0.5",
|
||||
"react-markdown": "9.0.1",
|
||||
"react-query": "npm:@tanstack/react-query@4.35.3",
|
||||
"react-router-dom": "6.24.0",
|
||||
"react-syntax-highlighter": "15.5.0",
|
||||
"react-virtualized-auto-sizer": "1.0.24",
|
||||
"react-window": "1.8.10",
|
||||
"remark-gfm": "4.0.0",
|
||||
"rollup-plugin-visualizer": "5.12.0",
|
||||
"semver": "7.6.2",
|
||||
"tzdata": "1.0.30",
|
||||
"ua-parser-js": "1.0.33",
|
||||
"ufuzzy": "npm:@leeoniya/ufuzzy@1.0.10",
|
||||
"undici": "6.19.2",
|
||||
"unique-names-generator": "4.7.1",
|
||||
"uuid": "9.0.0",
|
||||
"yup": "1.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@chromatic-com/storybook": "1.6.0",
|
||||
"@octokit/types": "12.3.0",
|
||||
"@playwright/test": "1.40.1",
|
||||
"@storybook/addon-actions": "8.1.11",
|
||||
"@storybook/addon-essentials": "8.1.11",
|
||||
"@storybook/addon-interactions": "8.1.11",
|
||||
"@storybook/addon-links": "8.1.11",
|
||||
"@storybook/addon-mdx-gfm": "8.1.11",
|
||||
"@storybook/addon-themes": "8.1.11",
|
||||
"@storybook/preview-api": "8.1.11",
|
||||
"@storybook/react": "8.1.11",
|
||||
"@storybook/react-vite": "8.1.11",
|
||||
"@storybook/test": "8.1.11",
|
||||
"@swc/core": "1.3.38",
|
||||
"@swc/jest": "0.2.24",
|
||||
"@testing-library/jest-dom": "6.4.6",
|
||||
"@testing-library/react": "14.1.0",
|
||||
"@testing-library/react-hooks": "8.0.1",
|
||||
"@testing-library/user-event": "14.5.1",
|
||||
"@types/chroma-js": "2.4.0",
|
||||
"@types/color-convert": "2.0.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/file-saver": "2.0.7",
|
||||
"@types/jest": "29.5.2",
|
||||
"@types/lodash": "4.17.6",
|
||||
"@types/node": "18.19.0",
|
||||
"@types/react": "18.2.6",
|
||||
"@types/react-color": "3.0.6",
|
||||
"@types/react-date-range": "1.4.4",
|
||||
"@types/react-dom": "18.2.4",
|
||||
"@types/react-syntax-highlighter": "15.5.13",
|
||||
"@types/react-virtualized-auto-sizer": "1.0.4",
|
||||
"@types/react-window": "1.8.8",
|
||||
"@types/semver": "7.5.8",
|
||||
"@types/ssh2": "1.15.0",
|
||||
"@types/ua-parser-js": "0.7.36",
|
||||
"@types/uuid": "9.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "6.9.1",
|
||||
"@typescript-eslint/parser": "6.9.1",
|
||||
"@vitejs/plugin-react": "4.3.1",
|
||||
"chromatic": "11.3.0",
|
||||
"eslint": "8.52.0",
|
||||
"eslint-config-prettier": "9.0.0",
|
||||
"eslint-import-resolver-typescript": "3.6.0",
|
||||
"eslint-plugin-compat": "4.2.0",
|
||||
"eslint-plugin-eslint-comments": "3.2.0",
|
||||
"eslint-plugin-import": "2.29.0",
|
||||
"eslint-plugin-jest": "27.6.0",
|
||||
"eslint-plugin-jsx-a11y": "6.7.1",
|
||||
"eslint-plugin-react": "7.33.0",
|
||||
"eslint-plugin-react-hooks": "4.6.0",
|
||||
"eslint-plugin-storybook": "0.8.0",
|
||||
"eslint-plugin-testing-library": "6.1.0",
|
||||
"eslint-plugin-unicorn": "49.0.0",
|
||||
"eventsourcemock": "2.0.0",
|
||||
"express": "4.19.2",
|
||||
"jest": "29.6.2",
|
||||
"jest-canvas-mock": "2.5.2",
|
||||
"jest-environment-jsdom": "29.5.0",
|
||||
"jest-location-mock": "2.0.0",
|
||||
"jest-runner-eslint": "2.1.0",
|
||||
"jest-websocket-mock": "2.5.0",
|
||||
"jest_workaround": "0.1.14",
|
||||
"msw": "2.2.3",
|
||||
"prettier": "3.1.0",
|
||||
"protobufjs": "7.2.5",
|
||||
"rxjs": "7.8.1",
|
||||
"ssh2": "1.15.0",
|
||||
"storybook": "8.1.11",
|
||||
"storybook-addon-remix-react-router": "3.0.0",
|
||||
"storybook-react-context": "0.6.0",
|
||||
"ts-node": "10.9.1",
|
||||
"ts-proto": "1.164.0",
|
||||
"ts-prune": "0.10.3",
|
||||
"typescript": "5.2.2",
|
||||
"vite": "5.3.3",
|
||||
"vite-plugin-checker": "0.7.1",
|
||||
"vite-plugin-turbosnap": "1.0.2"
|
||||
},
|
||||
"browserslist": [
|
||||
"chrome 110",
|
||||
"firefox 111",
|
||||
"safari 16.0"
|
||||
],
|
||||
"resolutions": {
|
||||
"optionator": "0.9.3",
|
||||
"semver": "7.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"npm": ">=9.0.0 <10.0.0",
|
||||
"node": ">=18.0.0 <21.0.0"
|
||||
}
|
||||
"name": "coder-v2",
|
||||
"description": "Coder V2 (Workspaces V2)",
|
||||
"repository": "https://github.com/coder/coder",
|
||||
"private": true,
|
||||
"license": "AGPL-3.0",
|
||||
"scripts": {
|
||||
"build": "NODE_ENV=production pnpm vite build",
|
||||
"check": "biome check --error-on-warnings e2e/ src/",
|
||||
"check:fix": "biome check --error-on-warnings --fix e2e/ src/",
|
||||
"check:all": "pnpm check && pnpm test",
|
||||
"chromatic": "chromatic",
|
||||
"dev": "vite",
|
||||
"format": "biome format --write e2e/ src/",
|
||||
"format:check": "biome format e2e/ src/",
|
||||
"lint": "pnpm run lint:check && pnpm run lint:types",
|
||||
"lint:check": " biome lint --error-on-warnings e2e/ src/",
|
||||
"lint:fix": " biome lint --error-on-warnings --write e2e/ src/",
|
||||
"lint:types": "tsc -p .",
|
||||
"playwright:install": "playwright install --with-deps chromium",
|
||||
"playwright:test": "playwright test --config=e2e/playwright.config.ts",
|
||||
"playwright:test-ui": "playwright test --config=e2e/playwright.config.ts --ui $([[ \"$CODER\" == \"true\" ]] && echo --ui-port=7500 --ui-host=0.0.0.0)",
|
||||
"gen:provisioner": "protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=./e2e/ --ts_proto_opt=outputJsonMethods=false,outputEncodeMethods=encode-no-creation,outputClientImpl=false,nestJs=false,outputPartialMethods=false,fileSuffix=Generated,suffix=hey -I ../provisionersdk/proto ../provisionersdk/proto/provisioner.proto && pnpm exec prettier --ignore-path '/dev/null' --cache --write './e2e/provisionerGenerated.ts'",
|
||||
"storybook": "STORYBOOK=true storybook dev -p 6006",
|
||||
"storybook:build": "storybook build",
|
||||
"storybook:ci": "storybook build --test",
|
||||
"test": "jest --selectProjects test",
|
||||
"test:ci": "jest --selectProjects test --silent",
|
||||
"test:coverage": "jest --selectProjects test --collectCoverage",
|
||||
"test:watch": "jest --selectProjects test --watch",
|
||||
"test:storybook": "test-storybook",
|
||||
"stats": "STATS=true pnpm build && npx http-server ./stats -p 8081 -c-1",
|
||||
"deadcode": "ts-prune | grep -v \".stories\\|.config\\|e2e\\|__mocks__\\|used in module\\|testHelpers\\|typesGenerated\" || echo \"No deadcode found.\""
|
||||
},
|
||||
"dependencies": {
|
||||
"@alwaysmeticulous/recorder-loader": "2.137.0",
|
||||
"@emoji-mart/data": "1.2.1",
|
||||
"@emoji-mart/react": "1.1.1",
|
||||
"@emotion/css": "11.11.2",
|
||||
"@emotion/react": "11.11.4",
|
||||
"@emotion/styled": "11.11.5",
|
||||
"@fastly/performance-observer-polyfill": "2.0.0",
|
||||
"@fontsource-variable/inter": "5.0.15",
|
||||
"@fontsource/ibm-plex-mono": "5.0.5",
|
||||
"@monaco-editor/react": "4.6.0",
|
||||
"@mui/icons-material": "5.16.0",
|
||||
"@mui/lab": "5.0.0-alpha.129",
|
||||
"@mui/material": "5.16.0",
|
||||
"@mui/system": "5.16.0",
|
||||
"@mui/utils": "5.16.0",
|
||||
"@mui/x-tree-view": "7.9.0",
|
||||
"@tanstack/react-query-devtools": "4.35.3",
|
||||
"@xterm/addon-canvas": "0.7.0",
|
||||
"@xterm/addon-fit": "0.10.0",
|
||||
"@xterm/addon-unicode11": "0.8.0",
|
||||
"@xterm/addon-web-links": "0.11.0",
|
||||
"@xterm/addon-webgl": "0.18.0",
|
||||
"@xterm/xterm": "5.5.0",
|
||||
"ansi-to-html": "0.7.2",
|
||||
"axios": "1.7.2",
|
||||
"canvas": "3.0.0-rc2",
|
||||
"chart.js": "4.4.0",
|
||||
"chartjs-adapter-date-fns": "3.0.0",
|
||||
"chartjs-plugin-annotation": "3.0.1",
|
||||
"chroma-js": "2.4.2",
|
||||
"color-convert": "2.0.1",
|
||||
"cron-parser": "4.9.0",
|
||||
"cronstrue": "2.43.0",
|
||||
"date-fns": "2.30.0",
|
||||
"dayjs": "1.11.4",
|
||||
"emoji-mart": "5.6.0",
|
||||
"file-saver": "2.0.5",
|
||||
"formik": "2.4.6",
|
||||
"front-matter": "4.0.2",
|
||||
"jszip": "3.10.1",
|
||||
"lodash": "4.17.21",
|
||||
"monaco-editor": "0.50.0",
|
||||
"pretty-bytes": "6.1.0",
|
||||
"react": "18.3.1",
|
||||
"react-chartjs-2": "5.2.0",
|
||||
"react-color": "2.19.3",
|
||||
"react-confetti": "6.1.0",
|
||||
"react-date-range": "1.4.0",
|
||||
"react-dom": "18.3.1",
|
||||
"react-helmet-async": "2.0.5",
|
||||
"react-markdown": "9.0.1",
|
||||
"react-query": "npm:@tanstack/react-query@4.35.3",
|
||||
"react-router-dom": "6.24.0",
|
||||
"react-syntax-highlighter": "15.5.0",
|
||||
"react-virtualized-auto-sizer": "1.0.24",
|
||||
"react-window": "1.8.10",
|
||||
"remark-gfm": "4.0.0",
|
||||
"rollup-plugin-visualizer": "5.12.0",
|
||||
"semver": "7.6.2",
|
||||
"tzdata": "1.0.30",
|
||||
"ua-parser-js": "1.0.33",
|
||||
"ufuzzy": "npm:@leeoniya/ufuzzy@1.0.10",
|
||||
"undici": "6.19.2",
|
||||
"unique-names-generator": "4.7.1",
|
||||
"uuid": "9.0.0",
|
||||
"yup": "1.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "1.8.3",
|
||||
"@chromatic-com/storybook": "1.6.0",
|
||||
"@octokit/types": "12.3.0",
|
||||
"@playwright/test": "1.40.1",
|
||||
"@storybook/addon-actions": "8.1.11",
|
||||
"@storybook/addon-essentials": "8.1.11",
|
||||
"@storybook/addon-interactions": "8.1.11",
|
||||
"@storybook/addon-links": "8.1.11",
|
||||
"@storybook/addon-mdx-gfm": "8.1.11",
|
||||
"@storybook/addon-themes": "8.1.11",
|
||||
"@storybook/preview-api": "8.1.11",
|
||||
"@storybook/react": "8.1.11",
|
||||
"@storybook/react-vite": "8.1.11",
|
||||
"@storybook/test": "8.1.11",
|
||||
"@swc/core": "1.3.38",
|
||||
"@swc/jest": "0.2.24",
|
||||
"@testing-library/jest-dom": "6.4.6",
|
||||
"@testing-library/react": "14.1.0",
|
||||
"@testing-library/react-hooks": "8.0.1",
|
||||
"@testing-library/user-event": "14.5.1",
|
||||
"@types/chroma-js": "2.4.0",
|
||||
"@types/color-convert": "2.0.0",
|
||||
"@types/express": "4.17.17",
|
||||
"@types/file-saver": "2.0.7",
|
||||
"@types/jest": "29.5.2",
|
||||
"@types/lodash": "4.17.6",
|
||||
"@types/node": "18.19.0",
|
||||
"@types/react": "18.2.6",
|
||||
"@types/react-color": "3.0.6",
|
||||
"@types/react-date-range": "1.4.4",
|
||||
"@types/react-dom": "18.2.4",
|
||||
"@types/react-syntax-highlighter": "15.5.13",
|
||||
"@types/react-virtualized-auto-sizer": "1.0.4",
|
||||
"@types/react-window": "1.8.8",
|
||||
"@types/semver": "7.5.8",
|
||||
"@types/ssh2": "1.15.0",
|
||||
"@types/ua-parser-js": "0.7.36",
|
||||
"@types/uuid": "9.0.2",
|
||||
"@vitejs/plugin-react": "4.3.1",
|
||||
"chromatic": "11.3.0",
|
||||
"eventsourcemock": "2.0.0",
|
||||
"express": "4.19.2",
|
||||
"jest": "29.6.2",
|
||||
"jest-canvas-mock": "2.5.2",
|
||||
"jest-environment-jsdom": "29.5.0",
|
||||
"jest-location-mock": "2.0.0",
|
||||
"jest-websocket-mock": "2.5.0",
|
||||
"jest_workaround": "0.1.14",
|
||||
"msw": "2.2.3",
|
||||
"prettier": "3.3.3",
|
||||
"protobufjs": "7.2.5",
|
||||
"rxjs": "7.8.1",
|
||||
"ssh2": "1.15.0",
|
||||
"storybook": "8.1.11",
|
||||
"storybook-addon-remix-react-router": "3.0.0",
|
||||
"storybook-react-context": "0.6.0",
|
||||
"ts-node": "10.9.1",
|
||||
"ts-proto": "1.164.0",
|
||||
"ts-prune": "0.10.3",
|
||||
"typescript": "5.2.2",
|
||||
"vite": "5.3.3",
|
||||
"vite-plugin-checker": "0.7.1",
|
||||
"vite-plugin-turbosnap": "1.0.2"
|
||||
},
|
||||
"browserslist": ["chrome 110", "firefox 111", "safari 16.0"],
|
||||
"resolutions": {
|
||||
"optionator": "0.9.3",
|
||||
"semver": "7.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"npm": ">=9.0.0 <10.0.0",
|
||||
"node": ">=18.0.0 <21.0.0"
|
||||
}
|
||||
}
|
||||
|
1633
site/pnpm-lock.yaml
generated
1633
site/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
1
site/src/@types/mui.d.ts
vendored
1
site/src/@types/mui.d.ts
vendored
@ -1,3 +1,4 @@
|
||||
// biome-ignore lint/nursery/noRestrictedImports: base theme types
|
||||
import type { PaletteColor, PaletteColorOptions } from "@mui/material/styles";
|
||||
|
||||
declare module "@mui/material/styles" {
|
||||
|
4
site/src/@types/storybook.d.ts
vendored
4
site/src/@types/storybook.d.ts
vendored
@ -1,13 +1,13 @@
|
||||
import * as _storybook_types from "@storybook/react";
|
||||
import type { QueryKey } from "react-query";
|
||||
import type {
|
||||
DeploymentValues,
|
||||
Experiments,
|
||||
FeatureName,
|
||||
SerpentOption,
|
||||
User,
|
||||
DeploymentValues,
|
||||
} from "api/typesGenerated";
|
||||
import type { Permissions } from "contexts/auth/permissions";
|
||||
import type { QueryKey } from "react-query";
|
||||
|
||||
declare module "@storybook/react" {
|
||||
type WebSocketEvent =
|
||||
|
@ -12,8 +12,8 @@ import { QueryClient, QueryClientProvider } from "react-query";
|
||||
import { RouterProvider } from "react-router-dom";
|
||||
import { ErrorBoundary } from "./components/ErrorBoundary/ErrorBoundary";
|
||||
import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar";
|
||||
import { AuthProvider } from "./contexts/auth/AuthProvider";
|
||||
import { ThemeProvider } from "./contexts/ThemeProvider";
|
||||
import { AuthProvider } from "./contexts/auth/AuthProvider";
|
||||
import { router } from "./router";
|
||||
|
||||
const defaultQueryClient = new QueryClient({
|
||||
|
@ -17,4 +17,4 @@ const monaco = {
|
||||
|
||||
module.exports = monaco;
|
||||
|
||||
export {};
|
||||
export type {};
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
MockWorkspaceBuild,
|
||||
MockWorkspaceBuildParameter1,
|
||||
} from "testHelpers/entities";
|
||||
import { API, getURLWithSearchParams, MissingBuildParameters } from "./api";
|
||||
import { API, MissingBuildParameters, getURLWithSearchParams } from "./api";
|
||||
import type * as TypesGen from "./typesGenerated";
|
||||
|
||||
const axiosInstance = API.getAxiosInstance();
|
||||
@ -146,7 +146,7 @@ describe("api.ts", () => {
|
||||
"/api/v2/workspaces?q=owner%3Ame",
|
||||
],
|
||||
])(
|
||||
`Workspaces - getURLWithSearchParams(%p, %p) returns %p`,
|
||||
"Workspaces - getURLWithSearchParams(%p, %p) returns %p",
|
||||
(basePath, filter, expected) => {
|
||||
expect(getURLWithSearchParams(basePath, filter)).toBe(expected);
|
||||
},
|
||||
@ -163,7 +163,7 @@ describe("api.ts", () => {
|
||||
],
|
||||
["/api/v2/users", { q: "" }, "/api/v2/users"],
|
||||
])(
|
||||
`Users - getURLWithSearchParams(%p, %p) returns %p`,
|
||||
"Users - getURLWithSearchParams(%p, %p) returns %p",
|
||||
(basePath, filter, expected) => {
|
||||
expect(getURLWithSearchParams(basePath, filter)).toBe(expected);
|
||||
},
|
||||
|
@ -34,7 +34,7 @@ const getMissingParameters = (
|
||||
const missingParameters: TypesGen.TemplateVersionParameter[] = [];
|
||||
const requiredParameters: TypesGen.TemplateVersionParameter[] = [];
|
||||
|
||||
templateParameters.forEach((p) => {
|
||||
for (const p of templateParameters) {
|
||||
// It is mutable and required. Mutable values can be changed after so we
|
||||
// don't need to ask them if they are not required.
|
||||
const isMutableAndRequired = p.mutable && p.required;
|
||||
@ -44,7 +44,7 @@ const getMissingParameters = (
|
||||
if (isMutableAndRequired || isImmutable) {
|
||||
requiredParameters.push(p);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
for (const parameter of requiredParameters) {
|
||||
// Check if there is a new value
|
||||
@ -68,9 +68,9 @@ const getMissingParameters = (
|
||||
}
|
||||
|
||||
// Check if parameter "options" changed and we can't use old build parameters.
|
||||
templateParameters.forEach((templateParameter) => {
|
||||
for (const templateParameter of templateParameters) {
|
||||
if (templateParameter.options.length === 0) {
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if there is a new value
|
||||
@ -86,7 +86,7 @@ const getMissingParameters = (
|
||||
}
|
||||
|
||||
if (!buildParameter) {
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
|
||||
const matchingOption = templateParameter.options.find(
|
||||
@ -95,7 +95,8 @@ const getMissingParameters = (
|
||||
if (!matchingOption) {
|
||||
missingParameters.push(templateParameter);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return missingParameters;
|
||||
};
|
||||
|
||||
@ -132,13 +133,11 @@ export const getURLWithSearchParams = (
|
||||
}
|
||||
|
||||
const searchParams = new URLSearchParams();
|
||||
const keys = Object.keys(options) as (keyof SearchParamOptions)[];
|
||||
keys.forEach((key) => {
|
||||
const value = options[key];
|
||||
for (const [key, value] of Object.entries(options)) {
|
||||
if (value !== undefined && value !== "") {
|
||||
searchParams.append(key, value.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const searchString = searchParams.toString();
|
||||
return searchString ? `${basePath}?${searchString}` : basePath;
|
||||
@ -241,7 +240,7 @@ export const watchWorkspaceAgentLogs = (
|
||||
});
|
||||
|
||||
socket.addEventListener("close", () => {
|
||||
onDone && onDone();
|
||||
onDone?.();
|
||||
});
|
||||
|
||||
return socket;
|
||||
@ -281,13 +280,13 @@ export const watchBuildLogsByBuildId = (
|
||||
);
|
||||
|
||||
socket.addEventListener("error", () => {
|
||||
onError && onError(new Error("Connection for logs failed."));
|
||||
onError?.(new Error("Connection for logs failed."));
|
||||
socket.close();
|
||||
});
|
||||
|
||||
socket.addEventListener("close", () => {
|
||||
// When the socket closes, logs have finished streaming!
|
||||
onDone && onDone();
|
||||
onDone?.();
|
||||
});
|
||||
|
||||
return socket;
|
||||
@ -317,7 +316,7 @@ function normalizeGetTemplatesOptions(
|
||||
|
||||
const params: Record<string, string> = {};
|
||||
if (options.deprecated !== undefined) {
|
||||
params["deprecated"] = String(options.deprecated);
|
||||
params.deprecated = String(options.deprecated);
|
||||
}
|
||||
return params;
|
||||
}
|
||||
@ -464,7 +463,7 @@ class ApiMethods {
|
||||
params: TypesGen.AuthorizationRequest,
|
||||
): Promise<TypesGen.AuthorizationResponse> => {
|
||||
const response = await this.axios.post<TypesGen.AuthorizationResponse>(
|
||||
`/api/v2/authcheck`,
|
||||
"/api/v2/authcheck",
|
||||
params,
|
||||
);
|
||||
|
||||
@ -483,7 +482,7 @@ class ApiMethods {
|
||||
params: TypesGen.TokensFilter,
|
||||
): Promise<TypesGen.APIKeyWithOwner[]> => {
|
||||
const response = await this.axios.get<TypesGen.APIKeyWithOwner[]>(
|
||||
`/api/v2/users/me/keys/tokens`,
|
||||
"/api/v2/users/me/keys/tokens",
|
||||
{ params },
|
||||
);
|
||||
|
||||
@ -498,7 +497,7 @@ class ApiMethods {
|
||||
params: TypesGen.CreateTokenRequest,
|
||||
): Promise<TypesGen.GenerateAPIKeyResponse> => {
|
||||
const response = await this.axios.post(
|
||||
`/api/v2/users/me/keys/tokens`,
|
||||
"/api/v2/users/me/keys/tokens",
|
||||
params,
|
||||
);
|
||||
|
||||
@ -706,7 +705,7 @@ class ApiMethods {
|
||||
): Promise<TypesGen.Template[]> => {
|
||||
const params = normalizeGetTemplatesOptions(options);
|
||||
const response = await this.axios.get<TypesGen.Template[]>(
|
||||
`/api/v2/templates`,
|
||||
"/api/v2/templates",
|
||||
{ params },
|
||||
);
|
||||
|
||||
@ -993,8 +992,8 @@ class ApiMethods {
|
||||
let latestJobInfo: TypesGen.ProvisionerJob | undefined = undefined;
|
||||
|
||||
while (
|
||||
!["succeeded", "canceled"].some(
|
||||
(status) => latestJobInfo?.status.includes(status),
|
||||
!["succeeded", "canceled"].some((status) =>
|
||||
latestJobInfo?.status.includes(status),
|
||||
)
|
||||
) {
|
||||
const { job } = await this.getWorkspaceBuildByNumber(
|
||||
@ -1276,7 +1275,7 @@ class ApiMethods {
|
||||
createFirstUser = async (
|
||||
req: TypesGen.CreateFirstUserRequest,
|
||||
): Promise<TypesGen.CreateFirstUserResponse> => {
|
||||
const response = await this.axios.post(`/api/v2/users/first`, req);
|
||||
const response = await this.axios.post("/api/v2/users/first", req);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@ -1288,8 +1287,9 @@ class ApiMethods {
|
||||
};
|
||||
|
||||
getRoles = async (): Promise<Array<TypesGen.AssignableRoles>> => {
|
||||
const response =
|
||||
await this.axios.get<TypesGen.AssignableRoles[]>(`/api/v2/users/roles`);
|
||||
const response = await this.axios.get<TypesGen.AssignableRoles[]>(
|
||||
"/api/v2/users/roles",
|
||||
);
|
||||
|
||||
return response.data;
|
||||
};
|
||||
@ -1449,7 +1449,7 @@ class ApiMethods {
|
||||
|
||||
getUserExternalAuthProviders =
|
||||
async (): Promise<TypesGen.ListUserExternalAuthResponse> => {
|
||||
const resp = await this.axios.get(`/api/v2/external-auth`);
|
||||
const resp = await this.axios.get("/api/v2/external-auth");
|
||||
return resp.data;
|
||||
};
|
||||
|
||||
@ -1480,7 +1480,7 @@ class ApiMethods {
|
||||
data: TypesGen.PostOAuth2ProviderAppRequest,
|
||||
): Promise<TypesGen.OAuth2ProviderApp> => {
|
||||
const response = await this.axios.post(
|
||||
`/api/v2/oauth2-provider/apps`,
|
||||
"/api/v2/oauth2-provider/apps",
|
||||
data,
|
||||
);
|
||||
return response.data;
|
||||
@ -1599,7 +1599,7 @@ class ApiMethods {
|
||||
};
|
||||
|
||||
getApplicationsHost = async (): Promise<TypesGen.AppHostResponse> => {
|
||||
const response = await this.axios.get(`/api/v2/applications/host`);
|
||||
const response = await this.axios.get("/api/v2/applications/host");
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@ -1722,22 +1722,22 @@ class ApiMethods {
|
||||
|
||||
// getDeploymentSSHConfig is used by the VSCode-Extension.
|
||||
getDeploymentSSHConfig = async (): Promise<TypesGen.SSHConfigResponse> => {
|
||||
const response = await this.axios.get(`/api/v2/deployment/ssh`);
|
||||
const response = await this.axios.get("/api/v2/deployment/ssh");
|
||||
return response.data;
|
||||
};
|
||||
|
||||
getDeploymentConfig = async (): Promise<DeploymentConfig> => {
|
||||
const response = await this.axios.get(`/api/v2/deployment/config`);
|
||||
const response = await this.axios.get("/api/v2/deployment/config");
|
||||
return response.data;
|
||||
};
|
||||
|
||||
getDeploymentStats = async (): Promise<TypesGen.DeploymentStats> => {
|
||||
const response = await this.axios.get(`/api/v2/deployment/stats`);
|
||||
const response = await this.axios.get("/api/v2/deployment/stats");
|
||||
return response.data;
|
||||
};
|
||||
|
||||
getReplicas = async (): Promise<TypesGen.Replica[]> => {
|
||||
const response = await this.axios.get(`/api/v2/replicas`);
|
||||
const response = await this.axios.get("/api/v2/replicas");
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@ -1755,7 +1755,7 @@ class ApiMethods {
|
||||
> => {
|
||||
const response =
|
||||
await this.axios.get<TypesGen.RegionsResponse<TypesGen.Region>>(
|
||||
`/api/v2/regions`,
|
||||
"/api/v2/regions",
|
||||
);
|
||||
|
||||
return response.data;
|
||||
@ -1766,7 +1766,7 @@ class ApiMethods {
|
||||
> => {
|
||||
const response = await this.axios.get<
|
||||
TypesGen.RegionsResponse<TypesGen.WorkspaceProxy>
|
||||
>(`/api/v2/workspaceproxies`);
|
||||
>("/api/v2/workspaceproxies");
|
||||
|
||||
return response.data;
|
||||
};
|
||||
@ -1774,13 +1774,13 @@ class ApiMethods {
|
||||
createWorkspaceProxy = async (
|
||||
b: TypesGen.CreateWorkspaceProxyRequest,
|
||||
): Promise<TypesGen.UpdateWorkspaceProxyResponse> => {
|
||||
const response = await this.axios.post(`/api/v2/workspaceproxies`, b);
|
||||
const response = await this.axios.post("/api/v2/workspaceproxies", b);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
getAppearance = async (): Promise<TypesGen.AppearanceConfig> => {
|
||||
try {
|
||||
const response = await this.axios.get(`/api/v2/appearance`);
|
||||
const response = await this.axios.get("/api/v2/appearance");
|
||||
return response.data || {};
|
||||
} catch (ex) {
|
||||
if (isAxiosError(ex) && ex.response?.status === 404) {
|
||||
@ -1801,7 +1801,7 @@ class ApiMethods {
|
||||
updateAppearance = async (
|
||||
b: TypesGen.AppearanceConfig,
|
||||
): Promise<TypesGen.AppearanceConfig> => {
|
||||
const response = await this.axios.put(`/api/v2/appearance`, b);
|
||||
const response = await this.axios.put("/api/v2/appearance", b);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@ -1809,7 +1809,7 @@ class ApiMethods {
|
||||
* @param organization Can be the organization's ID or name
|
||||
*/
|
||||
getTemplateExamples = async (): Promise<TypesGen.TemplateExample[]> => {
|
||||
const response = await this.axios.get(`/api/v2/templates/examples`);
|
||||
const response = await this.axios.get("/api/v2/templates/examples");
|
||||
|
||||
return response.data;
|
||||
};
|
||||
@ -1849,14 +1849,14 @@ class ApiMethods {
|
||||
};
|
||||
|
||||
getLicenses = async (): Promise<GetLicensesResponse[]> => {
|
||||
const response = await this.axios.get(`/api/v2/licenses`);
|
||||
const response = await this.axios.get("/api/v2/licenses");
|
||||
return response.data;
|
||||
};
|
||||
|
||||
createLicense = async (
|
||||
data: TypesGen.AddLicenseRequest,
|
||||
): Promise<TypesGen.AddLicenseRequest> => {
|
||||
const response = await this.axios.post(`/api/v2/licenses`, data);
|
||||
const response = await this.axios.post("/api/v2/licenses", data);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@ -2005,7 +2005,7 @@ class ApiMethods {
|
||||
return response.data;
|
||||
};
|
||||
|
||||
getHealth = async (force: boolean = false) => {
|
||||
getHealth = async (force = false) => {
|
||||
const params = new URLSearchParams({ force: force.toString() });
|
||||
const response = await this.axios.get<TypesGen.HealthcheckReport>(
|
||||
`/api/v2/debug/health?${params}`,
|
||||
@ -2015,7 +2015,7 @@ class ApiMethods {
|
||||
|
||||
getHealthSettings = async (): Promise<TypesGen.HealthSettings> => {
|
||||
const res = await this.axios.get<TypesGen.HealthSettings>(
|
||||
`/api/v2/debug/health/settings`,
|
||||
"/api/v2/debug/health/settings",
|
||||
);
|
||||
|
||||
return res.data;
|
||||
@ -2023,7 +2023,7 @@ class ApiMethods {
|
||||
|
||||
updateHealthSettings = async (data: TypesGen.UpdateHealthSettings) => {
|
||||
const response = await this.axios.put<TypesGen.HealthSettings>(
|
||||
`/api/v2/debug/health/settings`,
|
||||
"/api/v2/debug/health/settings",
|
||||
data,
|
||||
);
|
||||
|
||||
@ -2093,14 +2093,14 @@ class ApiMethods {
|
||||
|
||||
getSystemNotificationTemplates = async () => {
|
||||
const res = await this.axios.get<TypesGen.NotificationTemplate[]>(
|
||||
`/api/v2/notifications/templates/system`,
|
||||
"/api/v2/notifications/templates/system",
|
||||
);
|
||||
return res.data;
|
||||
};
|
||||
|
||||
getNotificationDispatchMethods = async () => {
|
||||
const res = await this.axios.get<TypesGen.NotificationMethodsResponse>(
|
||||
`/api/v2/notifications/dispatch-methods`,
|
||||
"/api/v2/notifications/dispatch-methods",
|
||||
);
|
||||
return res.data;
|
||||
};
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { mockApiError } from "testHelpers/entities";
|
||||
import {
|
||||
getErrorMessage,
|
||||
getValidationErrorMessage,
|
||||
isApiError,
|
||||
mapApiErrorToFieldErrors,
|
||||
getErrorMessage,
|
||||
} from "./errors";
|
||||
|
||||
describe("isApiError", () => {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import type { QueryClient } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type { AppearanceConfig } from "api/typesGenerated";
|
||||
import type { MetadataState } from "hooks/useEmbeddedMetadata";
|
||||
import type { QueryClient } from "react-query";
|
||||
import { cachedQuery } from "./util";
|
||||
|
||||
export const appearanceConfigKey = ["appearance"] as const;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type { HealthSettings, UpdateHealthSettings } from "api/typesGenerated";
|
||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||
|
||||
export const HEALTH_QUERY_KEY = ["health"];
|
||||
export const HEALTH_QUERY_SETTINGS_KEY = ["health", "settings"];
|
||||
|
@ -1,7 +1,7 @@
|
||||
import type { QueryClient } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type { Entitlements } from "api/typesGenerated";
|
||||
import type { MetadataState } from "hooks/useEmbeddedMetadata";
|
||||
import type { QueryClient } from "react-query";
|
||||
import { cachedQuery } from "./util";
|
||||
|
||||
const entitlementsQueryKey = ["entitlements"] as const;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type { ExternalAuth } from "api/typesGenerated";
|
||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||
|
||||
// Returns all configured external auths for a given user.
|
||||
export const externalAuths = () => {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import type { QueryClient, UseQueryOptions } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
CreateGroupRequest,
|
||||
Group,
|
||||
PatchGroupRequest,
|
||||
} from "api/typesGenerated";
|
||||
import type { QueryClient, UseQueryOptions } from "react-query";
|
||||
|
||||
type GroupSortOrder = "asc" | "desc";
|
||||
|
||||
@ -120,7 +120,7 @@ export const patchGroup = (queryClient: QueryClient) => {
|
||||
export const deleteGroup = (queryClient: QueryClient) => {
|
||||
return {
|
||||
mutationFn: API.deleteGroup,
|
||||
onSuccess: async (_: void, groupId: string) =>
|
||||
onSuccess: async (_: unknown, groupId: string) =>
|
||||
invalidateGroup(queryClient, "default", groupId),
|
||||
};
|
||||
};
|
||||
@ -159,15 +159,12 @@ export function sortGroupsByName(
|
||||
) {
|
||||
return [...groups].sort((g1, g2) => {
|
||||
const key = g1.display_name && g2.display_name ? "display_name" : "name";
|
||||
const direction = order === "asc" ? 1 : -1;
|
||||
|
||||
if (g1[key] === g2[key]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (order === "asc") {
|
||||
return g1[key] < g2[key] ? -1 : 1;
|
||||
} else {
|
||||
return g1[key] < g2[key] ? 1 : -1;
|
||||
}
|
||||
return (g1[key] < g2[key] ? -1 : 1) * direction;
|
||||
});
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { type InsightsParams, type InsightsTemplateParams, API } from "api/api";
|
||||
import { API, type InsightsParams, type InsightsTemplateParams } from "api/api";
|
||||
|
||||
export const insightsTemplate = (params: InsightsTemplateParams) => {
|
||||
return {
|
||||
|
@ -1,4 +1,3 @@
|
||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
NotificationPreference,
|
||||
@ -6,6 +5,7 @@ import type {
|
||||
UpdateNotificationTemplateMethod,
|
||||
UpdateUserNotificationPreferences,
|
||||
} from "api/typesGenerated";
|
||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||
|
||||
export const userNotificationPreferencesKey = (userId: string) => [
|
||||
"users",
|
||||
@ -98,7 +98,7 @@ export const notificationDispatchMethodsKey = [
|
||||
|
||||
export const notificationDispatchMethods = () => {
|
||||
return {
|
||||
staleTime: Infinity,
|
||||
staleTime: Number.POSITIVE_INFINITY,
|
||||
queryKey: notificationDispatchMethodsKey,
|
||||
queryFn: () => API.getNotificationDispatchMethods(),
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { QueryClient } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type * as TypesGen from "api/typesGenerated";
|
||||
import type { QueryClient } from "react-query";
|
||||
|
||||
const appsKey = ["oauth2-provider", "apps"];
|
||||
const userAppsKey = (userId: string) => appsKey.concat(userId);
|
||||
@ -85,7 +85,7 @@ export const deleteAppSecret = (queryClient: QueryClient) => {
|
||||
return {
|
||||
mutationFn: ({ appId, secretId }: { appId: string; secretId: string }) =>
|
||||
API.deleteOAuth2ProviderAppSecret(appId, secretId),
|
||||
onSuccess: async (_: void, { appId }: { appId: string }) => {
|
||||
onSuccess: async (_: unknown, { appId }: { appId: string }) => {
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: appSecretsKey(appId),
|
||||
});
|
||||
|
@ -1,10 +1,10 @@
|
||||
import type { QueryClient } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
AuthorizationResponse,
|
||||
CreateOrganizationRequest,
|
||||
UpdateOrganizationRequest,
|
||||
} from "api/typesGenerated";
|
||||
import type { QueryClient } from "react-query";
|
||||
import { meKey } from "./users";
|
||||
|
||||
export const createOrganization = (queryClient: QueryClient) => {
|
||||
@ -221,14 +221,12 @@ export const organizationsPermissions = (
|
||||
|
||||
// The endpoint takes a flat array, so to avoid collisions prepend each
|
||||
// check with the org ID (the key can be anything we want).
|
||||
const prefixedChecks = organizationIds
|
||||
.map((orgId) =>
|
||||
Object.entries(checks(orgId)).map(([key, val]) => [
|
||||
`${orgId}.${key}`,
|
||||
val,
|
||||
]),
|
||||
)
|
||||
.flat();
|
||||
const prefixedChecks = organizationIds.flatMap((orgId) =>
|
||||
Object.entries(checks(orgId)).map(([key, val]) => [
|
||||
`${orgId}.${key}`,
|
||||
val,
|
||||
]),
|
||||
);
|
||||
|
||||
const response = await API.checkAuthorization({
|
||||
checks: Object.fromEntries(prefixedChecks),
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { QueryClient } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type { Role } from "api/typesGenerated";
|
||||
import type { QueryClient } from "react-query";
|
||||
|
||||
const getRoleQueryKey = (organizationId: string, roleName: string) => [
|
||||
"organization",
|
||||
@ -58,7 +58,7 @@ export const deleteOrganizationRole = (
|
||||
return {
|
||||
mutationFn: (roleName: string) =>
|
||||
API.deleteOrganizationRole(organization, roleName),
|
||||
onSuccess: async (_: void, roleName: string) =>
|
||||
onSuccess: async (_: unknown, roleName: string) =>
|
||||
await queryClient.invalidateQueries(
|
||||
getRoleQueryKey(organization, roleName),
|
||||
),
|
||||
|
@ -1,9 +1,9 @@
|
||||
import type { QueryClient, QueryOptions } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
UpdateUserQuietHoursScheduleRequest,
|
||||
UserQuietHoursScheduleResponse,
|
||||
} from "api/typesGenerated";
|
||||
import type { QueryClient, QueryOptions } from "react-query";
|
||||
|
||||
export const userQuietHoursScheduleKey = (userId: string) => [
|
||||
"settings",
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { QueryClient } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type { GitSSHKey } from "api/typesGenerated";
|
||||
import type { QueryClient } from "react-query";
|
||||
|
||||
const getUserSSHKeyQueryKey = (userId: string) => [userId, "sshKey"];
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
import type { MutationOptions, QueryClient, QueryOptions } from "react-query";
|
||||
import { API, type GetTemplatesQuery, type GetTemplatesOptions } from "api/api";
|
||||
import { API, type GetTemplatesOptions, type GetTemplatesQuery } from "api/api";
|
||||
import type {
|
||||
CreateTemplateRequest,
|
||||
CreateTemplateVersionRequest,
|
||||
ProvisionerJob,
|
||||
ProvisionerJobStatus,
|
||||
UsersRequest,
|
||||
Template,
|
||||
TemplateRole,
|
||||
TemplateVersion,
|
||||
UsersRequest,
|
||||
} from "api/typesGenerated";
|
||||
import type { MutationOptions, QueryClient, QueryOptions } from "react-query";
|
||||
import { delay } from "utils/delay";
|
||||
import { getTemplateVersionFiles } from "utils/templateVersion";
|
||||
|
||||
|
@ -1,24 +1,24 @@
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
AuthorizationRequest,
|
||||
GenerateAPIKeyResponse,
|
||||
GetUsersResponse,
|
||||
UpdateUserAppearanceSettingsRequest,
|
||||
UpdateUserPasswordRequest,
|
||||
UpdateUserProfileRequest,
|
||||
User,
|
||||
UsersRequest,
|
||||
} from "api/typesGenerated";
|
||||
import {
|
||||
type MetadataState,
|
||||
defaultMetadataManager,
|
||||
} from "hooks/useEmbeddedMetadata";
|
||||
import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery";
|
||||
import type {
|
||||
QueryClient,
|
||||
UseMutationOptions,
|
||||
UseQueryOptions,
|
||||
} from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
AuthorizationRequest,
|
||||
GetUsersResponse,
|
||||
UpdateUserPasswordRequest,
|
||||
UpdateUserProfileRequest,
|
||||
UpdateUserAppearanceSettingsRequest,
|
||||
UsersRequest,
|
||||
User,
|
||||
GenerateAPIKeyResponse,
|
||||
} from "api/typesGenerated";
|
||||
import {
|
||||
defaultMetadataManager,
|
||||
type MetadataState,
|
||||
} from "hooks/useEmbeddedMetadata";
|
||||
import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery";
|
||||
import { prepareQuery } from "utils/filters";
|
||||
import { getAuthorizationKey } from "./authCheck";
|
||||
import { cachedQuery } from "./util";
|
||||
|
@ -1,9 +1,9 @@
|
||||
import type { UseQueryOptions, QueryKey } from "react-query";
|
||||
import type { MetadataState, MetadataValue } from "hooks/useEmbeddedMetadata";
|
||||
import type { QueryKey, UseQueryOptions } from "react-query";
|
||||
|
||||
export const disabledRefetchOptions = {
|
||||
cacheTime: Infinity,
|
||||
staleTime: Infinity,
|
||||
cacheTime: Number.POSITIVE_INFINITY,
|
||||
staleTime: Number.POSITIVE_INFINITY,
|
||||
refetchOnMount: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnWindowFocus: false,
|
||||
|
@ -1,10 +1,10 @@
|
||||
import type { QueryOptions, UseInfiniteQueryOptions } from "react-query";
|
||||
import { API } from "api/api";
|
||||
import type {
|
||||
WorkspaceBuild,
|
||||
WorkspaceBuildParameter,
|
||||
WorkspaceBuildsRequest,
|
||||
} from "api/typesGenerated";
|
||||
import type { QueryOptions, UseInfiniteQueryOptions } from "react-query";
|
||||
|
||||
export function workspaceBuildParametersKey(workspaceBuildId: string) {
|
||||
return ["workspaceBuilds", workspaceBuildId, "parameters"] as const;
|
||||
|
@ -1,10 +1,4 @@
|
||||
import type { Dayjs } from "dayjs";
|
||||
import type {
|
||||
QueryClient,
|
||||
QueryOptions,
|
||||
UseMutationOptions,
|
||||
} from "react-query";
|
||||
import { type DeleteWorkspaceOptions, API } from "api/api";
|
||||
import { API, type DeleteWorkspaceOptions } from "api/api";
|
||||
import { DetailedError, isApiValidationError } from "api/errors";
|
||||
import type {
|
||||
CreateWorkspaceRequest,
|
||||
@ -16,7 +10,13 @@ import type {
|
||||
WorkspacesRequest,
|
||||
WorkspacesResponse,
|
||||
} from "api/typesGenerated";
|
||||
import type { Dayjs } from "dayjs";
|
||||
import type { ConnectionStatus } from "pages/TerminalPage/types";
|
||||
import type {
|
||||
QueryClient,
|
||||
QueryOptions,
|
||||
UseMutationOptions,
|
||||
} from "react-query";
|
||||
import { disabledRefetchOptions } from "./util";
|
||||
import { workspaceBuildsKey } from "./workspaceBuilds";
|
||||
|
||||
@ -88,7 +88,7 @@ export const autoCreateWorkspace = (queryClient: QueryClient) => {
|
||||
}
|
||||
}
|
||||
|
||||
let templateVersionParameters;
|
||||
let templateVersionParameters: Partial<CreateWorkspaceRequest>;
|
||||
|
||||
if (templateVersionId) {
|
||||
templateVersionParameters = { template_version_id: templateVersionId };
|
||||
@ -307,9 +307,8 @@ export const toggleFavorite = (
|
||||
mutationFn: () => {
|
||||
if (workspace.favorite) {
|
||||
return API.deleteFavoriteWorkspace(workspace.id);
|
||||
} else {
|
||||
return API.putFavoriteWorkspace(workspace.id);
|
||||
}
|
||||
return API.putFavoriteWorkspace(workspace.id);
|
||||
},
|
||||
onSuccess: async () => {
|
||||
queryClient.setQueryData(
|
||||
|
2910
site/src/api/typesGenerated.ts
generated
2910
site/src/api/typesGenerated.ts
generated
File diff suppressed because it is too large
Load Diff
@ -57,7 +57,7 @@ function getAccessibleLabel(
|
||||
}
|
||||
|
||||
function initializeText(text: string): string {
|
||||
return text.trim().toUpperCase().replaceAll(/\B/g, ".") + ".";
|
||||
return `${text.trim().toUpperCase().replaceAll(/\B/g, ".")}.`;
|
||||
}
|
||||
|
||||
function flattenPronunciation(text: string): string {
|
||||
|
@ -4,27 +4,27 @@ import {
|
||||
CategoryScale,
|
||||
Chart as ChartJS,
|
||||
type ChartOptions,
|
||||
defaults,
|
||||
Filler,
|
||||
Legend,
|
||||
LinearScale,
|
||||
LineElement,
|
||||
LinearScale,
|
||||
PointElement,
|
||||
TimeScale,
|
||||
Title,
|
||||
Tooltip,
|
||||
PointElement,
|
||||
defaults,
|
||||
} from "chart.js";
|
||||
import annotationPlugin from "chartjs-plugin-annotation";
|
||||
import {
|
||||
HelpTooltip,
|
||||
HelpTooltipContent,
|
||||
HelpTooltipText,
|
||||
HelpTooltipTitle,
|
||||
HelpTooltipTrigger,
|
||||
} from "components/HelpTooltip/HelpTooltip";
|
||||
import dayjs from "dayjs";
|
||||
import type { FC } from "react";
|
||||
import { Line } from "react-chartjs-2";
|
||||
import {
|
||||
HelpTooltip,
|
||||
HelpTooltipTitle,
|
||||
HelpTooltipText,
|
||||
HelpTooltipContent,
|
||||
HelpTooltipTrigger,
|
||||
} from "components/HelpTooltip/HelpTooltip";
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
@ -1,14 +1,14 @@
|
||||
// eslint-disable-next-line no-restricted-imports -- It is the base component
|
||||
import MuiAlert, {
|
||||
type AlertProps as MuiAlertProps,
|
||||
// biome-ignore lint/nursery/noRestrictedImports: Used as base component
|
||||
} from "@mui/material/Alert";
|
||||
import Button from "@mui/material/Button";
|
||||
import Collapse from "@mui/material/Collapse";
|
||||
import {
|
||||
useState,
|
||||
type FC,
|
||||
type ReactNode,
|
||||
type PropsWithChildren,
|
||||
type ReactNode,
|
||||
useState,
|
||||
} from "react";
|
||||
|
||||
export type AlertProps = MuiAlertProps & {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import AlertTitle from "@mui/material/AlertTitle";
|
||||
import { getErrorDetail, getErrorMessage } from "api/errors";
|
||||
import type { FC } from "react";
|
||||
import { getErrorMessage, getErrorDetail } from "api/errors";
|
||||
import { Alert, AlertDetail, type AlertProps } from "./Alert";
|
||||
|
||||
export const ErrorAlert: FC<
|
||||
|
@ -1,8 +1,7 @@
|
||||
import { css, type Interpolation, type Theme, useTheme } from "@emotion/react";
|
||||
// This is the only place MuiAvatar can be used
|
||||
// eslint-disable-next-line no-restricted-imports -- Read above
|
||||
import { type Interpolation, type Theme, css, useTheme } from "@emotion/react";
|
||||
import MuiAvatar, {
|
||||
type AvatarProps as MuiAvatarProps,
|
||||
// biome-ignore lint/nursery/noRestrictedImports: Used as base component
|
||||
} from "@mui/material/Avatar";
|
||||
import { visuallyHidden } from "@mui/utils";
|
||||
import { type FC, useId } from "react";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { type CSSObject, useTheme } from "@emotion/react";
|
||||
import type { FC, ReactNode } from "react";
|
||||
import { Avatar } from "components/Avatar/Avatar";
|
||||
import type { FC, ReactNode } from "react";
|
||||
|
||||
type AvatarCardProps = {
|
||||
header: string;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { useTheme } from "@emotion/react";
|
||||
import type { FC, ReactNode } from "react";
|
||||
import { Avatar } from "components/Avatar/Avatar";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
import type { FC, ReactNode } from "react";
|
||||
|
||||
export interface AvatarDataProps {
|
||||
title: ReactNode;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Skeleton from "@mui/material/Skeleton";
|
||||
import type { FC } from "react";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
import type { FC } from "react";
|
||||
|
||||
export const AvatarDataSkeleton: FC = () => {
|
||||
return (
|
||||
|
@ -1,16 +1,16 @@
|
||||
import type { Meta, StoryObj } from "@storybook/react";
|
||||
import {
|
||||
Badges,
|
||||
AlphaBadge,
|
||||
PreviewBadge,
|
||||
Badges,
|
||||
DisabledBadge,
|
||||
EnabledBadge,
|
||||
EntitledBadge,
|
||||
EnterpriseBadge,
|
||||
EntitledBadge,
|
||||
HealthyBadge,
|
||||
NotHealthyBadge,
|
||||
NotRegisteredBadge,
|
||||
NotReachableBadge,
|
||||
NotRegisteredBadge,
|
||||
PreviewBadge,
|
||||
} from "./Badges";
|
||||
|
||||
const meta: Meta<typeof Badges> = {
|
||||
|
@ -1,12 +1,12 @@
|
||||
import type { Interpolation, Theme } from "@emotion/react";
|
||||
import Tooltip from "@mui/material/Tooltip";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
import {
|
||||
type FC,
|
||||
forwardRef,
|
||||
type HTMLAttributes,
|
||||
type PropsWithChildren,
|
||||
forwardRef,
|
||||
} from "react";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
|
||||
const styles = {
|
||||
badge: {
|
||||
|
@ -1,11 +1,11 @@
|
||||
import { css, cx } from "@emotion/css";
|
||||
import { useTheme } from "@emotion/react";
|
||||
import Badge from "@mui/material/Badge";
|
||||
import type { FC } from "react";
|
||||
import type { WorkspaceBuild } from "api/typesGenerated";
|
||||
import { Avatar, type AvatarProps } from "components/Avatar/Avatar";
|
||||
import { BuildIcon } from "components/BuildIcon/BuildIcon";
|
||||
import { useClassName } from "hooks/useClassName";
|
||||
import type { FC } from "react";
|
||||
import { getDisplayWorkspaceBuildStatus } from "utils/workspace";
|
||||
|
||||
export interface BuildAvatarProps {
|
||||
|
@ -1,8 +1,8 @@
|
||||
import DeleteOutlined from "@mui/icons-material/DeleteOutlined";
|
||||
import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined";
|
||||
import StopOutlined from "@mui/icons-material/StopOutlined";
|
||||
import type { ComponentProps } from "react";
|
||||
import type { WorkspaceTransition } from "api/typesGenerated";
|
||||
import type { ComponentProps } from "react";
|
||||
|
||||
type SVGIcon = typeof PlayArrowOutlined;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { css, type Interpolation, type Theme } from "@emotion/react";
|
||||
import { type Interpolation, type Theme, css } from "@emotion/react";
|
||||
import Check from "@mui/icons-material/Check";
|
||||
import IconButton from "@mui/material/Button";
|
||||
import Tooltip from "@mui/material/Tooltip";
|
||||
import { forwardRef, type ReactNode } from "react";
|
||||
import { useClipboard } from "hooks/useClipboard";
|
||||
import { type ReactNode, forwardRef } from "react";
|
||||
import { FileCopyIcon } from "../Icons/FileCopyIcon";
|
||||
|
||||
interface CopyButtonProps {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import Tooltip, { type TooltipProps } from "@mui/material/Tooltip";
|
||||
import type { FC, HTMLAttributes } from "react";
|
||||
import { useClickable } from "hooks/useClickable";
|
||||
import { useClipboard } from "hooks/useClipboard";
|
||||
import type { FC, HTMLAttributes } from "react";
|
||||
|
||||
interface CopyableValueProps extends HTMLAttributes<HTMLSpanElement> {
|
||||
value: string;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import type { Meta, StoryObj } from "@storybook/react";
|
||||
import { expect, within, userEvent } from "@storybook/test";
|
||||
import { expect, userEvent, within } from "@storybook/test";
|
||||
import { useState } from "react";
|
||||
import { DurationField } from "./DurationField";
|
||||
|
||||
|
@ -163,7 +163,7 @@ function intMask(value: string): string {
|
||||
}
|
||||
|
||||
function durationInMs(durationFieldValue: string, unit: TimeUnit): number {
|
||||
const durationInMs = parseInt(durationFieldValue, 10);
|
||||
const durationInMs = Number.parseInt(durationFieldValue, 10);
|
||||
|
||||
if (Number.isNaN(durationInMs)) {
|
||||
return 0;
|
||||
|
@ -1,15 +1,15 @@
|
||||
import { css, type Interpolation, type Theme } from "@emotion/react";
|
||||
import { type Interpolation, type Theme, css } from "@emotion/react";
|
||||
import RefreshOutlined from "@mui/icons-material/RefreshOutlined";
|
||||
import Button from "@mui/material/Button";
|
||||
import Link from "@mui/material/Link";
|
||||
import { type FC, useEffect, useState } from "react";
|
||||
import { Helmet } from "react-helmet-async";
|
||||
import type { BuildInfoResponse } from "api/typesGenerated";
|
||||
import { CopyButton } from "components/CopyButton/CopyButton";
|
||||
import { CoderIcon } from "components/Icons/CoderIcon";
|
||||
import { Loader } from "components/Loader/Loader";
|
||||
import { Margins } from "components/Margins/Margins";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
import { type FC, useEffect, useState } from "react";
|
||||
import { Helmet } from "react-helmet-async";
|
||||
import { getStaticBuildInfo } from "utils/buildInfo";
|
||||
|
||||
const fetchDynamicallyImportedModuleError =
|
||||
@ -71,8 +71,8 @@ export const RuntimeErrorState: FC<RuntimeErrorStateProps> = ({ error }) => {
|
||||
["**Version**", coderVersion ?? "-- Set version --"].join(
|
||||
"\n",
|
||||
),
|
||||
["**Path**", "`" + location.pathname + "`"].join("\n"),
|
||||
["**Error**", "```\n" + error.stack + "\n```"].join("\n"),
|
||||
["**Path**", `\`${location.pathname}\``].join("\n"),
|
||||
["**Error**", `\`\`\`\n${error.stack}\n\`\`\``].join("\n"),
|
||||
].join("\n\n"),
|
||||
)}`}
|
||||
target="_blank"
|
||||
|
@ -1,8 +1,8 @@
|
||||
import type { Interpolation, Theme } from "@emotion/react";
|
||||
import Collapse from "@mui/material/Collapse";
|
||||
import Link from "@mui/material/Link";
|
||||
import type { FC, ReactNode } from "react";
|
||||
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow";
|
||||
import type { FC, ReactNode } from "react";
|
||||
|
||||
export interface ExpanderProps {
|
||||
expanded: boolean;
|
||||
|
@ -9,9 +9,9 @@ export const ExternalImage = forwardRef<
|
||||
const theme = useTheme();
|
||||
|
||||
return (
|
||||
// biome-ignore lint/a11y/useAltText: no reasonable alt to provide
|
||||
<img
|
||||
ref={ref}
|
||||
alt=""
|
||||
css={getExternalImageStylesFromUrl(theme.externalImages, attrs.src)}
|
||||
{...attrs}
|
||||
/>
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { css, type Interpolation, type Theme } from "@emotion/react";
|
||||
import { type Interpolation, type Theme, css } from "@emotion/react";
|
||||
import UploadIcon from "@mui/icons-material/CloudUploadOutlined";
|
||||
import RemoveIcon from "@mui/icons-material/DeleteOutline";
|
||||
import FileIcon from "@mui/icons-material/FolderOutlined";
|
||||
import CircularProgress from "@mui/material/CircularProgress";
|
||||
import IconButton from "@mui/material/IconButton";
|
||||
import { type FC, type DragEvent, useRef, type ReactNode } from "react";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
import { useClickable } from "hooks/useClickable";
|
||||
import { type DragEvent, type FC, type ReactNode, useRef } from "react";
|
||||
|
||||
export interface FileUploadProps {
|
||||
isUploading: boolean;
|
||||
@ -31,8 +31,8 @@ export const FileUpload: FC<FileUploadProps> = ({
|
||||
}) => {
|
||||
const fileDrop = useFileDrop(onUpload, extensions);
|
||||
const inputRef = useRef<HTMLInputElement>(null);
|
||||
const clickable = useClickable<HTMLDivElement>(
|
||||
() => inputRef.current?.click(),
|
||||
const clickable = useClickable<HTMLDivElement>(() =>
|
||||
inputRef.current?.click(),
|
||||
);
|
||||
|
||||
if (!isUploading && file) {
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { action } from "@storybook/addon-actions";
|
||||
import type { Meta, StoryObj } from "@storybook/react";
|
||||
import { userEvent, within, expect } from "@storybook/test";
|
||||
import { useState } from "react";
|
||||
import { expect, userEvent, within } from "@storybook/test";
|
||||
import { UserAvatar } from "components/UserAvatar/UserAvatar";
|
||||
import { useState } from "react";
|
||||
import { withDesktopViewport } from "testHelpers/storybook";
|
||||
import {
|
||||
SelectFilter,
|
||||
SelectFilterSearch,
|
||||
type SelectFilterOption,
|
||||
SelectFilterSearch,
|
||||
} from "./SelectFilter";
|
||||
|
||||
const options: SelectFilterOption[] = Array.from({ length: 50 }, (_, i) => ({
|
||||
|
@ -1,15 +1,15 @@
|
||||
import { useState, type FC, type ReactNode } from "react";
|
||||
import { Loader } from "components/Loader/Loader";
|
||||
import {
|
||||
SelectMenu,
|
||||
SelectMenuTrigger,
|
||||
SelectMenuButton,
|
||||
SelectMenuContent,
|
||||
SelectMenuSearch,
|
||||
SelectMenuList,
|
||||
SelectMenuItem,
|
||||
SelectMenuIcon,
|
||||
SelectMenuItem,
|
||||
SelectMenuList,
|
||||
SelectMenuSearch,
|
||||
SelectMenuTrigger,
|
||||
} from "components/SelectMenu/SelectMenu";
|
||||
import { type FC, type ReactNode, useState } from "react";
|
||||
|
||||
const BASE_WIDTH = 200;
|
||||
const POPOVER_WIDTH = 320;
|
||||
|
@ -1,12 +1,12 @@
|
||||
import type { FC } from "react";
|
||||
import { API } from "api/api";
|
||||
import {
|
||||
SelectFilter,
|
||||
SelectFilterSearch,
|
||||
type SelectFilterOption,
|
||||
SelectFilterSearch,
|
||||
} from "components/Filter/SelectFilter";
|
||||
import { UserAvatar } from "components/UserAvatar/UserAvatar";
|
||||
import { useAuthenticated } from "contexts/auth/RequireAuth";
|
||||
import type { FC } from "react";
|
||||
import { type UseFilterMenuOptions, useFilterMenu } from "./menu";
|
||||
|
||||
export const useUserFilterMenu = ({
|
||||
|
@ -7,8 +7,6 @@ import Menu from "@mui/material/Menu";
|
||||
import MenuItem from "@mui/material/MenuItem";
|
||||
import Skeleton, { type SkeletonProps } from "@mui/material/Skeleton";
|
||||
import type { Breakpoint } from "@mui/system/createTheme";
|
||||
import { type FC, type ReactNode, useEffect, useRef, useState } from "react";
|
||||
import type { useSearchParams } from "react-router-dom";
|
||||
import {
|
||||
getValidationErrorMessage,
|
||||
hasError,
|
||||
@ -17,6 +15,8 @@ import {
|
||||
import { InputGroup } from "components/InputGroup/InputGroup";
|
||||
import { SearchField } from "components/SearchField/SearchField";
|
||||
import { useDebouncedFunction } from "hooks/debounce";
|
||||
import { type FC, type ReactNode, useEffect, useRef, useState } from "react";
|
||||
import type { useSearchParams } from "react-router-dom";
|
||||
|
||||
export type PresetFilter = {
|
||||
name: string;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import type { SelectFilterOption } from "components/Filter/SelectFilter";
|
||||
import { useMemo, useRef, useState } from "react";
|
||||
import { useQuery } from "react-query";
|
||||
import type { SelectFilterOption } from "components/Filter/SelectFilter";
|
||||
|
||||
export type UseFilterMenuOptions<TOption extends SelectFilterOption> = {
|
||||
id: string;
|
||||
|
@ -1,15 +1,15 @@
|
||||
import { type Interpolation, type Theme, useTheme } from "@emotion/react";
|
||||
import {
|
||||
type ComponentProps,
|
||||
createContext,
|
||||
type FC,
|
||||
forwardRef,
|
||||
type HTMLProps,
|
||||
type ReactNode,
|
||||
useContext,
|
||||
} from "react";
|
||||
import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges";
|
||||
import { Stack } from "components/Stack/Stack";
|
||||
import {
|
||||
type ComponentProps,
|
||||
type FC,
|
||||
type HTMLProps,
|
||||
type ReactNode,
|
||||
createContext,
|
||||
forwardRef,
|
||||
useContext,
|
||||
} from "react";
|
||||
import {
|
||||
FormFooter as BaseFormFooter,
|
||||
type FormFooterProps,
|
||||
|
@ -1,10 +1,10 @@
|
||||
import type { FC, ReactNode } from "react";
|
||||
import { Margins } from "components/Margins/Margins";
|
||||
import {
|
||||
PageHeader,
|
||||
PageHeaderTitle,
|
||||
PageHeaderSubtitle,
|
||||
PageHeaderTitle,
|
||||
} from "components/PageHeader/PageHeader";
|
||||
import type { FC, ReactNode } from "react";
|
||||
|
||||
export interface FullPageFormProps {
|
||||
title: string;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user