diff --git a/backend/internal/api/handler/dns_providers.go b/backend/internal/api/handler/dns_providers.go index 6040b6bd..0f5c8f1f 100644 --- a/backend/internal/api/handler/dns_providers.go +++ b/backend/internal/api/handler/dns_providers.go @@ -133,8 +133,7 @@ func DeleteDNSProvider() func(http.ResponseWriter, *http.Request) { // Route: GET /dns-providers/acmesh func GetAcmeshProviders() func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { - items := dnsproviders.List() - h.ResultResponseJSON(w, r, http.StatusOK, items) + h.ResultResponseJSON(w, r, http.StatusOK, dnsproviders.List()) } } diff --git a/backend/internal/api/schema/create_dns_provider.go b/backend/internal/api/schema/create_dns_provider.go index 03b2000d..90dcef93 100644 --- a/backend/internal/api/schema/create_dns_provider.go +++ b/backend/internal/api/schema/create_dns_provider.go @@ -5,6 +5,7 @@ import ( "strings" "npm/internal/dnsproviders" + "npm/internal/logger" "npm/internal/util" ) @@ -15,7 +16,12 @@ func CreateDNSProvider() string { allSchemasWrapped := make([]string, 0) for providerName, provider := range allProviders { - allSchemasWrapped = append(allSchemasWrapped, createDNSProviderType(providerName, provider.Schema)) + schema, err := provider.GetJsonSchema() + if err != nil { + logger.Error("ProviderSchemaError", fmt.Errorf("Invalid Provider Schema for %s: %v", provider.Title, err)) + } else { + allSchemasWrapped = append(allSchemasWrapped, createDNSProviderType(providerName, schema)) + } } return fmt.Sprintf(fmtStr, util.ConvertStringSliceToInterface(allSchemasWrapped)...) diff --git a/backend/internal/dnsproviders/common.go b/backend/internal/dnsproviders/common.go index 700924d9..8c848f1e 100644 --- a/backend/internal/dnsproviders/common.go +++ b/backend/internal/dnsproviders/common.go @@ -1,36 +1,47 @@ package dnsproviders import ( + "encoding/json" "errors" - "npm/internal/util" ) +// providerField should mimick jsonschema, so that +// the ui can render a field and validate it +// before we do. +// See: https://json-schema.org/draft/2020-12/json-schema-validation.html type providerField struct { - Name string `json:"name"` - Type string `json:"type"` - IsRequired bool `json:"is_required"` - IsSecret bool `json:"is_secret"` - MetaKey string `json:"meta_key"` - EnvKey string `json:"-"` // not exposed in api + Title string `json:"title"` + Type string `json:"type"` + AdditionalProperties bool `json:"additionalProperties"` + Minimum int `json:"minimum,omitempty"` + Maximum int `json:"maximum,omitempty"` + MinLength int `json:"minLength,omitempty"` + MaxLength int `json:"maxLength,omitempty"` + Pattern string `json:"pattern,omitempty"` + IsSecret bool `json:"isSecret"` // Not valid jsonschema } // Provider is a simple struct type Provider struct { - AcmeshName string `json:"acmesh_name"` - Schema string `json:"-"` - Fields []providerField `json:"fields"` + Title string `json:"title"` + Type string `json:"type"` // Should always be "object" + AdditionalProperties bool `json:"additionalProperties"` + MinProperties int `json:"minProperties,omitempty"` + Required []string `json:"required,omitempty"` + Properties map[string]providerField `json:"properties"` } -// GetAcmeEnvVars will map the meta given to the env var required for -// acme.sh to use this dns provider -func (p *Provider) GetAcmeEnvVars(meta interface{}) map[string]string { - res := make(map[string]string) - for _, field := range p.Fields { - if acmeShEnvValue, found := util.FindItemInInterface(field.MetaKey, meta); found { - res[field.EnvKey] = acmeShEnvValue.(string) - } - } - return res +// GetJsonSchema encodes this object as JSON string +func (p *Provider) GetJsonSchema() (string, error) { + b, err := json.Marshal(p) + return string(b), err +} + +// ConvertToUpdatable will manipulate this object so that it returns +// an updatable json schema +func (p *Provider) ConvertToUpdatable() { + p.MinProperties = 1 + p.Required = nil } // List returns an array of providers @@ -89,7 +100,7 @@ func GetAll() map[string]Provider { mp := make(map[string]Provider) items := List() for _, item := range items { - mp[item.AcmeshName] = item + mp[item.Title] = item } return mp } @@ -102,51 +113,3 @@ func Get(provider string) (Provider, error) { } return Provider{}, errors.New("provider_not_found") } - -// GetAllSchemas returns a flat array with just the schemas -func GetAllSchemas() []string { - items := List() - mp := make([]string, 0) - for _, item := range items { - mp = append(mp, item.Schema) - } - return mp -} - -const commonKeySchema = ` -{ - "type": "object", - "required": [ - "api_key" - ], - "additionalProperties": false, - "properties": { - "api_key": { - "type": "string", - "minLength": 1 - } - } -} -` - -// nolint: gosec -const commonKeySecretSchema = ` -{ - "type": "object", - "required": [ - "api_key", - "secret" - ], - "additionalProperties": false, - "properties": { - "api_key": { - "type": "string", - "minLength": 1 - }, - "secret": { - "type": "string", - "minLength": 1 - } - } -} -` diff --git a/backend/internal/dnsproviders/dns_acmedns.go b/backend/internal/dnsproviders/dns_acmedns.go index af3aa60a..6730240d 100644 --- a/backend/internal/dnsproviders/dns_acmedns.go +++ b/backend/internal/dnsproviders/dns_acmedns.go @@ -1,68 +1,33 @@ package dnsproviders -const acmeDNSchema = ` -{ - "type": "object", - "required": [ - "api_url", - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "api_url": { - "type": "string", - "minLength": 4 - }, - "subdomain": { - "type": "string", - "minLength": 1 - }, - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSAcmeDNS() Provider { return Provider{ - AcmeshName: "dns_acmedns", - Schema: acmeDNSchema, - Fields: []providerField{ - { - Name: "Base URL", - Type: "text", - MetaKey: "api_url", - EnvKey: "ACMEDNS_BASE_URL", - IsRequired: true, + Title: "dns_acmedns", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "ACMEDNS_BASE_URL", + "ACMEDNS_SUBDOMAIN", + "ACMEDNS_USERNAME", + "ACMEDNS_PASSWORD", + }, + Properties: map[string]providerField{ + "ACMEDNS_BASE_URL": { + Title: "base-url", + Type: "string", }, - { - Name: "Subdomain", - Type: "text", - MetaKey: "subdomain", - EnvKey: "ACMEDNS_SUBDOMAIN", - IsRequired: true, + "ACMEDNS_SUBDOMAIN": { + Title: "subdomain", + Type: "string", }, - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "ACMEDNS_USERNAME", - IsRequired: true, + "ACMEDNS_USERNAME": { + Title: "username", + Type: "string", }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "ACMEDNS_PASSWORD", - IsRequired: true, - IsSecret: true, + "ACMEDNS_PASSWORD": { + Title: "password", + Type: "string", + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_ad.go b/backend/internal/dnsproviders/dns_ad.go index f3c5e588..243f23ca 100644 --- a/backend/internal/dnsproviders/dns_ad.go +++ b/backend/internal/dnsproviders/dns_ad.go @@ -2,15 +2,17 @@ package dnsproviders func getDNSAd() Provider { return Provider{ - AcmeshName: "dns_ad", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "AD_API_KEY", - IsRequired: true, + Title: "dns_ad", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "AD_API_KEY", + }, + Properties: map[string]providerField{ + "AD_API_KEY": { + Title: "api-key", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_ali.go b/backend/internal/dnsproviders/dns_ali.go index d4906dfc..e338f276 100644 --- a/backend/internal/dnsproviders/dns_ali.go +++ b/backend/internal/dnsproviders/dns_ali.go @@ -2,23 +2,24 @@ package dnsproviders func getDNSAli() Provider { return Provider{ - AcmeshName: "dns_ali", - Schema: commonKeySecretSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "Ali_Key", - IsRequired: true, + Title: "dns_ali", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "Ali_Key", + "Ali_Secret", + }, + Properties: map[string]providerField{ + "Ali_Key": { + Title: "api-key", + Type: "string", + MinLength: 1, }, - { - Name: "Secret", - Type: "password", - MetaKey: "secret", - EnvKey: "Ali_Secret", - IsRequired: true, - IsSecret: true, + "Ali_Secret": { + Title: "secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_autodns.go b/backend/internal/dnsproviders/dns_autodns.go index e593b89b..bb04f7c4 100644 --- a/backend/internal/dnsproviders/dns_autodns.go +++ b/backend/internal/dnsproviders/dns_autodns.go @@ -1,57 +1,31 @@ package dnsproviders -const autoDNSSchema = ` -{ - "type": "object", - "required": [ - "user", - "password", - "context" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "context": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSAutoDNS() Provider { return Provider{ - AcmeshName: "dns_autodns", - Schema: autoDNSSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "AUTODNS_USER", - IsRequired: true, + Title: "dns_autodns", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "AUTODNS_USER", + "AUTODNS_PASSWORD", + "AUTODNS_CONTEXT", + }, + Properties: map[string]providerField{ + "AUTODNS_USER": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "AUTODNS_PASSWORD", - IsRequired: true, - IsSecret: true, + "AUTODNS_PASSWORD": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "Context", - Type: "text", - MetaKey: "context", - EnvKey: "AUTODNS_CONTEXT", - IsRequired: true, + "AUTODNS_CONTEXT": { + Title: "context", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_aws.go b/backend/internal/dnsproviders/dns_aws.go index 88139e88..aed06945 100644 --- a/backend/internal/dnsproviders/dns_aws.go +++ b/backend/internal/dnsproviders/dns_aws.go @@ -1,55 +1,29 @@ package dnsproviders -const route53Schema = ` -{ - "type": "object", - "required": [ - "access_key_id", - "access_key" - ], - "additionalProperties": false, - "properties": { - "access_key_id": { - "type": "string", - "minLength": 10 - }, - "access_key": { - "type": "string", - "minLength": 10 - }, - "slow_rate": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSAws() Provider { return Provider{ - AcmeshName: "dns_aws", - Schema: route53Schema, - Fields: []providerField{ - { - Name: "Access Key ID", - Type: "text", - MetaKey: "access_key_id", - EnvKey: "AWS_ACCESS_KEY_ID", - IsRequired: true, + Title: "dns_aws", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "AWS_ACCESS_KEY_ID", + "AWS_SECRET_ACCESS_KEY", + }, + Properties: map[string]providerField{ + "AWS_ACCESS_KEY_ID": { + Title: "access-key-id", + Type: "string", + MinLength: 10, }, - { - Name: "Secret Access Key", - Type: "password", - MetaKey: "access_key", - EnvKey: "AWS_SECRET_ACCESS_KEY", - IsRequired: true, - IsSecret: true, + "AWS_SECRET_ACCESS_KEY": { + Title: "secret-access-key", + Type: "string", + MinLength: 10, + IsSecret: true, }, - { - Name: "Slow Rate", - Type: "number", - MetaKey: "slow_rate", - EnvKey: "AWS_DNS_SLOWRATE", + "AWS_DNS_SLOWRATE": { + Title: "slow-rate", + Type: "integer", }, }, } diff --git a/backend/internal/dnsproviders/dns_azure.go b/backend/internal/dnsproviders/dns_azure.go index 69c3fb95..a8c5a437 100644 --- a/backend/internal/dnsproviders/dns_azure.go +++ b/backend/internal/dnsproviders/dns_azure.go @@ -1,69 +1,37 @@ package dnsproviders -const azureSchema = ` -{ - "type": "object", - "required": [ - "subscription_id", - "tenant_id", - "app_id", - "client_secret" - ], - "additionalProperties": false, - "properties": { - "subscription_id": { - "type": "string", - "minLength": 1 - }, - "tenant_id": { - "type": "string", - "minLength": 1 - }, - "app_id": { - "type": "string", - "minLength": 1 - }, - "client_secret": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSAzure() Provider { return Provider{ - AcmeshName: "dns_azure", - Schema: azureSchema, - Fields: []providerField{ - { - Name: "Subscription ID", - Type: "text", - MetaKey: "subscription_id", - EnvKey: "AZUREDNS_SUBSCRIPTIONID", - IsRequired: true, + Title: "dns_azure", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "AZUREDNS_SUBSCRIPTIONID", + "AZUREDNS_TENANTID", + "AZUREDNS_APPID", + "AZUREDNS_CLIENTSECRET", + }, + Properties: map[string]providerField{ + "AZUREDNS_SUBSCRIPTIONID": { + Title: "subscription-id", + Type: "string", + MinLength: 1, }, - { - Name: "Tenant ID", - Type: "text", - MetaKey: "tenant_id", - EnvKey: "AZUREDNS_TENANTID", - IsRequired: true, + "AZUREDNS_TENANTID": { + Title: "tenant-id", + Type: "string", + MinLength: 1, }, - { - Name: "APP ID", - Type: "text", - MetaKey: "app_id", - EnvKey: "AZUREDNS_APPID", - IsRequired: true, + "AZUREDNS_APPID": { + Title: "app-id", + Type: "string", + MinLength: 1, }, - { - Name: "Client Secret", - Type: "password", - MetaKey: "client_secret", - EnvKey: "AZUREDNS_CLIENTSECRET", - IsRequired: true, - IsSecret: true, + "AZUREDNS_CLIENTSECRET": { + Title: "client-secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_cf.go b/backend/internal/dnsproviders/dns_cf.go index dab20548..b35695c2 100644 --- a/backend/internal/dnsproviders/dns_cf.go +++ b/backend/internal/dnsproviders/dns_cf.go @@ -1,79 +1,42 @@ package dnsproviders -const cloudflareSchema = ` -{ - "type": "object", - "required": [ - "api_key", - "email", - "token", - "account_id" - ], - "additionalProperties": false, - "properties": { - "api_key": { - "type": "string", - "minLength": 1 - }, - "email": { - "type": "string", - "minLength": 5 - }, - "token": { - "type": "string", - "minLength": 5 - }, - "account_id": { - "type": "string", - "minLength": 1 - }, - "zone_id": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSCf() Provider { return Provider{ - AcmeshName: "dns_cf", - Schema: cloudflareSchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "CF_Key", - IsRequired: true, + Title: "dns_cf", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "CF_Key", + "CF_Email", + "CF_Token", + "CF_Account_ID", + }, + Properties: map[string]providerField{ + "CF_Key": { + Title: "api-key", + Type: "string", + MinLength: 1, }, - { - Name: "Email", - Type: "text", - MetaKey: "email", - EnvKey: "CF_Email", - IsRequired: true, + "CF_Email": { + Title: "email", + Type: "string", + MinLength: 5, }, - { - Name: "Token", - Type: "text", - MetaKey: "token", - EnvKey: "CF_Token", - IsRequired: true, - IsSecret: true, + "CF_Token": { + Title: "token", + Type: "string", + MinLength: 5, + IsSecret: true, }, - { - Name: "Account ID", - Type: "text", - MetaKey: "account_id", - EnvKey: "CF_Account_ID", - IsRequired: true, + "CF_Account_ID": { + Title: "account-id", + Type: "string", + MinLength: 1, }, - { - Name: "Zone ID", - Type: "string", - MetaKey: "zone_id", - EnvKey: "CF_Zone_ID", + "CF_Zone_ID": { + Title: "zone-id", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_cloudns.go b/backend/internal/dnsproviders/dns_cloudns.go index 7848a3a3..297de58d 100644 --- a/backend/internal/dnsproviders/dns_cloudns.go +++ b/backend/internal/dnsproviders/dns_cloudns.go @@ -1,53 +1,31 @@ package dnsproviders -const clouDNSNetSchema = ` -{ - "type": "object", - "required": [ - "password" - ], - "additionalProperties": false, - "properties": { - "auth_id": { - "type": "string", - "minLength": 1 - }, - "sub_auth_id": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSCloudns() Provider { return Provider{ - AcmeshName: "dns_cloudns", - Schema: clouDNSNetSchema, - Fields: []providerField{ - { - Name: "Auth ID", - Type: "text", - MetaKey: "auth_id", - EnvKey: "CLOUDNS_AUTH_ID", + Title: "dns_cloudns", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "CLOUDNS_AUTH_ID", + "CLOUDNS_SUB_AUTH_ID", + "CLOUDNS_AUTH_PASSWORD", + }, + Properties: map[string]providerField{ + "CLOUDNS_AUTH_ID": { + Title: "auth-id", + Type: "string", + MinLength: 1, }, - { - Name: "Sub Auth ID", - Type: "text", - MetaKey: "sub_auth_id", - EnvKey: "CLOUDNS_SUB_AUTH_ID", + "CLOUDNS_SUB_AUTH_ID": { + Title: "sub-auth-id", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "CLOUDNS_AUTH_PASSWORD", - IsRequired: true, - IsSecret: true, + "CLOUDNS_AUTH_PASSWORD": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_conoha.go b/backend/internal/dnsproviders/dns_conoha.go index d2e1b362..d84aacd4 100644 --- a/backend/internal/dnsproviders/dns_conoha.go +++ b/backend/internal/dnsproviders/dns_conoha.go @@ -1,69 +1,37 @@ package dnsproviders -const conohaSchema = ` -{ - "type": "object", - "required": [ - "subscription_id", - "tenant_id", - "app_id", - "client_secret" - ], - "additionalProperties": false, - "properties": { - "api_url": { - "type": "string", - "minLength": 4 - }, - "user": { - "type": "string", - "minLength": 1 - }, - "pass": { - "type": "string", - "minLength": 1 - }, - "tenant_id": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSConoha() Provider { return Provider{ - AcmeshName: "dns_conoha", - Schema: conohaSchema, - Fields: []providerField{ - { - Name: "API URL", - Type: "text", - MetaKey: "api_url", - EnvKey: "CONOHA_IdentityServiceApi", - IsRequired: true, + Title: "dns_conoha", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "CONOHA_IdentityServiceApi", + "CONOHA_Username", + "CONOHA_Password", + "CONOHA_TenantId", + }, + Properties: map[string]providerField{ + "CONOHA_IdentityServiceApi": { + Title: "api-url", + Type: "string", + MinLength: 4, }, - { - Name: "Username", - Type: "text", - MetaKey: "user", - EnvKey: "CONOHA_Username", - IsRequired: true, + "CONOHA_Username": { + Title: "username", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "CONOHA_Password", - IsRequired: true, - IsSecret: true, + "CONOHA_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "Tenant ID", - Type: "text", - MetaKey: "tenant_id", - EnvKey: "CONOHA_TenantId", - IsRequired: true, + "CONOHA_TenantId": { + Title: "tenant-id", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_cx.go b/backend/internal/dnsproviders/dns_cx.go index 39d23256..2750124c 100644 --- a/backend/internal/dnsproviders/dns_cx.go +++ b/backend/internal/dnsproviders/dns_cx.go @@ -2,23 +2,22 @@ package dnsproviders func getDNSCx() Provider { return Provider{ - AcmeshName: "dns_cx", - Schema: commonKeySecretSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "CX_Key", - IsRequired: true, + Title: "dns_cx", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "CX_Key", + "CX_Secret", + }, + Properties: map[string]providerField{ + "CX_Key": { + Title: "key", + Type: "string", }, - { - Name: "Secret", - Type: "password", - MetaKey: "secret", - EnvKey: "CX_Secret", - IsRequired: true, - IsSecret: true, + "CX_Secret": { + Title: "secret", + Type: "string", + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_cyon.go b/backend/internal/dnsproviders/dns_cyon.go index cacd25d2..87a5ab37 100644 --- a/backend/internal/dnsproviders/dns_cyon.go +++ b/backend/internal/dnsproviders/dns_cyon.go @@ -1,56 +1,32 @@ package dnsproviders -const cyonChSchema = ` -{ - "type": "object", - "required": [ - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "otp_secret": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSCyon() Provider { return Provider{ - AcmeshName: "dns_cyon", - Schema: cyonChSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "CY_Username", - IsRequired: true, + Title: "dns_cyon", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "CY_Username", + "CY_Password", + "CY_OTP_Secret", + }, + Properties: map[string]providerField{ + "CY_Username": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "CY_Password", - IsRequired: true, - IsSecret: true, + "CY_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "OTP Secret", - Type: "password", - MetaKey: "otp_secret", - EnvKey: "CY_OTP_Secret", - IsSecret: true, + "CY_OTP_Secret": { + Title: "otp-secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_da.go b/backend/internal/dnsproviders/dns_da.go index 7133a0e4..ee9e0f61 100644 --- a/backend/internal/dnsproviders/dns_da.go +++ b/backend/internal/dnsproviders/dns_da.go @@ -1,41 +1,22 @@ package dnsproviders -const daSchema = ` -{ - "type": "object", - "required": [ - "api_url" - ], - "additionalProperties": false, - "properties": { - "api_url": { - "type": "string", - "minLength": 4 - }, - "insecure": { - "type": "boolean" - } - } -} -` - func getDNSDa() Provider { return Provider{ - AcmeshName: "dns_da", - Schema: daSchema, - Fields: []providerField{ - { - Name: "API URL", - Type: "text", - MetaKey: "api_url", - EnvKey: "DA_Api", - IsRequired: true, + Title: "dns_da", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DA_Api", + }, + Properties: map[string]providerField{ + "DA_Api": { + Title: "api-url", + Type: "string", + MinLength: 4, }, - { - Name: "Insecure", - Type: "bool", - MetaKey: "insecure", - EnvKey: "DA_Api_Insecure", + "DA_Api_Insecure": { + Title: "insecure", + Type: "boolean", }, }, } diff --git a/backend/internal/dnsproviders/dns_dgon.go b/backend/internal/dnsproviders/dns_dgon.go index 0d8aaa1e..91113cce 100644 --- a/backend/internal/dnsproviders/dns_dgon.go +++ b/backend/internal/dnsproviders/dns_dgon.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSDgon() Provider { return Provider{ - AcmeshName: "dns_dgon", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "DO_API_KEY", - IsRequired: true, - IsSecret: true, + Title: "dns_dgon", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DO_API_KEY", + }, + Properties: map[string]providerField{ + "DO_API_KEY": { + Title: "api-key", + Type: "string", + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_dnsimple.go b/backend/internal/dnsproviders/dns_dnsimple.go index 7fb7e983..a4a02ae1 100644 --- a/backend/internal/dnsproviders/dns_dnsimple.go +++ b/backend/internal/dnsproviders/dns_dnsimple.go @@ -2,16 +2,18 @@ package dnsproviders func getDNSDNSimple() Provider { return Provider{ - AcmeshName: "dns_dnsimple", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "OAuth Token", - Type: "text", - MetaKey: "api_key", - EnvKey: "DNSimple_OAUTH_TOKEN", - IsRequired: true, - IsSecret: true, + Title: "dns_dnsimple", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DNSimple_OAUTH_TOKEN", + }, + Properties: map[string]providerField{ + "DNSimple_OAUTH_TOKEN": { + Title: "oauth-token", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_dp.go b/backend/internal/dnsproviders/dns_dp.go index 0c0579f9..cece1a01 100644 --- a/backend/internal/dnsproviders/dns_dp.go +++ b/backend/internal/dnsproviders/dns_dp.go @@ -1,45 +1,25 @@ package dnsproviders -const dnsPodCnSchema = ` -{ - "type": "object", - "required": [ - "id", - "api_key" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "api_key": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSDp() Provider { return Provider{ - AcmeshName: "dns_dp", - Schema: dnsPodCnSchema, - Fields: []providerField{ - { - Name: "ID", - Type: "text", - MetaKey: "id", - EnvKey: "DP_Id", - IsRequired: true, + Title: "dns_dp", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DP_Id", + "DP_Key", + }, + Properties: map[string]providerField{ + "DP_Id": { + Title: "id", + Type: "string", + MinLength: 1, }, - { - Name: "Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "DP_Key", - IsRequired: true, - IsSecret: true, + "DP_Key": { + Title: "key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_dpi.go b/backend/internal/dnsproviders/dns_dpi.go index 5dce7dc5..0b5255c5 100644 --- a/backend/internal/dnsproviders/dns_dpi.go +++ b/backend/internal/dnsproviders/dns_dpi.go @@ -1,45 +1,25 @@ package dnsproviders -const dnsPodComSchema = ` -{ - "type": "object", - "required": [ - "id", - "api_key" - ], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "minLength": 1 - }, - "api_key": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSDpi() Provider { return Provider{ - AcmeshName: "dns_dpi", - Schema: dnsPodComSchema, - Fields: []providerField{ - { - Name: "ID", - Type: "text", - MetaKey: "id", - EnvKey: "DPI_Id", - IsRequired: true, + Title: "dns_dpi", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DPI_Id", + "DPI_Key", + }, + Properties: map[string]providerField{ + "DPI_Id": { + Title: "id", + Type: "string", + MinLength: 1, }, - { - Name: "Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "DPI_Key", - IsRequired: true, - IsSecret: true, + "DPI_Key": { + Title: "key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_dreamhost.go b/backend/internal/dnsproviders/dns_dreamhost.go index 95ebc795..037c5f84 100644 --- a/backend/internal/dnsproviders/dns_dreamhost.go +++ b/backend/internal/dnsproviders/dns_dreamhost.go @@ -2,16 +2,18 @@ package dnsproviders func getDNSDreamhost() Provider { return Provider{ - AcmeshName: "dns_dreamhost", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "DH_API_KEY", - IsRequired: true, - IsSecret: true, + Title: "dns_dreamhost", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DH_API_KEY", + }, + Properties: map[string]providerField{ + "DH_API_KEY": { + Title: "api-key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_duckdns.go b/backend/internal/dnsproviders/dns_duckdns.go index f88e3cbe..3407ca0c 100644 --- a/backend/internal/dnsproviders/dns_duckdns.go +++ b/backend/internal/dnsproviders/dns_duckdns.go @@ -2,16 +2,18 @@ package dnsproviders func getDNSDuckDNS() Provider { return Provider{ - AcmeshName: "dns_duckdns", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "Token", - Type: "password", - MetaKey: "api_key", - EnvKey: "DuckDNS_Token", - IsRequired: true, - IsSecret: true, + Title: "dns_duckdns", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DuckDNS_Token", + }, + Properties: map[string]providerField{ + "DuckDNS_Token": { + Title: "token", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_dyn.go b/backend/internal/dnsproviders/dns_dyn.go index a3b75fe8..be595ce3 100644 --- a/backend/internal/dnsproviders/dns_dyn.go +++ b/backend/internal/dnsproviders/dns_dyn.go @@ -1,57 +1,31 @@ package dnsproviders -const dynSchema = ` -{ - "type": "object", - "required": [ - "customer", - "username", - "password" - ], - "additionalProperties": false, - "properties": { - "customer": { - "type": "string", - "minLength": 1 - }, - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSDyn() Provider { return Provider{ - AcmeshName: "dns_dyn", - Schema: dynSchema, - Fields: []providerField{ - { - Name: "Customer", - Type: "text", - MetaKey: "customer", - EnvKey: "DYN_Customer", - IsRequired: true, + Title: "dns_dyn", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "DYN_Customer", + "DYN_Username", + "DYN_Password", + }, + Properties: map[string]providerField{ + "DYN_Customer": { + Title: "customer", + Type: "string", + MinLength: 1, }, - { - Name: "Username", - Type: "text", - MetaKey: "username", - EnvKey: "DYN_Username", - IsRequired: true, + "DYN_Username": { + Title: "username", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "DYN_Password", - IsRequired: true, - IsSecret: true, + "DYN_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_dynu.go b/backend/internal/dnsproviders/dns_dynu.go index 468b7f8b..1f3024c1 100644 --- a/backend/internal/dnsproviders/dns_dynu.go +++ b/backend/internal/dnsproviders/dns_dynu.go @@ -2,23 +2,23 @@ package dnsproviders func getDNSDynu() Provider { return Provider{ - AcmeshName: "dns_dynu", - Schema: commonKeySecretSchema, - Fields: []providerField{ - { - Name: "Client ID", - Type: "text", - MetaKey: "api_key", - EnvKey: "Dynu_ClientId", - IsRequired: true, + Title: "dns_dynu", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "Dynu_ClientId", + }, + Properties: map[string]providerField{ + "Dynu_ClientId": { + Title: "client-id", + Type: "string", + MinLength: 1, }, - { - Name: "Secret", - Type: "password", - MetaKey: "secret", - EnvKey: "Dynu_Secret", - IsRequired: true, - IsSecret: true, + "Dynu_Secret": { + Title: "secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_euserv.go b/backend/internal/dnsproviders/dns_euserv.go index adf496fa..be500480 100644 --- a/backend/internal/dnsproviders/dns_euserv.go +++ b/backend/internal/dnsproviders/dns_euserv.go @@ -1,49 +1,25 @@ package dnsproviders -const euservSchema = ` -{ - "type": "object", - "required": [ - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "otp_secret": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSEuserv() Provider { return Provider{ - AcmeshName: "dns_euserv", - Schema: euservSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "EUSERV_Username", - IsRequired: true, + Title: "dns_euserv", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "EUSERV_Username", + "EUSERV_Password", + }, + Properties: map[string]providerField{ + "EUSERV_Username": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "EUSERV_Password", - IsRequired: true, - IsSecret: true, + "EUSERV_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_freedns.go b/backend/internal/dnsproviders/dns_freedns.go index 3c56069d..7c6849b1 100644 --- a/backend/internal/dnsproviders/dns_freedns.go +++ b/backend/internal/dnsproviders/dns_freedns.go @@ -1,45 +1,25 @@ package dnsproviders -const freeDNSSchema = ` -{ - "type": "object", - "required": [ - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSFreeDNS() Provider { return Provider{ - AcmeshName: "dns_freedns", - Schema: freeDNSSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "FREEDNS_User", - IsRequired: true, + Title: "dns_freedns", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "FREEDNS_User", + "FREEDNS_Password", + }, + Properties: map[string]providerField{ + "FREEDNS_User": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "FREEDNS_Password", - IsRequired: true, - IsSecret: true, + "FREEDNS_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_gandi_livedns.go b/backend/internal/dnsproviders/dns_gandi_livedns.go index 214b0619..a22ebbff 100644 --- a/backend/internal/dnsproviders/dns_gandi_livedns.go +++ b/backend/internal/dnsproviders/dns_gandi_livedns.go @@ -2,15 +2,17 @@ package dnsproviders func getDNSGandiLiveDNS() Provider { return Provider{ - AcmeshName: "dns_gandi_livedns", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "GANDI_LIVEDNS_KEY", - IsRequired: true, + Title: "dns_gandi_livedns", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "GANDI_LIVEDNS_KEY", + }, + Properties: map[string]providerField{ + "GANDI_LIVEDNS_KEY": { + Title: "key", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_gd.go b/backend/internal/dnsproviders/dns_gd.go index 0429c73b..11248948 100644 --- a/backend/internal/dnsproviders/dns_gd.go +++ b/backend/internal/dnsproviders/dns_gd.go @@ -2,23 +2,24 @@ package dnsproviders func getDNSGd() Provider { return Provider{ - AcmeshName: "dns_gd", - Schema: commonKeySecretSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "GD_Key", - IsRequired: true, + Title: "dns_gd", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "GD_Key", + "GD_Secret", + }, + Properties: map[string]providerField{ + "GD_Key": { + Title: "key", + Type: "string", + MinLength: 1, }, - { - Name: "Secret", - Type: "password", - MetaKey: "secret", - EnvKey: "GD_Secret", - IsRequired: true, - IsSecret: true, + "GD_Secret": { + Title: "secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_he.go b/backend/internal/dnsproviders/dns_he.go index dc6911e2..f4aed32b 100644 --- a/backend/internal/dnsproviders/dns_he.go +++ b/backend/internal/dnsproviders/dns_he.go @@ -1,46 +1,25 @@ package dnsproviders -// nolint: gosec -const commonUserPassSchema = ` -{ - "type": "object", - "required": [ - "username", - "password" - ], - "additionalProperties": false, - "properties": { - "username": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSHe() Provider { return Provider{ - AcmeshName: "dns_he", - Schema: commonUserPassSchema, - Fields: []providerField{ - { - Name: "Username", - Type: "text", - MetaKey: "username", - EnvKey: "HE_Username", - IsRequired: true, + Title: "dns_he", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "HE_Username", + "HE_Password", + }, + Properties: map[string]providerField{ + "HE_Username": { + Title: "username", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "HE_Password", - IsRequired: true, - IsSecret: true, + "HE_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_infoblox.go b/backend/internal/dnsproviders/dns_infoblox.go index 97368ca3..f356f36c 100644 --- a/backend/internal/dnsproviders/dns_infoblox.go +++ b/backend/internal/dnsproviders/dns_infoblox.go @@ -1,45 +1,25 @@ package dnsproviders -const infobloxSchema = ` -{ - "type": "object", - "required": [ - "credentials", - "server" - ], - "additionalProperties": false, - "properties": { - "credentials": { - "type": "string", - "minLength": 1 - }, - "server": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSInfoblox() Provider { return Provider{ - AcmeshName: "dns_infoblox", - Schema: infobloxSchema, - Fields: []providerField{ - { - Name: "Credentials", - Type: "text", - MetaKey: "credentials", - EnvKey: "Infoblox_Creds", - IsRequired: true, - IsSecret: true, + Title: "dns_infoblox", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "Infoblox_Creds", + "Infoblox_Server", + }, + Properties: map[string]providerField{ + "Infoblox_Creds": { + Title: "credentials", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "Server", - Type: "text", - MetaKey: "server", - EnvKey: "Infoblox_Server", - IsRequired: true, + "Infoblox_Server": { + Title: "server", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_inwx.go b/backend/internal/dnsproviders/dns_inwx.go index 1142f597..c0f75cca 100644 --- a/backend/internal/dnsproviders/dns_inwx.go +++ b/backend/internal/dnsproviders/dns_inwx.go @@ -1,45 +1,25 @@ package dnsproviders -const inwxSchema = ` -{ - "type": "object", - "required": [ - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSInwx() Provider { return Provider{ - AcmeshName: "dns_inwx", - Schema: inwxSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "INWX_User", - IsRequired: true, + Title: "dns_inwx", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "INWX_User", + "INWX_Password", + }, + Properties: map[string]providerField{ + "INWX_User": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "INWX_Password", - IsRequired: true, - IsSecret: true, + "INWX_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_ispconfig.go b/backend/internal/dnsproviders/dns_ispconfig.go index 00c1dd1a..f10e0f79 100644 --- a/backend/internal/dnsproviders/dns_ispconfig.go +++ b/backend/internal/dnsproviders/dns_ispconfig.go @@ -1,66 +1,35 @@ package dnsproviders -const ispConfigSchema = ` -{ - "type": "object", - "required": [ - "user", - "password", - "api_url" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - }, - "api_url": { - "type": "string", - "minLength": 1 - }, - "insecure": { - "type": "string" - } - } -} -` - func getDNSIspconfig() Provider { return Provider{ - AcmeshName: "dns_ispconfig", - Schema: ispConfigSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "ISPC_User", - IsRequired: true, + Title: "dns_ispconfig", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "ISPC_User", + "ISPC_Password", + "ISPC_Api", + }, + Properties: map[string]providerField{ + "ISPC_User": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "ISPC_Password", - IsRequired: true, - IsSecret: true, + "ISPC_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "API URL", - Type: "text", - MetaKey: "api_url", - EnvKey: "ISPC_Api", - IsRequired: true, + "ISPC_Api": { + Title: "api-url", + Type: "string", + MinLength: 1, }, - { - Name: "Insecure", - Type: "bool", - MetaKey: "insecure", - EnvKey: "ISPC_Api_Insecure", + "ISPC_Api_Insecure": { + Title: "insecure", + Type: "boolean", }, }, } diff --git a/backend/internal/dnsproviders/dns_kinghost.go b/backend/internal/dnsproviders/dns_kinghost.go index 8e3dbcba..a497acc8 100644 --- a/backend/internal/dnsproviders/dns_kinghost.go +++ b/backend/internal/dnsproviders/dns_kinghost.go @@ -1,45 +1,25 @@ package dnsproviders -const kinghostSchema = ` -{ - "type": "object", - "required": [ - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSKinghost() Provider { return Provider{ - AcmeshName: "dns_kinghost", - Schema: kinghostSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "KINGHOST_Username", - IsRequired: true, + Title: "dns_kinghost", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "KINGHOST_Username", + "KINGHOST_Password", + }, + Properties: map[string]providerField{ + "KINGHOST_Username": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "KINGHOST_Password", - IsRequired: true, - IsSecret: true, + "KINGHOST_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_linode_v4.go b/backend/internal/dnsproviders/dns_linode_v4.go index b79ff532..ddafeca1 100644 --- a/backend/internal/dnsproviders/dns_linode_v4.go +++ b/backend/internal/dnsproviders/dns_linode_v4.go @@ -4,16 +4,18 @@ package dnsproviders // needs 15 minute sleep, not currently implemented func getDNSLinodeV4() Provider { return Provider{ - AcmeshName: "dns_linode_v4", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "LINODE_V4_API_KEY", - IsRequired: true, - IsSecret: true, + Title: "dns_linode_v4", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "LINODE_V4_API_KEY", + }, + Properties: map[string]providerField{ + "LINODE_V4_API_KEY": { + Title: "api-key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_loopia.go b/backend/internal/dnsproviders/dns_loopia.go index 1708192e..64d22d32 100644 --- a/backend/internal/dnsproviders/dns_loopia.go +++ b/backend/internal/dnsproviders/dns_loopia.go @@ -1,57 +1,31 @@ package dnsproviders -const loopiaSchema = ` -{ - "type": "object", - "required": [ - "api_url", - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "api_url": { - "type": "string", - "minLength": 4 - }, - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSLoopia() Provider { return Provider{ - AcmeshName: "dns_loopia", - Schema: loopiaSchema, - Fields: []providerField{ - { - Name: "API URL", - Type: "text", - MetaKey: "api_url", - EnvKey: "LOOPIA_Api", - IsRequired: true, + Title: "dns_loopia", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "LOOPIA_Api", + "LOOPIA_User", + "LOOPIA_Password", + }, + Properties: map[string]providerField{ + "LOOPIA_Api": { + Title: "api-url", + Type: "string", + MinLength: 4, }, - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "LOOPIA_User", - IsRequired: true, + "LOOPIA_User": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "LOOPIA_Password", - IsRequired: true, - IsSecret: true, + "LOOPIA_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_lua.go b/backend/internal/dnsproviders/dns_lua.go index 6c24a456..b79a87a7 100644 --- a/backend/internal/dnsproviders/dns_lua.go +++ b/backend/internal/dnsproviders/dns_lua.go @@ -1,45 +1,25 @@ package dnsproviders -const luaDNSSchema = ` -{ - "type": "object", - "required": [ - "api_key", - "email" - ], - "additionalProperties": false, - "properties": { - "api_key": { - "type": "string", - "minLength": 1 - }, - "email": { - "type": "string", - "minLength": 5 - } - } -} -` - func getDNSLua() Provider { return Provider{ - AcmeshName: "dns_lua", - Schema: luaDNSSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "LUA_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_lua", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "LUA_Key", + "LUA_Email", + }, + Properties: map[string]providerField{ + "LUA_Key": { + Title: "key", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "Email", - Type: "text", - MetaKey: "email", - EnvKey: "LUA_Email", - IsRequired: true, + "LUA_Email": { + Title: "email", + Type: "string", + MinLength: 5, }, }, } diff --git a/backend/internal/dnsproviders/dns_me.go b/backend/internal/dnsproviders/dns_me.go index bf888ca5..96b3d4a2 100644 --- a/backend/internal/dnsproviders/dns_me.go +++ b/backend/internal/dnsproviders/dns_me.go @@ -2,23 +2,24 @@ package dnsproviders func getDNSMe() Provider { return Provider{ - AcmeshName: "dns_me", - Schema: commonKeySecretSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "ME_Key", - IsRequired: true, + Title: "dns_me", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "ME_Key", + "ME_Secret", + }, + Properties: map[string]providerField{ + "ME_Key": { + Title: "key", + Type: "string", + MinLength: 1, }, - { - Name: "Secret", - Type: "password", - MetaKey: "secret", - EnvKey: "ME_Secret", - IsRequired: true, - IsSecret: true, + "ME_Secret": { + Title: "secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_namecom.go b/backend/internal/dnsproviders/dns_namecom.go index 5d040d92..9a72de6c 100644 --- a/backend/internal/dnsproviders/dns_namecom.go +++ b/backend/internal/dnsproviders/dns_namecom.go @@ -1,45 +1,25 @@ package dnsproviders -const nameComSchema = ` -{ - "type": "object", - "required": [ - "username", - "token" - ], - "additionalProperties": false, - "properties": { - "username": { - "type": "string", - "minLength": 1 - }, - "token": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSNamecom() Provider { return Provider{ - AcmeshName: "dns_namecom", - Schema: nameComSchema, - Fields: []providerField{ - { - Name: "Username", - Type: "text", - MetaKey: "username", - EnvKey: "Namecom_Username", - IsRequired: true, + Title: "dns_namecom", + Type: "object", + AdditionalProperties: false, + Required: []string{ + "Namecom_Username", + "Namecom_Token", + }, + Properties: map[string]providerField{ + "Namecom_Username": { + Title: "username", + Type: "string", + MinLength: 1, }, - { - Name: "Token", - Type: "text", - MetaKey: "token", - EnvKey: "Namecom_Token", - IsRequired: true, - IsSecret: true, + "Namecom_Token": { + Title: "token", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_namesilo.go b/backend/internal/dnsproviders/dns_namesilo.go index 72ff6c29..b3b961db 100644 --- a/backend/internal/dnsproviders/dns_namesilo.go +++ b/backend/internal/dnsproviders/dns_namesilo.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSNamesilo() Provider { return Provider{ - AcmeshName: "dns_namesilo", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "Namesilo_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_namesilo", + AdditionalProperties: false, + Required: []string{ + "Namesilo_Key", + }, + Properties: map[string]providerField{ + "Namesilo_Key": { + Title: "api-key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_nsone.go b/backend/internal/dnsproviders/dns_nsone.go index b02a1788..73725670 100644 --- a/backend/internal/dnsproviders/dns_nsone.go +++ b/backend/internal/dnsproviders/dns_nsone.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSOne() Provider { return Provider{ - AcmeshName: "dns_nsone", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "NS1_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_nsone", + AdditionalProperties: false, + Required: []string{ + "NS1_Key", + }, + Properties: map[string]providerField{ + "NS1_Key": { + Title: "key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_pdns.go b/backend/internal/dnsproviders/dns_pdns.go index 35db50ee..21d1c7d1 100644 --- a/backend/internal/dnsproviders/dns_pdns.go +++ b/backend/internal/dnsproviders/dns_pdns.go @@ -1,68 +1,35 @@ package dnsproviders -const powerDNSSchema = ` -{ - "type": "object", - "required": [ - "url", - "server_id", - "token", - "ttl" - ], - "additionalProperties": false, - "properties": { - "url": { - "type": "string", - "minLength": 1 - }, - "server_id": { - "type": "string", - "minLength": 1 - }, - "token": { - "type": "string", - "minLength": 1 - }, - "ttl": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSPDNS() Provider { return Provider{ - AcmeshName: "dns_pdns", - Schema: powerDNSSchema, - Fields: []providerField{ - { - Name: "URL", - Type: "text", - MetaKey: "url", - EnvKey: "PDNS_Url", - IsRequired: true, + Title: "dns_pdns", + AdditionalProperties: false, + Required: []string{ + "PDNS_Url", + "PDNS_ServerId", + "PDNS_Token", + "PDNS_Ttl", + }, + Properties: map[string]providerField{ + "PDNS_Url": { + Title: "url", + Type: "string", + MinLength: 1, }, - { - Name: "Server ID", - Type: "text", - MetaKey: "server_id", - EnvKey: "PDNS_ServerId", - IsRequired: true, + "PDNS_ServerId": { + Title: "server-id", + Type: "string", + MinLength: 1, }, - { - Name: "Token", - Type: "text", - MetaKey: "token", - EnvKey: "PDNS_Token", - IsRequired: true, + "PDNS_Token": { + Title: "token", + Type: "string", + MinLength: 1, }, - { - Name: "TTL", - Type: "number", - MetaKey: "ttl", - EnvKey: "PDNS_Ttl", - IsRequired: true, + "PDNS_Ttl": { + Title: "ttl", + Type: "integer", + Minimum: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_selectel.go b/backend/internal/dnsproviders/dns_selectel.go index de0328c7..0ad79d7f 100644 --- a/backend/internal/dnsproviders/dns_selectel.go +++ b/backend/internal/dnsproviders/dns_selectel.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSSelectel() Provider { return Provider{ - AcmeshName: "dns_selectel", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "SL_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_selectel", + AdditionalProperties: false, + Required: []string{ + "SL_Key", + }, + Properties: map[string]providerField{ + "SL_Key": { + Title: "api-key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_servercow.go b/backend/internal/dnsproviders/dns_servercow.go index 9b937116..cb2c0ba3 100644 --- a/backend/internal/dnsproviders/dns_servercow.go +++ b/backend/internal/dnsproviders/dns_servercow.go @@ -1,45 +1,24 @@ package dnsproviders -const servercowSchema = ` -{ - "type": "object", - "required": [ - "user", - "password" - ], - "additionalProperties": false, - "properties": { - "user": { - "type": "string", - "minLength": 1 - }, - "password": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSServercow() Provider { return Provider{ - AcmeshName: "dns_servercow", - Schema: servercowSchema, - Fields: []providerField{ - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "SERVERCOW_API_Username", - IsRequired: true, + Title: "dns_servercow", + AdditionalProperties: false, + Required: []string{ + "SERVERCOW_API_Username", + "SERVERCOW_API_Password", + }, + Properties: map[string]providerField{ + "SERVERCOW_API_Username": { + Title: "user", + Type: "string", + MinLength: 1, }, - { - Name: "Password", - Type: "password", - MetaKey: "password", - EnvKey: "SERVERCOW_API_Password", - IsRequired: true, - IsSecret: true, + "SERVERCOW_API_Password": { + Title: "password", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_tele3.go b/backend/internal/dnsproviders/dns_tele3.go index 68896a91..9ebb15bf 100644 --- a/backend/internal/dnsproviders/dns_tele3.go +++ b/backend/internal/dnsproviders/dns_tele3.go @@ -2,23 +2,23 @@ package dnsproviders func getDNSTele3() Provider { return Provider{ - AcmeshName: "dns_tele3", - Schema: commonKeySecretSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "TELE3_Key", - IsRequired: true, + Title: "dns_tele3", + AdditionalProperties: false, + Required: []string{ + "TELE3_Key", + "TELE3_Secret", + }, + Properties: map[string]providerField{ + "TELE3_Key": { + Title: "key", + Type: "string", + MinLength: 1, }, - { - Name: "Secret", - Type: "password", - MetaKey: "secret", - EnvKey: "TELE3_Secret", - IsRequired: true, - IsSecret: true, + "TELE3_Secret": { + Title: "secret", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_unoeuro.go b/backend/internal/dnsproviders/dns_unoeuro.go index 8524a89b..59a3ece1 100644 --- a/backend/internal/dnsproviders/dns_unoeuro.go +++ b/backend/internal/dnsproviders/dns_unoeuro.go @@ -1,46 +1,25 @@ package dnsproviders -const unoEuroSchema = ` -{ - "type": "object", - "required": [ - "api_key", - "user" - ], - "additionalProperties": false, - "properties": { - "api_key": { - "type": "string", - "minLength": 1 - }, - "user": { - "type": "string", - "minLength": 1 - } - } -} -` - func getDNSUnoeuro() Provider { return Provider{ - AcmeshName: "dns_unoeuro", - Schema: unoEuroSchema, - Fields: []providerField{ - { - Name: "Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "UNO_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_unoeuro", + AdditionalProperties: false, + Required: []string{ + "UNO_Key", + "UNO_User", + }, + Properties: map[string]providerField{ + "UNO_Key": { + Title: "key", + Type: "string", + MinLength: 1, + IsSecret: true, }, - { - Name: "User", - Type: "text", - MetaKey: "user", - EnvKey: "UNO_User", - IsRequired: true, - IsSecret: true, + "UNO_User": { + Title: "user", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_vscale.go b/backend/internal/dnsproviders/dns_vscale.go index 59463cf8..ccf5632c 100644 --- a/backend/internal/dnsproviders/dns_vscale.go +++ b/backend/internal/dnsproviders/dns_vscale.go @@ -2,15 +2,16 @@ package dnsproviders func getDNSVscale() Provider { return Provider{ - AcmeshName: "dns_vscale", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "VSCALE_API_KEY", - IsRequired: true, + Title: "dns_vscale", + AdditionalProperties: false, + Required: []string{ + "VSCALE_API_KEY", + }, + Properties: map[string]providerField{ + "VSCALE_API_KEY": { + Title: "api-key", + Type: "string", + MinLength: 1, }, }, } diff --git a/backend/internal/dnsproviders/dns_yandex.go b/backend/internal/dnsproviders/dns_yandex.go index 7812069e..8ee7b1d7 100644 --- a/backend/internal/dnsproviders/dns_yandex.go +++ b/backend/internal/dnsproviders/dns_yandex.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSYandex() Provider { return Provider{ - AcmeshName: "dns_yandex", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "Token", - Type: "password", - MetaKey: "api_key", - EnvKey: "PDD_Token", - IsRequired: true, - IsSecret: true, + Title: "dns_yandex", + AdditionalProperties: false, + Required: []string{ + "PDD_Token", + }, + Properties: map[string]providerField{ + "PDD_Token": { + Title: "token", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_zilore.go b/backend/internal/dnsproviders/dns_zilore.go index 687a0420..e7ade448 100644 --- a/backend/internal/dnsproviders/dns_zilore.go +++ b/backend/internal/dnsproviders/dns_zilore.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSDNZilore() Provider { return Provider{ - AcmeshName: "dns_zilore", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "text", - MetaKey: "api_key", - EnvKey: "Zilore_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_zilore", + AdditionalProperties: false, + Required: []string{ + "Zilore_Key", + }, + Properties: map[string]providerField{ + "Zilore_Key": { + Title: "api-key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/dnsproviders/dns_zonomi.go b/backend/internal/dnsproviders/dns_zonomi.go index 052e1732..7f38a157 100644 --- a/backend/internal/dnsproviders/dns_zonomi.go +++ b/backend/internal/dnsproviders/dns_zonomi.go @@ -2,16 +2,17 @@ package dnsproviders func getDNSZonomi() Provider { return Provider{ - AcmeshName: "dns_zonomi", - Schema: commonKeySchema, - Fields: []providerField{ - { - Name: "API Key", - Type: "password", - MetaKey: "api_key", - EnvKey: "ZM_Key", - IsRequired: true, - IsSecret: true, + Title: "dns_zonomi", + AdditionalProperties: false, + Required: []string{ + "ZM_Key", + }, + Properties: map[string]providerField{ + "ZM_Key": { + Title: "api-key", + Type: "string", + MinLength: 1, + IsSecret: true, }, }, } diff --git a/backend/internal/entity/dnsprovider/model.go b/backend/internal/entity/dnsprovider/model.go index 34253bea..0514c260 100644 --- a/backend/internal/entity/dnsprovider/model.go +++ b/backend/internal/entity/dnsprovider/model.go @@ -87,15 +87,24 @@ func (m *Model) GetAcmeShEnvVars() ([]string, error) { return nil, err } - envs := make([]string, 0) - - // Then, using the meta, convert to env vars - envPairs := acmeDNSProvider.GetAcmeEnvVars(m.Meta.Decoded) - logger.Debug("meta: %+v", m.Meta) - logger.Debug("envPairs: %+v", envPairs) - for envName, envValue := range envPairs { - envs = append(envs, fmt.Sprintf(`%s=%v`, envName, envValue)) - } - + // Convert the meta interface to envs slice for use by acme.sh + envs := getEnvsFromMeta(m.Meta.Decoded) return envs, nil } + +func getEnvsFromMeta(meta interface{}) []string { + if rec, ok := meta.(map[string]interface{}); ok { + envs := make([]string, 0) + for key, val := range rec { + if f, ok := val.(string); ok { + envs = append(envs, fmt.Sprintf(`%s=%v`, key, f)) + } else if f, ok := val.(int); ok { + envs = append(envs, fmt.Sprintf(`%s=%d`, key, f)) + } + } + return envs + } else { + logger.Debug("getEnvsFromMeta: meta is not an map of strings") + return nil + } +} diff --git a/frontend/package.json b/frontend/package.json index f888dc76..a444b4d3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,9 +3,9 @@ "version": "3.0.0", "private": true, "dependencies": { - "@chakra-ui/react": "^2.2.4", - "@emotion/react": "^11", - "@emotion/styled": "^11.9.3", + "@chakra-ui/react": "^2.4.7", + "@emotion/react": "^11.10.5", + "@emotion/styled": "^11.10.5", "@testing-library/jest-dom": "5.16.4", "@testing-library/react": "13.3.0", "@types/humps": "^2.0.2", @@ -34,7 +34,7 @@ "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", "formik": "^2.2.9", - "framer-motion": "^6", + "framer-motion": "^8.4.2", "humps": "^2.0.1", "jest-date-mock": "1.0.8", "jest-fetch-mock": "3.0.3", @@ -59,7 +59,7 @@ "react-table": "7.8.0", "rooks": "5.11.8", "tmp": "^0.2.1", - "typescript": "^4.7.4" + "typescript": "^4.9.4" }, "scripts": { "start": "react-scripts start", diff --git a/frontend/src/api/npm/base.ts b/frontend/src/api/npm/base.ts index 8d6e4719..a1d90656 100644 --- a/frontend/src/api/npm/base.ts +++ b/frontend/src/api/npm/base.ts @@ -28,21 +28,22 @@ function buildBody(data?: Record) { } } -async function processResponse(response: Response) { +async function processResponse(response: Response, skipCamelize = false) { const payload = await response.json(); if (!response.ok) { throw new Error(payload.error.message); } - return camelizeKeys(payload) as any; + return (skipCamelize ? payload : camelizeKeys(payload)) as any; } interface GetArgs { url: string; params?: queryString.StringifiableRecord; + skipCamelize?: boolean; } export async function get( - { url, params }: GetArgs, + { url, params, skipCamelize }: GetArgs, abortController?: AbortController, ) { const apiUrl = buildUrl({ url, params }); @@ -50,7 +51,7 @@ export async function get( const signal = abortController?.signal; const headers = buildAuthHeader(); const response = await fetch(apiUrl, { method, headers, signal }); - return processResponse(response); + return processResponse(response, skipCamelize); } interface PostArgs { diff --git a/frontend/src/api/npm/getDNSProvidersAcmesh.ts b/frontend/src/api/npm/getDNSProvidersAcmesh.ts index 03654c61..b46d55f9 100644 --- a/frontend/src/api/npm/getDNSProvidersAcmesh.ts +++ b/frontend/src/api/npm/getDNSProvidersAcmesh.ts @@ -7,6 +7,8 @@ export async function getDNSProvidersAcmesh( const { result } = await api.get( { url: "dns-providers/acmesh", + // Important for this endpoint: + skipCamelize: true, }, abortController, ); diff --git a/frontend/src/api/npm/models.ts b/frontend/src/api/npm/models.ts index 20267913..4d7bd21d 100644 --- a/frontend/src/api/npm/models.ts +++ b/frontend/src/api/npm/models.ts @@ -74,18 +74,25 @@ export interface DNSProvider { meta: any; } -export interface DNSProvidersAcmeshField { - name: string; +export interface DNSProvidersAcmeshProperty { + title: string; type: string; - metaKey: string; - isRequired: boolean; + additionalProperties: boolean; + minimum: number; + maximum: number; + minLength: number; + maxLength: number; + pattern: string; isSecret: boolean; } export interface DNSProvidersAcmesh { - name: string; - acmeshName: string; - fields: DNSProvidersAcmeshField[]; + title: string; + type: string; + additionalProperties: boolean; + minProperties: number; + required: string[]; + properties: any; } export interface Host { diff --git a/frontend/src/locale/src/en.json b/frontend/src/locale/src/en.json index f48f37ff..2db87b05 100644 --- a/frontend/src/locale/src/en.json +++ b/frontend/src/locale/src/en.json @@ -137,6 +137,108 @@ "acmesh.dns_zonomi": { "defaultMessage": "Zonomi" }, + "acmesh-property.access-key-id": { + "defaultMessage": "Access Key ID" + }, + "acmesh-property.account-id": { + "defaultMessage": "Account ID" + }, + "acmesh-property.api-key": { + "defaultMessage": "API Key" + }, + "acmesh-property.api-url": { + "defaultMessage": "API URL" + }, + "acmesh-property.app-id": { + "defaultMessage": "APP ID" + }, + "acmesh-property.auth-id": { + "defaultMessage": "Auth ID" + }, + "acmesh-property.base-url": { + "defaultMessage": "Base URL" + }, + "acmesh-property.client-id": { + "defaultMessage": "Client ID" + }, + "acmesh-property.client-secret": { + "defaultMessage": "Client Secret" + }, + "acmesh-property.credentials": { + "defaultMessage": "Credentials" + }, + "acmesh-property.context": { + "defaultMessage": "Context" + }, + "acmesh-property.customer": { + "defaultMessage": "Customer" + }, + "acmesh-property.email": { + "defaultMessage": "Email" + }, + "acmesh-property.id": { + "defaultMessage": "ID" + }, + "acmesh-property.insecure": { + "defaultMessage": "Insecure" + }, + "acmesh-property.key": { + "defaultMessage": "Key" + }, + "acmesh-property.oauth-token": { + "defaultMessage": "OAuth Token" + }, + "acmesh-property.otp-secret": { + "defaultMessage": "OTP Secret" + }, + "acmesh-property.password": { + "defaultMessage": "Password" + }, + "acmesh-property.secret": { + "defaultMessage": "Secret" + }, + "acmesh-property.secret-access-key": { + "defaultMessage": "Secret Access Key" + }, + "acmesh-property.server": { + "defaultMessage": "Server" + }, + "acmesh-property.server-id": { + "defaultMessage": "Server ID" + }, + "acmesh-property.slow-rate": { + "defaultMessage": "Slow Rate" + }, + "acmesh-property.subdomain": { + "defaultMessage": "Subdomain" + }, + "acmesh-property.subscription-id": { + "defaultMessage": "Subscription ID" + }, + "acmesh-property.sub-auth-id": { + "defaultMessage": "Sub-Auth ID" + }, + "acmesh-property.tenant-id": { + "defaultMessage": "Tenant ID" + }, + "acmesh-property.token": { + "defaultMessage": "Token" + }, + "acmesh-property.ttl": { + "defaultMessage": "TTL" + }, + "acmesh-property.user": { + "defaultMessage": "User" + }, + "acmesh-property.username": { + "defaultMessage": "Username" + }, + "acmesh-property.url": { + "defaultMessage": "URL" + }, + "acmesh-property.zone-id": { + "defaultMessage": "Zone ID" + }, "action.edit": { "defaultMessage": "Edit" }, diff --git a/frontend/src/modals/DNSProviderCreateModal copy.tsx b/frontend/src/modals/DNSProviderCreateModal copy.tsx new file mode 100644 index 00000000..ef1a1cae --- /dev/null +++ b/frontend/src/modals/DNSProviderCreateModal copy.tsx @@ -0,0 +1,284 @@ +import { useEffect, useState } from "react"; + +import { + Button, + Checkbox, + FormControl, + FormErrorMessage, + FormLabel, + Input, + Modal, + ModalOverlay, + ModalContent, + ModalHeader, + ModalCloseButton, + ModalBody, + ModalFooter, + Select, + Stack, + useToast, +} from "@chakra-ui/react"; +import { + DNSProvider, + DNSProvidersAcmesh, + DNSProvidersAcmeshProperty, +} from "api/npm"; +import { PrettyButton } from "components"; +import { Formik, Form, Field } from "formik"; +import { useSetDNSProvider, useDNSProvidersAcmesh } from "hooks"; +import { intl } from "locale"; +import { validateString } from "modules/Validations"; + +interface DNSProviderCreateModalProps { + isOpen: boolean; + onClose: () => void; +} +function DNSProviderCreateModal({ + isOpen, + onClose, +}: DNSProviderCreateModalProps) { + const toast = useToast(); + const { mutate: setDNSProvider } = useSetDNSProvider(); + const { + isLoading: acmeshIsLoading, + // isError: acmeshIsError, + // error: acmeshError, + data: acmeshDataResp, + } = useDNSProvidersAcmesh(); + + const [acmeshData, setAcmeshData] = useState([] as DNSProvidersAcmesh[]); + const [acmeshItem, setAcmeshItem] = useState(""); + + useEffect(() => { + setAcmeshData(acmeshDataResp || []); + }, [acmeshDataResp]); + + const onSubmit = async ( + payload: DNSProvider, + { setErrors, setSubmitting }: any, + ) => { + // TODO: filter out the meta object and only include items that apply to the acmesh provider selected + + const showErr = (msg: string) => { + toast({ + description: intl.formatMessage({ + id: `error.${msg}`, + }), + status: "error", + position: "top", + duration: 3000, + isClosable: true, + }); + }; + + setDNSProvider(payload, { + onError: (err: any) => { + if (err.message === "ca-bundle-does-not-exist") { + setErrors({ + caBundle: intl.formatMessage({ + id: `error.${err.message}`, + }), + }); + } else { + showErr(err.message); + } + }, + onSuccess: () => onClose(), + onSettled: () => setSubmitting(false), + }); + }; + + const getAcmeshItem = (name: string): DNSProvidersAcmesh | undefined => { + return acmeshData.find((item) => item.title === name); + }; + + const fullItem = getAcmeshItem(acmeshItem); + const itemProperties = fullItem?.properties; + + const renderInputType = ( + field: any, + fieldName: string, + f: DNSProvidersAcmeshProperty, + value: any, + ) => { + if (f.type === "bool") { + return ( + + {f.title} + + ); + } + + let type = "text"; + let props: any = {}; + if (fullItem?.required.indexOf(fieldName) !== -1) { + // This is required + props.required = true; + } + if (f.type === "string") { + props.minLength = f.minLength || null; + props.maxLength = f.maxLength || null; + props.pattern = f.pattern || null; + } + if (f.type === "integer") { + type = "number"; + props.min = f.minimum || null; + props.max = f.maximum || null; + } + if (f.isSecret) { + type = "password"; + } + + return ( + + ); + }; + + return ( + + + + {acmeshIsLoading ? ( + "loading" + ) : ( + + {({ isSubmitting, handleChange, values, setValues }) => ( +
+ + {intl.formatMessage({ id: "dns-provider.create" })} + + + + + + {({ field, form }: any) => ( + + + {intl.formatMessage({ + id: "dns-provider.name", + })} + + + + {form.errors.name} + + + )} + + + {({ field, form }: any) => ( + + + {intl.formatMessage({ + id: "dns-provider.acmesh-name", + })} + + + + {form.errors.acmeshName} + + + )} + + {acmeshItem !== "" ?
: null} + {itemProperties + ? Object.keys(itemProperties).map((fieldName, _) => { + const f = itemProperties[fieldName]; + const name = `meta[${fieldName}]`; + return ( + + {({ field, form }: any) => ( + + {f.type !== "bool" ? ( + + {f.title} + {/* todo: locale for this*/} + + ) : null} + {renderInputType( + field, + fieldName, + f, + values.meta[f.title], + )} + + {form.errors[name]} + + + )} + + ); + }) + : null} +
+
+ + + {intl.formatMessage({ id: "form.save" })} + + + + + )} +
+ )} +
+
+ ); +} + +export { DNSProviderCreateModal }; diff --git a/frontend/src/modals/DNSProviderCreateModal.tsx b/frontend/src/modals/DNSProviderCreateModal.tsx index 832db913..f8e39f50 100644 --- a/frontend/src/modals/DNSProviderCreateModal.tsx +++ b/frontend/src/modals/DNSProviderCreateModal.tsx @@ -21,7 +21,7 @@ import { import { DNSProvider, DNSProvidersAcmesh, - DNSProvidersAcmeshField, + DNSProvidersAcmeshProperty, } from "api/npm"; import { PrettyButton } from "components"; import { Formik, Form, Field } from "formik"; @@ -53,11 +53,17 @@ function DNSProviderCreateModal({ setAcmeshData(acmeshDataResp || []); }, [acmeshDataResp]); + const onModalClose = () => { + setAcmeshItem(""); + onClose(); + }; + const onSubmit = async ( payload: DNSProvider, { setErrors, setSubmitting }: any, ) => { // TODO: filter out the meta object and only include items that apply to the acmesh provider selected + console.log("PAYLOAD:", payload); const showErr = (msg: string) => { toast({ @@ -83,35 +89,63 @@ function DNSProviderCreateModal({ showErr(err.message); } }, - onSuccess: () => onClose(), + onSuccess: () => onModalClose(), onSettled: () => setSubmitting(false), }); }; const getAcmeshItem = (name: string): DNSProvidersAcmesh | undefined => { - return acmeshData.find((item) => item.acmeshName === name); + return acmeshData.find((item) => item.title === name); }; + const fullItem = getAcmeshItem(acmeshItem); + const itemProperties = fullItem?.properties; + const renderInputType = ( field: any, - f: DNSProvidersAcmeshField, + fieldName: string, + f: DNSProvidersAcmeshProperty, value: any, ) => { - if (f.type === "bool") { + if (["bool", "boolean"].indexOf(f.type) !== -1) { return ( - - {f.name} + + {f.title} ); } + let type = "text"; + let props: any = {}; + + if (f.type === "string") { + props.minLength = f.minLength || null; + props.maxLength = f.maxLength || null; + props.pattern = f.pattern || null; + } + if (f.type === "integer") { + type = "number"; + props.min = f.minimum || null; + props.max = f.maximum || null; + } + if (f.isSecret) { + type = "password"; + } + return ( - + ); }; return ( - + {acmeshIsLoading ? ( @@ -135,29 +169,6 @@ function DNSProviderCreateModal({ - - {({ field, form }: any) => ( - - - {intl.formatMessage({ - id: "dns-provider.name", - })} - - - - {form.errors.name} - - - )} - {({ field, form }: any) => ( {acmeshData.map((item: DNSProvidersAcmesh) => { return ( - ); @@ -196,42 +205,84 @@ function DNSProviderCreateModal({ )} - {acmeshItem !== "" ?
: null} - {getAcmeshItem(acmeshItem)?.fields.map((f) => { - const name = `meta[${f.metaKey}]`; - return ( - + {acmeshItem !== "" ? ( + <> + {({ field, form }: any) => ( - {f.type !== "bool" ? ( - {f.name} - ) : null} - {renderInputType( - field, - f, - values.meta[f.metaKey], - )} + isRequired + isInvalid={form.errors.name && form.touched.name}> + + {intl.formatMessage({ + id: "dns-provider.name", + })} + + - {form.errors[name]} + {form.errors.name} )} - ); - })} + {itemProperties + ? Object.keys(itemProperties).map((fieldName, _) => { + const f = itemProperties[fieldName]; + const name = `meta[${fieldName}]`; + return ( + + {({ field, form }: any) => ( + + {f.type !== "bool" ? ( + + {intl.formatMessage({ + id: `acmesh-property.${f.title}`, + })} + + ) : null} + {renderInputType( + field, + fieldName, + f, + values.meta[f.title], + )} + + {form.errors[name]} + + + )} + + ); + }) + : null} + + ) : null}
{intl.formatMessage({ id: "form.save" })} - diff --git a/frontend/yarn.lock b/frontend/yarn.lock index ed470670..74a06cda 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -164,7 +164,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== @@ -515,7 +515,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.18.6": +"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== @@ -1027,7 +1027,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== @@ -1072,557 +1072,790 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@chakra-ui/accordion@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.0.6.tgz#e92a273ee50a3bb2e7bfb8140bd298c737733082" - integrity sha512-1wPSSk2ZbiIHV4W/HMrv0t+jxiLMTDFVFd92ru8loFtU1AjNJ068OlJJs2V5hz4mbriC0nDctMxDJmT0zmPNaA== +"@chakra-ui/accordion@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.1.6.tgz#b8d6d8890eb57e31bcf4858829ce2fb3559ab3b0" + integrity sha512-C4JHxg9V2Y+MiuXO06x6o5pRBz0jWSb8BgWHrz9/5Zrm5zcoxenB7lHP4QiTF0vx/ZCSf0vari7gLVvM93klbA== dependencies: - "@chakra-ui/descendant" "3.0.3" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/transition" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/descendant" "3.0.12" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/transition" "2.0.13" -"@chakra-ui/alert@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.0.4.tgz#944613e20993a294f20b509d5ef09b41c5b48098" - integrity sha512-n9YA7IivGI5DzTeSGoqjTnI+Rvk5FHRaieAJAlCoFbj+5QQQu7oOGvWRVVbe/SAYONV0yG35PBiv0zGGV0whtg== +"@chakra-ui/alert@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.0.15.tgz#ef3e2d1b56aa8e85877e9f1d616c3176ba4bcbd7" + integrity sha512-31V4l+dpZblUdidSLCw7sqOFxYoGFaxYEdN2jX1T31hViQubBAuuenwBoAQGNCM3s2zm6HVJTRUJCXxSCViJKQ== dependencies: - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/spinner" "^2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/spinner" "2.0.12" -"@chakra-ui/anatomy@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.0.1.tgz#3be152b6eaef93e0727cd12d3269b2e4374335d2" - integrity sha512-lbOUfPmCtgIe0G7Iu6C2MaFP3FKOHgKWxDrYc3498TQ7/z5N1r7AO6jB+gFRGDbxJNLjRGOLG7tV0bufagGTUw== +"@chakra-ui/anatomy@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.1.1.tgz#819a1458ff727157e5500a69fc26bfea6e944495" + integrity sha512-LUHAoqJAgxAqmyckG5bUpBrfEo1FleEyY+1A8hkWciy58gZ+h3GoY9oBpHcdo7XdHPpy3G+3hieK/7i9NLwxAw== + +"@chakra-ui/avatar@2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.2.tgz#ac93579a499b2a87406f32a122efa41f825de785" + integrity sha512-wFDK1wT5kQxkpCAX6mPhx9kh0Pi2RnfN32bCRFio4Mmiq0ltfSEWi3/XxlawDr31Ch3T3qbtPVLqn355B4U9ZA== dependencies: - "@chakra-ui/theme-tools" "^2.0.2" + "@chakra-ui/image" "2.0.13" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/avatar@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.0.5.tgz#10e8e35a7c99eda6f3ea99bae073adca67a46af2" - integrity sha512-FkheIKRUY9eltGgEyiOUIrBHQdgLA3Z/6WydIAU929SuAN2JuQnDZPH8BauTsddW+R3qhRLu1+tIC+HQtOTLxA== - dependencies: - "@chakra-ui/image" "2.0.5" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/breadcrumb@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.0.4.tgz#7d1491e2cbead2524f8c635a4f57f38e42b33849" - integrity sha512-Vr4H09I03DSGuZk3aST2af2ln69S3cO3/2E9gkzeWj3Wo3AYZrwuxUTtujmERao6EWOKlMqaA1x/hNpRubW9JA== - dependencies: - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/button@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.4.tgz#76b36c0d9a672109b6232e5037dba94118fd708b" - integrity sha512-bhae6Vw0rrwkyz72Y0//aWO80jM6VblFf9kuMnHLtO1y+I3ptWnx7jjN3865xn/PJl3lu1AzuHn67DuNuvZ2UQ== - dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/spinner" "2.0.4" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/checkbox@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.1.3.tgz#c08c9ac50cb89fe33f4d110def6a023bc51c37a0" - integrity sha512-1Nzh4ETLEuSAYm8Godgh9i1veUz559lHtvpjOkg8nrmOoN/51yyXfon0QCTJBq/1umGcHZmXrBrJgj2Wd9f+ZQ== - dependencies: - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.4" - "@zag-js/focus-visible" "0.1.0" - -"@chakra-ui/clickable@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.4.tgz#7d1006b962b9ec04e926376bdeb317ec319aeed0" - integrity sha512-20otkOHNMrPMYbpRMSzX6AQBIUwbtN97ua+R0E+yG4DrgbXjOQvYyMAbSdBsKbGf0egx4c+4RlGmVf2kVA8Ahg== - dependencies: - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/close-button@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.4.tgz#948f10cb58115539f63ec5417c24aeace30a41dd" - integrity sha512-IfRJXK3ADEnnECoyE+gKGVtiIZoxtBiu17z/EeJriswV1x82Iw5ltptNUz0JoDrTD794a9YSnX7rDPI9wR5IMw== - dependencies: - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/color-mode@2.1.2": +"@chakra-ui/breadcrumb@2.1.2": version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.2.tgz#ff41168d96494186ff09f24e161c8b15ae347fa8" - integrity sha512-HJv+Jaizsg+uyW9TIjNwvkhUdD6NEBQLabAMOAk03CNtv/k4pTc56yLwn9TCDV06pZsViDpdO+vqgbGAOXiByw== + resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.2.tgz#72cc5a25d35dec7637a2135a2945e66317f6d723" + integrity sha512-NbWg9YKCxo6nbwORpfFkD6bIDvcDdCPPLx+tqIqVwoplpaSPeFV5lzPy4Lg/MS6x6Ko6a/GItGpDQGPuey+iWA== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/control-box@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.4.tgz#c68554de19d340aee1db5ef979e7ec16513b935d" - integrity sha512-jJD+Ka827qBlagKYzTjbKENi6+wgSowb9MHIlMybwnE6AA9qBws/lHHiUEk6S7tZW9BHMJYFeSbZFVtYaQho4A== +"@chakra-ui/breakpoint-utils@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.6.tgz#ed31aeda21ff309eb0102ccd324b1d2096caa08a" + integrity sha512-aigYoZdHtV+PNFr/RTHjbIYK49PsMLvwtpZsowKWJ6xDyPKHtfhwZ2VOBTUyaQf4mXgaB9MNOF46zOTJN8RfLQ== dependencies: - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/counter@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.4.tgz#08df011cb3d8f050c52447b32a8afb78221e9c8b" - integrity sha512-j1y5ZJ+QVN+QotTm6SNNE0u1YFLaPyfiLu0+gspacvC/ugH9vhDwkkzqXJolkThWLbcAdL0I7J6XuAy5XOXKjA== +"@chakra-ui/button@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.14.tgz#9ffc852504a2a6150140e15e46866fd55660ce7e" + integrity sha512-XdP1sB67N2DujDXPWyyXMTjW7frcnbf3yN/3F/asQClZX7ppw8Y36a6uZ94+6Cv67BPc0CokN+m3oQZhINJ+vw== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/spinner" "2.0.12" -"@chakra-ui/css-reset@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.0.1.tgz#53bbc2c48dd9fdfb59af8cb8e20390ad7ddb3688" - integrity sha512-8RhAC7l5RHp9hNDN2M2feZ2wPaoSrgxzqx6VqLTIul2lwucpp1LTlrDlPCBMJe8fp51Q83IOCW4882ktsXxktA== - -"@chakra-ui/descendant@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.3.tgz#9c9b356d04bfdaf6f6d7040576884945b23c5c69" - integrity sha512-uI0B5BO7khb22UWE42W7n3oGjxQkdJl+H5lhX58lAOAjbNsbmd8XbIVXTO/Kb7LvS3sPimkyG8nRC9A1epq4tw== +"@chakra-ui/card@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.1.4.tgz#731bea5cfe76d1768fa0b5bfbee5ca4e6eaac652" + integrity sha512-MO8tjFBX2OZJt+NOthDoKcGRMQW/43NePze8Sju7zXqv1ocq7VB0DvToPLkopgeKaPx6AyYhzRXQjYXLcjYgQw== dependencies: - "@chakra-ui/react-utils" "^2.0.1" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/editable@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-2.0.4.tgz#cb2ddc106dd1a10cf36f84183d821dafed71ba94" - integrity sha512-Xof9NXWzs/3H5MChxcbRmttYKf7MYGDePtRrZvW4GKLhi5fjpbuhzZIeC8XV3Pm1gBCLkyG8WHj3d99SNqdNig== +"@chakra-ui/checkbox@2.2.8": + version "2.2.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.8.tgz#c37e2cc9e5d7c83820de69dc1dc77c23adb7c210" + integrity sha512-ZYllpZBuIXiT5bw/wo4al84W95Ke20/Yh+qELB6edImRMrEJwtpvCo9UDARrZXrhqjuUizN58hh2pMzcrKqyng== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-callback-ref" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + "@chakra-ui/react-use-update-effect" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/visually-hidden" "2.0.14" + "@zag-js/focus-visible" "0.2.1" -"@chakra-ui/focus-lock@2.0.5": +"@chakra-ui/clickable@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.12.tgz#479ed8fd2b1af079f6a630f8b2181b106112dd74" + integrity sha512-boZwlHZ1BdsC4P/1r+SRbKRMG+/UzOgc16Fmhl2QkZquVF6jS6QtJBS1/fL+1N8oijz87nuhBoetNECnfWYN+w== + dependencies: + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/close-button@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.15.tgz#b969d550323566ee0731eb627d9fd729bb185734" + integrity sha512-VY//pwXQj3WBRQGnikE73F38MP/pDqZOV7Wc3pcTNdFoCqLwZl7AQyfjcm2ukgePiDzr/kRJIxgzhTY2DCxDYg== + dependencies: + "@chakra-ui/icon" "3.0.15" + +"@chakra-ui/color-mode@2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.11.tgz#9347c1b81a21b7d68bde1aa4a332f7060c8145d4" + integrity sha512-556wqI/MohJAqzP9AD+YsKGi982TzrsAaRGr7RCY5fChNe/wHraLPjMPNITPjjDQWiUmZYkaEos78/4u3qOdpA== + dependencies: + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + +"@chakra-ui/control-box@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.12.tgz#d1109b3c28214421a5278c3776be499b8d843e83" + integrity sha512-SR2rG917ttCAda9Kh0eqr0X2AWQii2iRrgTks3fbDGi7seV7m3tkrpK2hr7rPz5zX0UoJi6CFO04Q6cSclFylw== + +"@chakra-ui/counter@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.12.tgz#68007b194aed7e5e55e185fddd38c778d2467354" + integrity sha512-LselA3J2OvO1GxXo9pTvFEDEYXaSkelEGAOasUfME2ckQnznMOI96x7cLAujyMuhTAuGnz0n4mxAOp/iMHKL4Q== + dependencies: + "@chakra-ui/number-utils" "2.0.6" + "@chakra-ui/react-use-callback-ref" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/css-reset@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.0.11.tgz#d2b65a543bac785c9788ce152a9eece157595289" + integrity sha512-TnydPIMYaQX8kJ8cKgbXfHaBKLr9wCqZS+UnqUxUo3YzMNRjOUPg4DWVO4n4s+GwuZy860DGsBoJaheLqrilVg== + +"@chakra-ui/descendant@3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.12.tgz#823eee949eb56e0045d3ee84bbfd614b4d9203e9" + integrity sha512-jx37SI6PYKMSgn+46Ou8LGa2nbEiBRmU4rzz+0/klVpCSd4yQLcm1c4nPv0D7SoQrhq/cQq4tUPfC2U4tXeovQ== + dependencies: + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" + +"@chakra-ui/dom-utils@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.5.tgz#177e11d78088481bfc9aaa21bef876dc8a6bae29" - integrity sha512-WPseFKMTlXsc6FH2L4ZcO2PJVhEqZqUfgUMNM/1PVU/oZoa0t8A2HG/cq1EGaOf/EMGzVOGc/Gz4LE712JfZhg== + resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.0.5.tgz#cd34be7342f217a5fad42766a15d3cda1b99be21" + integrity sha512-cZsaji3ntRcJOqrc9xyS2JSGXr/VLPFTTvShLApxg5dCDWvrGrCJGQ+iSP6R2FGHo2D6cpAgMdPO9O65KUyZBA== + +"@chakra-ui/editable@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-2.0.17.tgz#f77953dacb08350ac66251bb5504cc886768f654" + integrity sha512-1Yy2rfWPtRg/1qx2yv9ovTwrpuFHFLEB8LyizM44yvKnSEqTb2K6CTYhVHQBzI92bQUbGsorSflLvFFUzB55XQ== dependencies: - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-callback-ref" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-focus-on-pointer-down" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + "@chakra-ui/react-use-update-effect" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/event-utils@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.7.tgz#358db8db4f628ae492eba110fe801b5087f09076" + integrity sha512-OBEIx7CIK5k3nYUGnh2WDhth1oGe26fwXMVQjVM9+2LBUYw2Y1Ufac4o7lMiD1CnyUP+Q70yjMV/mFacvP1EMw== + +"@chakra-ui/focus-lock@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.14.tgz#2137499570aad7df9404a40dfeb62311d52c3399" + integrity sha512-p4aieMBm4CG+uhfJ/W+2p3koGfPsHzdzSu2A8AYM5kGZ3rCx6IM97XYSneConw5WH7mSQR4lXzuEDjAyDozXFg== + dependencies: + "@chakra-ui/dom-utils" "2.0.5" react-focus-lock "^2.9.1" -"@chakra-ui/form-control@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.4.tgz#63b6d723a20f1e3e0e56ca4e760c1febd857d175" - integrity sha512-ZPeG4gWdEcZZhROQn3NNwLEWh5meq+W1Dof5iB1L2VSgZHRpCSM1G8jeZQjxZsGV8AumEhyNq4nyLu2h+fPQAg== +"@chakra-ui/form-control@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.15.tgz#be14aef3cd65b9951dfae7d18c975902076900e9" + integrity sha512-xWPRyXMhp9dVr8hb62U6NSx7X//M1YGVfFMOkWyTwjCHqSAi63j5TZggTHzf1BWy/FkqepGWxUenyriSnKlBFQ== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/hooks@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.0.4.tgz#dcff23f86c9c27dcb69bf46aa316051b75ade633" - integrity sha512-5FJZ6JY1449rHZdjOSq7ei8TBG5mdSeNRbGGgTxt7xteU9o6vpr3hKJy9TFjaSNPJamSMS8Lf0YXJu2R044o0w== +"@chakra-ui/hooks@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.1.4.tgz#b8fc1904fb5d1daa4d19d61ffb64c1f76a28b846" + integrity sha512-FOsBBMK2zl7qdBrBgmkMNMkkbkKzM0RwYoK7oV+ldUG1f7pvjPBmzRFZ3wiIh5FlbffZvlLAH22D3a2xldWDZw== dependencies: - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-utils" "2.0.11" + "@chakra-ui/utils" "2.0.14" compute-scroll-into-view "1.0.14" copy-to-clipboard "3.3.1" -"@chakra-ui/icon@3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.4.tgz#a8f2209e6accbf607a46eecb95e1cbd6036774cb" - integrity sha512-9Ry+fa6EKRYUexffvgOJ9dRIkxCSnASgdSnb09EbQTgCTeM+47LUsxR2+r8pbY6ZT5D4m2zRLkTrv7O7icoyOw== +"@chakra-ui/icon@3.0.15": + version "3.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.15.tgz#589adf65550b2ef07342a064376adcf64331606c" + integrity sha512-6RRppml4kW3hOMgMCtgeKc73nJhJEZXOvzDvmZKKW9WrLsDpWiI7WDQb5VIxUXqZlbrh88K5WVRY0YivIefCDA== dependencies: - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/image@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.5.tgz#c3948a80b205c326eec2a622f4c1db92de26febf" - integrity sha512-1+/VjzjNv9moxrydsEryVhl3NOPxK1xr7BMd1UmPCp4g8ZZNNFmEah2FiL7GDVBdf2I4/e/2xMCUpndJJiIlCQ== +"@chakra-ui/image@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.13.tgz#adc8bc97a65ef15491d7abfa7e4aa31debb3e4c1" + integrity sha512-zcTN3DuhoLCkCgCwPGvy++F9jaCE2OQjoLKJSU2Rnc0c8WjCZZqXKuRdg3GhaYc80kaVSexMSc6h04Hki+JgVQ== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/input@2.0.4": +"@chakra-ui/input@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.17.tgz#3b6145365710e00ad5638518bcf50326c180b228" + integrity sha512-foGMxVG3PSd8B6eRVYJkmCsAYJ67eR/IfRgrqdfiurQSgXzuoKvpHnLvr16INyKK0VgFzty+inVfoLwI0RtP+g== + dependencies: + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/object-utils" "2.0.7" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/layout@2.1.13": + version "2.1.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.13.tgz#d9dfecf28fd73082a7560831caa5a189fd22eaaa" + integrity sha512-Lqo1UnvSJep6AXEjmuVApeT+dt/v0bdeNxT8KuA4M46i7lgrv8I91yAbdoyxlm42dM9AQjHVzYOJrlfO3krDtw== + dependencies: + "@chakra-ui/breakpoint-utils" "2.0.6" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/object-utils" "2.0.7" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/lazy-utils@2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.4.tgz#383bdbc6f2be59817ef9ce6888fdc7d0bf4e29c1" - integrity sha512-fzRFSt7ZFfZ71Tgq0xFHR32R4km8bpfV5kSlFZe/XnmLcCI7/oRRnHK/aa7GZyz2k5QpvvBe2TkqKjVAlv3jNA== - dependencies: - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.4.tgz#bd0e2f7118e3a8fe470db7666b08bb1f808205a9" + integrity sha512-HaVlEIlWNdk9vuubfc+EJkNkwP4pORXkPanP72KF8CxM4NN1hCSm+2gAvlCZCmWUIKIyhGMO1lXPY923o2Mnug== -"@chakra-ui/layout@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.1.tgz#98866c34766478dffe555c4a1d0944dd804d171c" - integrity sha512-amiwbaWUkMpTh+K9QP7a24Je+C0u9x8nvf5ELyUhnZjL+J7yEe7MNRXiWIfqFNC3gszZv/7y7HiKBzKQUw0u/Q== - dependencies: - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" +"@chakra-ui/live-region@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.12.tgz#932e94cf2c36eb3c004259d9a4cda5c2b6269887" + integrity sha512-hzCvqeYRtocLn0KmlEpVdYbt/7Tb5tBtsjMBfJb2lQkarQRwC9xzZ4arCcsDZAWiR3c3wvXdSob3vZ71biz46g== -"@chakra-ui/live-region@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.4.tgz#85b7ae4106772266ef26493fd9d5bd58acef2da8" - integrity sha512-zOu+MzwRdgV+wMXMW+FOY7iL3vs/jdfAEJlNnfI1Lx4LFJ4FnjegvLjOOamOwtPJTh5ZkeUsyZctndrxH8agQQ== +"@chakra-ui/media-query@3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.9.tgz#204002fe04e56a1abfa0bd5e3ad05bad8c34ae3e" + integrity sha512-4vaf8YqgIs5zhaQTLAif+aiiixo9gpk1xiTn4oTiDZQFuTVhKyv4iI93NbAKif/Bls+8XghbMo0rF93DjqRRzg== dependencies: - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/breakpoint-utils" "2.0.6" + "@chakra-ui/react-env" "2.0.12" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/media-query@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.0.tgz#185cbca4bd310142e0c24f9f347086bdb6af9070" - integrity sha512-rSqEmegTXojNtY4wJQyl7yceLK4oHMJBnTKLZOkdKnxgWTgcTgkH26MZaP/FeJJBMijRPEN5qoy2KN1lCIVEmg== +"@chakra-ui/menu@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.6.tgz#939a061bc0848528be8ddbcc03c33c35c2630de6" + integrity sha512-/ypgx+JmYgItoBq0bUMetnjDu3aS75lra4xVQeMEG8L7y8/q7B4uIIJeSVh7o8UQJCvV05doxnwsxV7zBW29bw== dependencies: - "@chakra-ui/react-env" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/clickable" "2.0.12" + "@chakra-ui/descendant" "3.0.12" + "@chakra-ui/lazy-utils" "2.0.4" + "@chakra-ui/popper" "3.0.11" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-animation-state" "2.0.7" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-disclosure" "2.0.7" + "@chakra-ui/react-use-focus-effect" "2.0.8" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/react-use-outside-click" "2.0.6" + "@chakra-ui/react-use-update-effect" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/transition" "2.0.13" -"@chakra-ui/menu@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.0.6.tgz#a3c31ef138ca2883475b72f9c30843d5d3ac5ef2" - integrity sha512-VcucCiDwOZg5iCP+7sP22H4uPz3/qE22Jo2A48hPPneb9MPmYkZxIBRJyB0wvbWmkRHAkyiLYNwHM0qk0wpp+g== +"@chakra-ui/modal@2.2.7": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.7.tgz#f888c113d22fd3ea8002e0f0a540d697ae5e5c66" + integrity sha512-hkWATlyknkKJ3h6dT2J1f+Ec9afjoRsS3wR+AhygKXBgxSJdpPSV6rUfmWBVeBmRLQmDpUA+LSqodNTV1pgrYA== dependencies: - "@chakra-ui/clickable" "2.0.4" - "@chakra-ui/descendant" "3.0.3" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/popper" "3.0.2" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/transition" "2.0.4" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/modal@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.1.2.tgz#c78da1d60f1ae27a2ce7b7d918642aec559e672b" - integrity sha512-kstt5xM8rqmSkFU1CrY6qD1iv+5tXa0IsLGAN1lyDu4MSphPSMfcBHcKTXTgrsRLHVc8bVCWWAQuJQSKt0G0jw== - dependencies: - "@chakra-ui/close-button" "2.0.4" - "@chakra-ui/focus-lock" "2.0.5" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/portal" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/transition" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/close-button" "2.0.15" + "@chakra-ui/focus-lock" "2.0.14" + "@chakra-ui/portal" "2.0.13" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/transition" "2.0.13" aria-hidden "^1.1.1" react-remove-scroll "^2.5.4" -"@chakra-ui/number-input@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.4.tgz#27f59e55e359fcb708183da774cba6a625126f7e" - integrity sha512-VYgUhqchKFpMGE05EogTIxOIKLUdgdm+X+ciNbn1mhfoP+4zoEZlTobGUm+9xel6ojsAVVlnXPDv1jWMBQ5SJg== +"@chakra-ui/number-input@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.16.tgz#ca6eedaef6fc6cde2dd38919efd755e80e60175e" + integrity sha512-6ocRWwCIBtMKBdmj/z3Y3vRlHPI09Ppj6f4j2cRECNTCTSAn8u+YnXjwRNDWZQ6I5pyOvuqRFyRkJXt0lmex8Q== dependencies: - "@chakra-ui/counter" "2.0.4" - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/counter" "2.0.12" + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-callback-ref" "2.0.6" + "@chakra-ui/react-use-event-listener" "2.0.6" + "@chakra-ui/react-use-interval" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + "@chakra-ui/react-use-update-effect" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/pin-input@2.0.6": +"@chakra-ui/number-utils@2.0.6": version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.6.tgz#ccddc545cf94db74eaa956fe5797f752c4abd804" - integrity sha512-CVpgvTDqkBoVU860PHN1xHNpcj21tXaur5mjJkcMh2/HnMQ5Dq4Z+69crkQfGIG7NV5XtVasJo7+DWYRaDCZGw== - dependencies: - "@chakra-ui/descendant" "3.0.3" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-utils/-/number-utils-2.0.6.tgz#3db0e61dd542d5753b3db4702bf9fae6653ceb82" + integrity sha512-VLOyoiXGpZ+eCQSPqKdBCEpen9VAo6pc6FDFuf4BNdIVEfh6ee//Zl7XjyTAGr1G4HUANp8ZxVHHPvtQ10VP4w== -"@chakra-ui/popover@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.0.4.tgz#f2a2e2f0cb8b56c5b52edc01e2df24c4f053fbde" - integrity sha512-sA4HHnaVBLUpgUoe/s82A+T2BRQ9Hb3+XsLvAbrqOwLc16Jh3FZfS9a02fNokbOWs6NDioslgbSoeTvv5yqOOQ== - dependencies: - "@chakra-ui/close-button" "2.0.4" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/popper" "3.0.2" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" +"@chakra-ui/object-utils@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.0.7.tgz#0d17b7a528d712428e482709c9df9fcd92db9f2b" + integrity sha512-dw5KXK9Vlr5ndf9/iSiEuvpfhZQasYdDdGXDtSBL2rF6Llg2OQ5MRSoLhTt9oL1L9crv9uPCJRm5S9VJZ3i5Vw== -"@chakra-ui/popper@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.2.tgz#63994c39c316b03f68597099113e0719ac70ac8f" - integrity sha512-oEUsaFR4EPY3CvhEVeZNoa+mA/w+TvLlG3xlicIwv/3Fcfl6LD2Jhr6utnqAvHFxE/qRcUcXLX20ovy0Zrgm/Q== +"@chakra-ui/pin-input@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.17.tgz#d1151c010e2b1600d0d5b17bfe79543b838c3a5d" + integrity sha512-uDL8HIjuvvcEO9YBiAOewFtlrjPDqF+xPIWBh4hetDVt6Pd9XavvuyRJjsogjAZt0FsweUg5sF8g/iVLAihCAQ== dependencies: - "@chakra-ui/react-utils" "2.0.1" + "@chakra-ui/descendant" "3.0.12" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/popover@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.6.tgz#2a2bc80be5f595abe8dbd1cd3a88b61de2fca10e" + integrity sha512-KIdTXG65Ugl2Dvb7VGF65FqdkmpB1/LyVjLH8YIMyhnN0fo+d94M/WWVIrdMECQVjTXHMsLDVKYSEbm4x7RHWw== + dependencies: + "@chakra-ui/close-button" "2.0.15" + "@chakra-ui/lazy-utils" "2.0.4" + "@chakra-ui/popper" "3.0.11" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-animation-state" "2.0.7" + "@chakra-ui/react-use-disclosure" "2.0.7" + "@chakra-ui/react-use-focus-effect" "2.0.8" + "@chakra-ui/react-use-focus-on-pointer-down" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/popper@3.0.11": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.11.tgz#00d412d408d4628d55491bd5d3b58e1e23e6c972" + integrity sha512-fsKwgq3E0S6FqCzTCQ7HQEr2BOHfHZZMiqvFpGyrIPQ/Esv7aE3Ipw4y4RHTztzJ+vUKK3XTbJzX1cU4RR4a8Q== + dependencies: + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" "@popperjs/core" "^2.9.3" -"@chakra-ui/portal@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.4.tgz#212f3b24362fbc89a0b418598a3577674171651b" - integrity sha512-4h/brmPQBMK2ZtpqqSOGIMfg/oRmfmPeDI61n4cN5WgatarkxEzrIJUoNJHIYHl8Da0TmoFzyhgV6ESm1SHLJg== +"@chakra-ui/portal@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.13.tgz#ce556c1750bacf157f9f96755577dc9d59266ef6" + integrity sha512-EuzaYJuIXM5elqy0MmXe+nc2bHm72JpxkM/PX+LnRTlkA44Kj/iQP5gnx5KHLVG4RPbcG5p61W4KzIBPSRY0+g== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" -"@chakra-ui/progress@2.0.5": +"@chakra-ui/progress@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.1.3.tgz#742ab674323dd504ba67e69ae379cbdabdadd421" + integrity sha512-RnVFvdWXrj06oVG0R0m/OunXJ9oxMrcI/UHGgTw74FbjZDSSv7+8j9397iu2Mop7v6iJi0Rhm8Nyi/wEqlO9lw== + dependencies: + "@chakra-ui/react-context" "2.0.6" + +"@chakra-ui/provider@2.0.29": + version "2.0.29" + resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.0.29.tgz#eb11dfd372f16731daf2740b2e028d98eff1027c" + integrity sha512-usgyV7+UKkycsViRHhnnIg9k9U3Vmrnw9KG5mgxVcCOFIR4F/iGJ98zK/MR5HKxZORrQtJPCsBWh3I8BLv1vYQ== + dependencies: + "@chakra-ui/css-reset" "2.0.11" + "@chakra-ui/portal" "2.0.13" + "@chakra-ui/react-env" "2.0.12" + "@chakra-ui/system" "2.3.8" + "@chakra-ui/utils" "2.0.14" + +"@chakra-ui/radio@2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.17.tgz#dfac644d8bfdb4d1d2a13b2b2ddcb899952dc6d1" + integrity sha512-OkjnINkpqM6olJ8GOYjppSOyhvPBx1tT3fcVO6fe9BNHbAte1w/Yb6t5oxz9ad4tBzgeuvs5ntQ9z5MO762n8g== + dependencies: + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@zag-js/focus-visible" "0.2.1" + +"@chakra-ui/react-children-utils@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.0.5.tgz#cd8f9e29bdc27643090759a352837518397b401f" - integrity sha512-GKeIxL6YEHrN6sX7rPce6TtYKtqkBDQ0r4b3WeOt3CaEhzSm1zMQMni0Zl5xdQp2BhaEQ3ZgEydxdsxDnr1PPQ== - dependencies: - "@chakra-ui/theme-tools" "2.0.5" - "@chakra-ui/utils" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.5.tgz#300efb99130e8423333f7bddbbac23cdff624b5e" + integrity sha512-rP/1HFR9J6wohIzLe/gU+vpey27uey9pVa46VTZfApI6VdzDWiQT1pmrGQeMkba07KdU2MJS/60dhGM4NfvcQA== -"@chakra-ui/provider@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.0.9.tgz#bfa6f143af65de43a4a1929b1f167138ab873d09" - integrity sha512-RWa5lULY2yz/PbaipmYq9bjyMouyQjHBKpu/zpCsML5j13JI4QonW7D26Sm0sDE67RJVaopCzFv0I4B6X2TMCw== - dependencies: - "@chakra-ui/css-reset" "2.0.1" - "@chakra-ui/portal" "2.0.4" - "@chakra-ui/react-env" "2.0.4" - "@chakra-ui/system" "2.2.2" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/radio@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.5.tgz#5e72dbc9253d3e95406cb03151225686921877ae" - integrity sha512-IF3hITdx73tOX9+9E8I9FWPnIYOEjik2aobBlAxBbts9YvIGJLpquQOEfjlf10moZh7B8hGLQMdlqE56snzwpQ== - dependencies: - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.4" - "@zag-js/focus-visible" "0.1.0" - -"@chakra-ui/react-env@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-2.0.4.tgz#3daa61b1e318b5133715eab1868b505806db2560" - integrity sha512-qiLQOr966BLX9zORn4UXpcfYD7zF8DphdfkzW1MPPRj9Iufsf96NliHSuz8XBmnLFdFP0cKHXs0hUOaGkkernw== - dependencies: - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/react-utils@2.0.1", "@chakra-ui/react-utils@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.1.tgz#aebf12ee9f71fb7a27183d556131177f9ce745c8" - integrity sha512-xLiTn7WeUo2e3zvo8zUGpICgIGsLCPpkVbjEKhr1jAV41urqEtwlLc6uGir595OYqAC8zFDqs4HXhHouqNEtiw== - dependencies: - "@chakra-ui/utils" "^2.0.2" - -"@chakra-ui/react@^2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.2.4.tgz#916451368d3f3334eca8ad963a142373001f2101" - integrity sha512-YlpDn2nNU3HT/Smtziya7R+WyENbzSzrKFibC49zxR9v1D7LBzXHiwKJCokvDQ/NsjEVHz0zwyZiVnJtUnNXsQ== - dependencies: - "@chakra-ui/accordion" "2.0.6" - "@chakra-ui/alert" "2.0.4" - "@chakra-ui/avatar" "2.0.5" - "@chakra-ui/breadcrumb" "2.0.4" - "@chakra-ui/button" "2.0.4" - "@chakra-ui/checkbox" "2.1.3" - "@chakra-ui/close-button" "2.0.4" - "@chakra-ui/control-box" "2.0.4" - "@chakra-ui/counter" "2.0.4" - "@chakra-ui/css-reset" "2.0.1" - "@chakra-ui/editable" "2.0.4" - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/image" "2.0.5" - "@chakra-ui/input" "2.0.4" - "@chakra-ui/layout" "2.1.1" - "@chakra-ui/live-region" "2.0.4" - "@chakra-ui/media-query" "3.2.0" - "@chakra-ui/menu" "2.0.6" - "@chakra-ui/modal" "2.1.2" - "@chakra-ui/number-input" "2.0.4" - "@chakra-ui/pin-input" "2.0.6" - "@chakra-ui/popover" "2.0.4" - "@chakra-ui/popper" "3.0.2" - "@chakra-ui/portal" "2.0.4" - "@chakra-ui/progress" "2.0.5" - "@chakra-ui/provider" "2.0.9" - "@chakra-ui/radio" "2.0.5" - "@chakra-ui/react-env" "2.0.4" - "@chakra-ui/select" "2.0.4" - "@chakra-ui/skeleton" "2.0.9" - "@chakra-ui/slider" "2.0.4" - "@chakra-ui/spinner" "2.0.4" - "@chakra-ui/stat" "2.0.4" - "@chakra-ui/switch" "2.0.6" - "@chakra-ui/system" "2.2.2" - "@chakra-ui/table" "2.0.4" - "@chakra-ui/tabs" "2.0.6" - "@chakra-ui/tag" "2.0.4" - "@chakra-ui/textarea" "2.0.5" - "@chakra-ui/theme" "2.1.3" - "@chakra-ui/toast" "3.0.2" - "@chakra-ui/tooltip" "2.0.5" - "@chakra-ui/transition" "2.0.4" - "@chakra-ui/utils" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.4" - -"@chakra-ui/select@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.4.tgz#1887d022566a9546ae8d16102e5371149d163231" - integrity sha512-ta1yX8EffhdH3RcNOI9RxCdYZ2hHvEwJXBnr3pW6gf7asw/jNlTyBmmSUAddHp1j9YwKfT9F5jkKmtovNdrpdA== - dependencies: - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/skeleton@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.9.tgz#c656b864f9d5f0ad45f5eb08befd2759a220dde1" - integrity sha512-bdblqZ/quq1GN0DBC1baj8DqpLkA3wfVnxvR6QVA9Qy/KgnvRiMWe/xiwXKAq8Tnkoxco94ACIk7M1m0tWjJZA== - dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/media-query" "3.2.0" - "@chakra-ui/system" "2.2.2" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/slider@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.4.tgz#1dabbb52697b0fdfe938b721d64e5073542c0409" - integrity sha512-bNhysW59KTpEl88Q/kNKCmfh2KZWJipFRIYxjE0IJQ+slesET3qgRWwqtdEVl4mutmDkzTyoSKRuBYCdS6HO0A== - dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - -"@chakra-ui/spinner@2.0.4", "@chakra-ui/spinner@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.4.tgz#0384e7dad2038edbcb946d282012bc299844492c" - integrity sha512-BEUBgo6/6s+D9fo5vrkxLbPYNIPPZXVQNV+h1umnHNbZx9t6BDP/j4YAadboCEySidVGFZ+kfRq1mz4/XHgKZw== - dependencies: - "@chakra-ui/utils" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.4" - -"@chakra-ui/stat@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.4.tgz#fc4d1cd787b397016b974c07bc646948308c72fb" - integrity sha512-zSBZcbdlBQtB8KVPr4jhrguvubuOUoR545PjRNnMTECDyg+Ff3sWzU4tB1RG7Cy/L7hObgYvQHfpAHZ+CdoAmA== - dependencies: - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/utils" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.4" - -"@chakra-ui/styled-system@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.2.3.tgz#c9147c3588318935840ed39c1d140b12ddfe7ff0" - integrity sha512-zbXJ2ytVQC944tuDBgm+Ya+KBYFkcsK/EzKq61TBk/AAPt/BNwC9/CNF9fuEVf7+p45cZvKdCyu27UewlUiXuA== - dependencies: - "@chakra-ui/utils" "2.0.4" - csstype "^3.0.11" - -"@chakra-ui/switch@2.0.6": +"@chakra-ui/react-context@2.0.6": version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.6.tgz#60553d99c39bc7e4e09a242a6870c486142713d7" - integrity sha512-agjRFu0Fy5u0D8MUdckpIen7jQFkYRg08xOWX57VXQEEJN7L8Pe5hF57aig65TXZMXQTcLB2ss6pQFYYDbt3cQ== - dependencies: - "@chakra-ui/checkbox" "2.1.3" - "@chakra-ui/utils" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.6.tgz#77d61e4a2654e83a8cc5c6d6f0140ceedab87963" + integrity sha512-+Bk/lDBirj6KE3vbyyUVCqFGqAe+MOso+1NRHQ0m66/sXWFFnoL/lvuq4osdNp80DOVQ4EYYnHI0olSZZvuKEg== -"@chakra-ui/system@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.2.2.tgz#255ebfc81eaaea6c2a7249ad0889c03b8cc99a81" - integrity sha512-lo7QZSGNhw0HhvVYGRdP5cCllM6j5UL0S1syYu0gHhqNVu5qUrdpxpGsYqYK0MP7T16YReUoolPdz5UNVxVuLg== +"@chakra-ui/react-env@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-2.0.12.tgz#f5f9fef0bd6fa9983457cb06413cf209acad48e8" + integrity sha512-BPTz2cxNKhNc1y5J9cCOYndbGiNulpMwihZLkybLRJ1qzZic4KuD3iGOkagJ81STKoPkKEZWfcjnrQTCJTq1fg== + +"@chakra-ui/react-types@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.6.tgz#96b4f8a082ab5244fe6b574e953b1b64ece9605a" + integrity sha512-aAq/nl//PneEfeaDb94zwfXor4OP/d5kc6dEXOZB2HJgCt3hu2+F/1u1QpPLPPTys5xexkQojuZQLnnD9lmQFw== + +"@chakra-ui/react-use-animation-state@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.7.tgz#5f7f6327130c7bc345477a46b31b30b81fa1e45a" + integrity sha512-v4p5jTopFvYah3vrRU7m6W+m1IEIqxfDco6ASeoEWEcKab4WBdQ1OQr1Oxgip+UIgmvLUnl+3BS+jPUuuKkdgg== dependencies: - "@chakra-ui/color-mode" "2.1.2" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/styled-system" "2.2.3" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/dom-utils" "2.0.5" + "@chakra-ui/react-use-event-listener" "2.0.6" + +"@chakra-ui/react-use-callback-ref@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.6.tgz#e382cfa198a376804946f57fa564f17ea6efdccc" + integrity sha512-JKh0GJQvLonjSVQJjsBs2gE+Zix/DXfAo8kzNE+DzNf49CNomX59TkcJNXDjtzSktn6GfqDF8IOObJlGlbtG7g== + +"@chakra-ui/react-use-controllable-state@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.7.tgz#1f61659a42cc73227770201e6c631dc9c606f15f" + integrity sha512-vKGgMtZb/06KnIF0XUFjWvwfKs3x35M6FEc4FU/wgM5FDU9T6Vd1TG7kDHFMoYdcvRf2/fgzkOxgTN052+sMkw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.6" + +"@chakra-ui/react-use-disclosure@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.7.tgz#217ea956a1c2455c9b2647d59d1bbbe0e577d190" + integrity sha512-vQG8AxYq+BkaurCHdMA9pxJAfQDmErMzn9hn2elP0dVfKe2a0O7aCFzX2Ff9PeeBKWOFlUfKf79gRBnhXRa5xw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.6" + +"@chakra-ui/react-use-event-listener@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.6.tgz#15faf5873f6ee6a973d74d174fe2905a81647ccf" + integrity sha512-lDtccra2B/1ap6Z7NESS4QfZajfOLd/jafmVdiO0xc4YSs6VDhenipMCv9O47U5EXapG6jfTXs2nbFkc3jRKiA== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.6" + +"@chakra-ui/react-use-focus-effect@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.8.tgz#fdf43e129148c82ebad66ef970dd3f8b2394f251" + integrity sha512-Et6/97A/6ndPygj6CF8+T7RQH0gsW5fkWNi64R7OjuQSjWxGq1kcmyBGm4E2u2Hbmtf4Hm1dcjzilnYbG7M7IA== + dependencies: + "@chakra-ui/dom-utils" "2.0.5" + "@chakra-ui/react-use-event-listener" "2.0.6" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + "@chakra-ui/react-use-update-effect" "2.0.6" + +"@chakra-ui/react-use-focus-on-pointer-down@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.5.tgz#81bf94ada866f3ddf3d72e50b6e4281a29e88196" + integrity sha512-xDQUp8s+a+0DgqOWdvKXgIZcyXH5RXKkC+qa0mbUJf54b9qLbrD6yw3o2jAvDEGa7vLBjaVY4jfOAdzt7+Na2g== + dependencies: + "@chakra-ui/react-use-event-listener" "2.0.6" + +"@chakra-ui/react-use-interval@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.4.tgz#c4358e5e631e18872bda061b8cde48b3385aa641" + integrity sha512-LCS0CijCBEJW1dz2WQThGn+wPSaA6YWPEWeS2WmobbQhkjLbzEy2z8CIG5MeUopX8v6kDDnCMmIpocmrIyGGbA== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.6" + +"@chakra-ui/react-use-latest-ref@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.4.tgz#c35a3741f1ac2f9468bb3ea1333adce445e6068f" + integrity sha512-7xxQeu7PtFUEXbd+BZ+UMX9ASpJET02z9EgtqSfnMgB1ccgo/1i8CYI2/BcolwRf05EUD7kOUA+7eHyP4EI3Uw== + +"@chakra-ui/react-use-merge-refs@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.6.tgz#be0279ee6070480d5b2699c732a7cfa9690c589b" + integrity sha512-m4fQtm5cn3F39nLj5MhmKsAzdFaYMldR8a4VMtfC2Pnd+bqX8jx2q2yPCjpam9x/Wnh8ZRBMJ2KAjAiGnF3XXw== + +"@chakra-ui/react-use-outside-click@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.6.tgz#55f4d5dacc80c3c39fd7755fe7e142a841d99105" + integrity sha512-wbZI4zDwSiQ3jCZ++PKmv7uIU6oyEbaap8s6e3O9/JFAlPXxAG48DcSHmQZ8scyEu/wwd8A+/3go49T4VIvc7w== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.6" + +"@chakra-ui/react-use-pan-event@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.8.tgz#88bd69d55c71be7d261ad3a8abe15d31a6b11380" + integrity sha512-HUn7WR9IagtC3KdjmBlHibnFYisQ055IoWReIEWuDz/5KWSPeC2p2QcMc33vhN/ucS1XbWCt6uelHHBeCWWvfA== + dependencies: + "@chakra-ui/event-utils" "2.0.7" + "@chakra-ui/react-use-latest-ref" "2.0.4" + framesync "6.1.2" + +"@chakra-ui/react-use-previous@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.4.tgz#9b73efce8ab82060ca31c26bc6128f896ec3a9a8" + integrity sha512-ZzILmNAoRVPDRFhKUceksQGETQyne4ST7W7Y5NPkr/OAJuzc2njodY0GjGiJTF2YpOSelRn6KB8MDhwp4XR2mw== + +"@chakra-ui/react-use-safe-layout-effect@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.4.tgz#5924c94dbaa3765a5f80931a6cf2cf3af094cc39" + integrity sha512-GbQIdhiesXZ8DV+JxiERz3/zki6PELhYPz/7JxyFUk8xInJnUcuEz2L4bV7rXIm9/bd2kjf4gfV+lHOGfpJdLw== + +"@chakra-ui/react-use-size@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.7.tgz#52929bd292ff6c55471872eb0f32186d7cfe31d8" + integrity sha512-ggj8W0rer9oJ03xXrH4CUBNe6RZ/qtuU/32pMougeVWwZ3COGTODBtFlooIiy3iCvxrpHIgIDXy/hyrBWyvQSw== + dependencies: + "@zag-js/element-size" "0.3.0" + +"@chakra-ui/react-use-timeout@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.4.tgz#65e6e07f42f9c1c4165e5e8d6784215117f6b73a" + integrity sha512-7EqjJVRv61DmWb9UE4R9LPf3l1SDfawQ2/ax/e0lYpDBjaeV013wUH1uurRq8jn/vR1DhNzfRB5VtimE2f2Vsw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.6" + +"@chakra-ui/react-use-update-effect@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.6.tgz#8aacaab25fd181a52569336ca5ef797e8ae1026a" + integrity sha512-P6+0hocnasjl8xOrFH9BklyCNNzCBu/XAl5y7kZ82uVnS99SaC6cppO9/qWRZI9cYYheWfJ4lyLGeLOcNmI8/Q== + +"@chakra-ui/react-utils@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.11.tgz#5e99b21759eadc9276709268cca94c502afeda56" + integrity sha512-LdE0Ay5Em2ew7fuux9MJAwaxoaU/QwVoH/t6uiUw/JCWpmiMGY6tw6t3eZTvZSRZNfyPWY0MmvOHR1UvIS9JIw== + dependencies: + "@chakra-ui/utils" "2.0.14" + +"@chakra-ui/react@^2.4.7": + version "2.4.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.4.7.tgz#d4c8289c8d8cd4e3ddc5af8824d35a71a88e3fe8" + integrity sha512-2+0fgC7BHpLy+Fhc6PBbNk30b2H8iNcb7A7SShupm5otT63ZvcGffPHOynNtL5A2kTHFZyh94lxYVM/7H02x+w== + dependencies: + "@chakra-ui/accordion" "2.1.6" + "@chakra-ui/alert" "2.0.15" + "@chakra-ui/avatar" "2.2.2" + "@chakra-ui/breadcrumb" "2.1.2" + "@chakra-ui/button" "2.0.14" + "@chakra-ui/card" "2.1.4" + "@chakra-ui/checkbox" "2.2.8" + "@chakra-ui/close-button" "2.0.15" + "@chakra-ui/control-box" "2.0.12" + "@chakra-ui/counter" "2.0.12" + "@chakra-ui/css-reset" "2.0.11" + "@chakra-ui/editable" "2.0.17" + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/hooks" "2.1.4" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/image" "2.0.13" + "@chakra-ui/input" "2.0.17" + "@chakra-ui/layout" "2.1.13" + "@chakra-ui/live-region" "2.0.12" + "@chakra-ui/media-query" "3.2.9" + "@chakra-ui/menu" "2.1.6" + "@chakra-ui/modal" "2.2.7" + "@chakra-ui/number-input" "2.0.16" + "@chakra-ui/pin-input" "2.0.17" + "@chakra-ui/popover" "2.1.6" + "@chakra-ui/popper" "3.0.11" + "@chakra-ui/portal" "2.0.13" + "@chakra-ui/progress" "2.1.3" + "@chakra-ui/provider" "2.0.29" + "@chakra-ui/radio" "2.0.17" + "@chakra-ui/react-env" "2.0.12" + "@chakra-ui/select" "2.0.16" + "@chakra-ui/skeleton" "2.0.21" + "@chakra-ui/slider" "2.0.18" + "@chakra-ui/spinner" "2.0.12" + "@chakra-ui/stat" "2.0.15" + "@chakra-ui/styled-system" "2.5.1" + "@chakra-ui/switch" "2.0.20" + "@chakra-ui/system" "2.3.8" + "@chakra-ui/table" "2.0.14" + "@chakra-ui/tabs" "2.1.6" + "@chakra-ui/tag" "2.0.15" + "@chakra-ui/textarea" "2.0.16" + "@chakra-ui/theme" "2.2.4" + "@chakra-ui/theme-utils" "2.0.8" + "@chakra-ui/toast" "4.0.9" + "@chakra-ui/tooltip" "2.2.4" + "@chakra-ui/transition" "2.0.13" + "@chakra-ui/utils" "2.0.14" + "@chakra-ui/visually-hidden" "2.0.14" + +"@chakra-ui/select@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.16.tgz#45a51a3227806b48f1cc4900cb666890f3ec91cb" + integrity sha512-ByZn/N8D5PzWhZr/WQAonvjSxyIVyct7YYuQQfpgPDsNEFrBt9sHo57OySwXyXXopcECMr1FV4+5HBhvtKZRbg== + dependencies: + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/shared-utils@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.4.tgz#8661f2b48dd93d04151b10a894a4290c9d9a080c" + integrity sha512-JGWr+BBj3PXGZQ2gxbKSD1wYjESbYsZjkCeE2nevyVk4rN3amV1wQzCnBAhsuJktMaZD6KC/lteo9ou9QUDzpA== + +"@chakra-ui/skeleton@2.0.21": + version "2.0.21" + resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.21.tgz#697bb66b9e7362f9f252717babc50c916903cc7b" + integrity sha512-ztHfV/6Mwl1Wl8H8fkAszMHnyobNZ4SjVD/rImBlKfqSh2VW8jzSwzqN77Oi6iZ7fsqdPN7w2QWS5EAtsUxTVw== + dependencies: + "@chakra-ui/media-query" "3.2.9" + "@chakra-ui/react-use-previous" "2.0.4" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/slider@2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.18.tgz#0f4847298698bb0c5888add7f1bacec1d831e486" + integrity sha512-wfkW9Xe3WVK1yUY0ELAPVLghknxqzPjqidQgbiMSNlKxTs70sFuACsbbwMV+LMcE+2aUYOGOaqTFI8nPfVdbOw== + dependencies: + "@chakra-ui/number-utils" "2.0.6" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-callback-ref" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-latest-ref" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/react-use-pan-event" "2.0.8" + "@chakra-ui/react-use-size" "2.0.7" + "@chakra-ui/react-use-update-effect" "2.0.6" + +"@chakra-ui/spinner@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.12.tgz#275ba21dd2b4be29ecf31c64581167ac75f3b943" + integrity sha512-c9R0k7RUgff5g79Q5kX1mE4lsXqLKIskIbPksL7Qm3Zw/ZbDHyNILFFltPLt7350rC9mGzqzEZbizAFlksbdLw== + dependencies: + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/stat@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.15.tgz#05728c586c2a31cb7b2306658cea9a074d83a239" + integrity sha512-qUbG+Nx4RHd/l95VeQ0MRKoVrMdyCp9LmFeg/klRCxKJ5Qw0Ngdn8zN695Xu2z6jspp2nGWBuQ2Dnla80BuMCQ== + dependencies: + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/styled-system@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.5.1.tgz#d76f0898d5036353947bc83afb2e1c3cad3d374a" + integrity sha512-HhaXR/r5eGlC7vkoOWQ31yZEj+Aq+kFee7ZZb0fBRGKQichn06S9Ugr8CsFyzb+jNexHdtBlIcTBm0ufJ8HsFA== + dependencies: + "@chakra-ui/shared-utils" "2.0.4" + csstype "^3.0.11" + lodash.mergewith "4.6.2" + +"@chakra-ui/switch@2.0.20": + version "2.0.20" + resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.20.tgz#288815a3cae0159bd672cbf61198b9ba7a5fe699" + integrity sha512-RRSqI+WGDSNt4/loYPWjpymVnzVggZWKGoBFGd7UH9Ft3t/0O2O8VQrJFr6lhXMmw+fVCU7q4mR2KagrfXvQhg== + dependencies: + "@chakra-ui/checkbox" "2.2.8" + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/system@2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.3.8.tgz#7bf5b21e713ee0f62e5c65f337b702cc6beecbe1" + integrity sha512-ZCC54MahWIt5nCw9LQDFK4hZRefF6QTxVnPS9Sr3lRlYNzE15/YyzCq+Yb97/ApmQSUmIsnT3uxr1G+OwmuHAA== + dependencies: + "@chakra-ui/color-mode" "2.1.11" + "@chakra-ui/object-utils" "2.0.7" + "@chakra-ui/react-utils" "2.0.11" + "@chakra-ui/styled-system" "2.5.1" + "@chakra-ui/theme-utils" "2.0.8" + "@chakra-ui/utils" "2.0.14" react-fast-compare "3.2.0" -"@chakra-ui/table@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.4.tgz#d388b48e68a8191ef21a46c70752baedff6a99e4" - integrity sha512-Y+YddfpCbmT5D/QMdqM30zWQzwIif63fOB82TSHL2/OMJ6w4Y3fbDtVOLj1MFnTjCOi774nv15/3vHELioOSwA== +"@chakra-ui/table@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.14.tgz#f2d6a4e66e1c07ffa850050bc7ff15e7ea114bbd" + integrity sha512-tiRr//5GfFnpCz4PyVgEIWBMsePAM1SWfvAJJYG2wBXNULYB/5nYmch+cJzPqZtdgL2/RuKIJINAmqVZQVddrw== dependencies: - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/tabs@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.0.6.tgz#edcf2c9521fb30a26abbec5740e00b9cd042135e" - integrity sha512-N9vHRJ1fW27sa+SFgPVeiOoTpmbtEQEC4EHeoBzfw9ZaJl5E3YL4FBWCRVoIVY+/HgukmJGvHpCG7DDrzfBfEA== +"@chakra-ui/tabs@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.6.tgz#f812b4f25c1a3a193e73c51da822b501d0b6e32f" + integrity sha512-9y+ZBRSBFOvsMY8R+nmlWXqMNwokttA1cwcnjp9djsXuN+vabN8nzPcdKsoBbYUhZJp01k2Qgg3jZ46KiD9n7w== dependencies: - "@chakra-ui/clickable" "2.0.4" - "@chakra-ui/descendant" "3.0.3" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/clickable" "2.0.12" + "@chakra-ui/descendant" "3.0.12" + "@chakra-ui/lazy-utils" "2.0.4" + "@chakra-ui/react-children-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/react-use-safe-layout-effect" "2.0.4" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/tag@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-2.0.4.tgz#6a43ad942d8c60fd930a786b3e35bb8c84059f5d" - integrity sha512-OF6jpaDDlgQqN58B3K+pIEbWLRWXDm3LuqzM6Z/YIYL9numMIpxO0mZgyFsJQWvC4ldpGTf3olAvI/3KEHxSvA== +"@chakra-ui/tag@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-2.0.15.tgz#f50861f33b6561117daa4ec8235fba77a196a9fc" + integrity sha512-CwL4jjFELk/7ijckxsaTTv3RKV+fQLvXPabLtr4oBktkz6tDfBLd+hhfPdCHdGAOLhyKY799EDd3ms0dvejTyQ== dependencies: - "@chakra-ui/icon" "3.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/icon" "3.0.15" + "@chakra-ui/react-context" "2.0.6" -"@chakra-ui/textarea@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.5.tgz#0f8f0688e398f6c30b29e6ac36f0d8df907e0af6" - integrity sha512-Pwh6F0Ev1RjdyqN71VNv8LSDwaL68U27KNSCsPWry5NaRvseb0ncS5/wuvBVRCsBy2Kcc2BJxIBbNR4oxAQ1Fg== +"@chakra-ui/textarea@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.16.tgz#7b8c77b94e3f64bf4af4ca298dd2921bd9d4827b" + integrity sha512-2M1Zh2+hCppyDM3RCM4ZZ6YSGE1Xn1qwZ286EWB+RD5bpSfFFoewPVcEv2jjxxjdHWqkNVoo4Egf81ev+Oce+g== dependencies: - "@chakra-ui/form-control" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/form-control" "2.0.15" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/theme-tools@2.0.5", "@chakra-ui/theme-tools@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.5.tgz#16a77da55f9933542d74fa0a5fc7bf7dd4f362f7" - integrity sha512-JuFKYWfVnZKnX95sM05a/0NpTzwciPTAZXfAJYwDOiy4EEqXUgEQpkHxOjC929wpzIVb3Q2Wa/HvS1v8C2f+mw== +"@chakra-ui/theme-tools@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.16.tgz#17caae14a61f93759f072b16c7346489eb8be643" + integrity sha512-B/LD+2LNDeHYd/LVCHIJqckVZfhrycTUpNbhRVAiDRaS0AAcsPxKas7liTFkkMkM076YjiHlcla3KpVX+E9tzg== dependencies: - "@chakra-ui/utils" "2.0.4" - "@ctrl/tinycolor" "^3.4.0" + "@chakra-ui/anatomy" "2.1.1" + "@chakra-ui/shared-utils" "2.0.4" + color2k "^2.0.0" -"@chakra-ui/theme@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-2.1.3.tgz#3542465761ffde5a3eba2cf2234f173b518f5dd1" - integrity sha512-YRuw6D1xR2r2d09PVC4o7iNhxekqTkwq0P38Vn9UyLURXKnguYwkPXcJF3+ZcIPypqaROPPaOGOdtpwO7A/CjQ== +"@chakra-ui/theme-utils@2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.8.tgz#e0eb3f2fb888f11e060ad42a4b14f0ecea3f2f4d" + integrity sha512-E4GT1tT5JTwsxRCgopdkLWx6oxd1lrI7DBLiwW0WxvtPmHfy5I9CB4CVnYBNHQZNXiJZyUQpCwKyGg2npGxv5Q== dependencies: - "@chakra-ui/anatomy" "2.0.1" - "@chakra-ui/theme-tools" "2.0.5" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/styled-system" "2.5.1" + "@chakra-ui/theme" "2.2.4" + lodash.mergewith "4.6.2" -"@chakra-ui/toast@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-3.0.2.tgz#1d6883abdab9307d2b0ca34d34bd65453d623058" - integrity sha512-MGUwgNMDevys6EVoEJDMs7S+5pAefx8ikdtMzOXB21RPs6J46EaOcmtZDIgxglUPTEF1QX2NzBFA+ObS2oklWQ== +"@chakra-ui/theme@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-2.2.4.tgz#69948ebf19ae1387b9e5022aca1e58c881658b77" + integrity sha512-zo1FBfkJBsvpOGGByRB4aEvekdeT/9BB7Lz3rAluKkC+Wo8yce1tTSlvPMpf2f4lsEI8zVid5ATQ6u3+kIFg4w== dependencies: - "@chakra-ui/alert" "2.0.4" - "@chakra-ui/close-button" "2.0.4" - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/portal" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/theme" "2.1.3" - "@chakra-ui/transition" "2.0.4" - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/anatomy" "2.1.1" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/theme-tools" "2.0.16" -"@chakra-ui/tooltip@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.0.5.tgz#8021a6b2323bb94f2a4f8ce1c1ba648f355645dc" - integrity sha512-I2+sT0+jAl98ggbUikKk/5mZsLeMjQYeGF7P5OwVzD8NWjtLwjJC75bmkw7c53V5FQKGB1z76T13asWfy5vmdg== +"@chakra-ui/toast@4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-4.0.9.tgz#814f8d2591572fa14810fffbe161dcfa0bbdd300" + integrity sha512-a34dL37sgzJ5q7K4pxdIanvETk4wzGFGSS/DvnpcJz4lLUe2h6wPfaI2+0HBYiAs1P8BeXYu9wwOohrOI49rTA== dependencies: - "@chakra-ui/hooks" "2.0.4" - "@chakra-ui/popper" "3.0.2" - "@chakra-ui/portal" "2.0.4" - "@chakra-ui/react-utils" "2.0.1" - "@chakra-ui/utils" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.4" + "@chakra-ui/alert" "2.0.15" + "@chakra-ui/close-button" "2.0.15" + "@chakra-ui/portal" "2.0.13" + "@chakra-ui/react-use-timeout" "2.0.4" + "@chakra-ui/react-use-update-effect" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" + "@chakra-ui/styled-system" "2.5.1" + "@chakra-ui/theme" "2.2.4" -"@chakra-ui/transition@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.4.tgz#03fcdf47760f1f58964d66adc78c8daeb6765ab1" - integrity sha512-k9/01frV/Z6iEt68lfz8PLYiPoWC9N99Uo6XYQjw17kcguVxJoliq35sUharVcQJneVi5bmKTp9974/3drFDBw== +"@chakra-ui/tooltip@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.4.tgz#41ac464d99da49c4a6217c02793f063c6d24152d" + integrity sha512-KUEsSjIwTyFvdixWg3jVUcpaiAfMddRxiuxnsKcFVv8H5dZF75tstaq8iAHY+pueh6CRmIvO2Oh7XWiAYA/LJA== dependencies: - "@chakra-ui/utils" "2.0.4" + "@chakra-ui/popper" "3.0.11" + "@chakra-ui/portal" "2.0.13" + "@chakra-ui/react-types" "2.0.6" + "@chakra-ui/react-use-disclosure" "2.0.7" + "@chakra-ui/react-use-event-listener" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.6" + "@chakra-ui/shared-utils" "2.0.4" -"@chakra-ui/utils@2.0.4", "@chakra-ui/utils@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.4.tgz#dbed9f173edda0eb54947d98754b834729ae22bc" - integrity sha512-pr5qFTrhCja1iQTajOr2WSvb+f4lpnLnnxWOSYOuIv7k8LBEtee4LpTs0jzBBB/vycuo6ppKdXyj7db9xTqZfA== +"@chakra-ui/transition@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.13.tgz#54da88debdd528c2d41f04809e3b9448106e274f" + integrity sha512-vpzK5HN91eDLkBEdaO6GTCJOYgJYHlmxCAym/tScBuWM2ALZ4mWu57qWgPptgGv+IpMfuvL1t+IVqPgyWwEQFw== + dependencies: + "@chakra-ui/shared-utils" "2.0.4" + +"@chakra-ui/utils@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.14.tgz#b6776c7a020ea46ed88a8048dfa2b512a1fe95f7" + integrity sha512-vYxtAUPY09Ex2Ae2ZvQKA1d2+lMKq/wUaRiqpwmeLfutEQuPQZc3qzQcAIMRQx3wLgXr9BUFDtHgBoOz0XKtZw== dependencies: "@types/lodash.mergewith" "4.6.6" css-box-model "1.2.1" - framesync "5.3.0" + framesync "6.1.2" lodash.mergewith "4.6.2" -"@chakra-ui/visually-hidden@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.4.tgz#12ad71c54186048d6884a2a596dfc10fea43c229" - integrity sha512-7JVHdMnyvpUnC8EkWtI7tE/NZWoVVHR35KLG/tmCEC4ZzNN7oINTYgQ70ALYKMNM3A2PrXdpbVjeBe4afn8UQQ== - dependencies: - "@chakra-ui/utils" "2.0.4" +"@chakra-ui/visually-hidden@2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.14.tgz#c54feca28e8110a1d92ba2c718272931d0e181e2" + integrity sha512-/evqTuCeN3laukL1BPZO8HTzgs+dzq0v6gu/MJFgiSAKGLfInn0/IStKGK2vIluuCtJIgaHVdKcJzr+7sJhd0Q== "@csstools/normalize.css@*": version "12.0.0" @@ -1721,44 +1954,39 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== -"@ctrl/tinycolor@^3.4.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" - integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== - -"@emotion/babel-plugin@^11.7.1": - version "11.9.2" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz#723b6d394c89fb2ef782229d92ba95a740576e95" - integrity sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw== +"@emotion/babel-plugin@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" + integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/runtime" "^7.13.10" - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.5" - "@emotion/serialize" "^1.0.2" - babel-plugin-macros "^2.6.1" + "@babel/helper-module-imports" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + babel-plugin-macros "^3.1.0" convert-source-map "^1.5.0" escape-string-regexp "^4.0.0" find-root "^1.1.0" source-map "^0.5.7" - stylis "4.0.13" + stylis "4.1.3" -"@emotion/cache@^11.9.3": - version "11.9.3" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.9.3.tgz#96638449f6929fd18062cfe04d79b29b44c0d6cb" - integrity sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg== +"@emotion/cache@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== dependencies: - "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.1.1" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - stylis "4.0.13" + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.1" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + stylis "4.1.3" -"@emotion/hash@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/hash@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" + integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== "@emotion/is-prop-valid@^0.8.2": version "0.8.8" @@ -1767,77 +1995,84 @@ dependencies: "@emotion/memoize" "0.7.4" -"@emotion/is-prop-valid@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz#f0907a416368cf8df9e410117068e20fe87c0a3a" - integrity sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA== +"@emotion/is-prop-valid@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== dependencies: - "@emotion/memoize" "^0.7.4" + "@emotion/memoize" "^0.8.0" "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" - integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== -"@emotion/react@^11": - version "11.9.3" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.9.3.tgz#f4f4f34444f6654a2e550f5dab4f2d360c101df9" - integrity sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ== +"@emotion/react@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" + integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/babel-plugin" "^11.7.1" - "@emotion/cache" "^11.9.3" - "@emotion/serialize" "^1.0.4" - "@emotion/utils" "^1.1.0" - "@emotion/weak-memoize" "^0.2.5" + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.0.2", "@emotion/serialize@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.4.tgz#ff31fd11bb07999611199c2229e152faadc21a3c" - integrity sha512-1JHamSpH8PIfFwAMryO2bNka+y8+KA5yga5Ocf2d7ZEiJjb7xlLW7aknBGZqJLajuLOvJ+72vN+IBSwPlXD1Pg== +"@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== dependencies: - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.4" - "@emotion/unitless" "^0.7.5" - "@emotion/utils" "^1.0.0" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" csstype "^3.0.2" -"@emotion/sheet@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.1.tgz#015756e2a9a3c7c5f11d8ec22966a8dbfbfac787" - integrity sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA== +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== -"@emotion/styled@^11.9.3": - version "11.9.3" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.9.3.tgz#47f0c71137fec7c57035bf3659b52fb536792340" - integrity sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA== +"@emotion/styled@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" + integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/babel-plugin" "^11.7.1" - "@emotion/is-prop-valid" "^1.1.3" - "@emotion/serialize" "^1.0.4" - "@emotion/utils" "^1.1.0" + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" -"@emotion/unitless@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== -"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" - integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== -"@emotion/weak-memoize@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== "@eslint/eslintrc@^1.3.0": version "1.3.0" @@ -2227,56 +2462,56 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@motionone/animation@^10.12.0": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.12.0.tgz#bca8968d3d9c779f8a548678f24206bd36cc60b6" - integrity sha512-SCWkVjMChQwA4Cnt1pdmhCi0OC4cAR+rqsskNEqmbgfG59zmn50TfOP6vgqjkYbaSZXXLeEb03Mez362jIEHRg== +"@motionone/animation@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" + integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== dependencies: - "@motionone/easing" "^10.12.0" - "@motionone/types" "^10.12.0" - "@motionone/utils" "^10.12.0" + "@motionone/easing" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" tslib "^2.3.1" -"@motionone/dom@10.12.0": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.12.0.tgz#ae30827fd53219efca4e1150a5ff2165c28351ed" - integrity sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw== +"@motionone/dom@^10.15.3": + version "10.15.5" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.15.5.tgz#4af18f8136d85c2fc997cac98121c969f6731802" + integrity sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA== dependencies: - "@motionone/animation" "^10.12.0" - "@motionone/generators" "^10.12.0" - "@motionone/types" "^10.12.0" - "@motionone/utils" "^10.12.0" + "@motionone/animation" "^10.15.1" + "@motionone/generators" "^10.15.1" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" hey-listen "^1.0.8" tslib "^2.3.1" -"@motionone/easing@^10.12.0": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.12.0.tgz#cc10a00ed5ec9a7a05daf4ef985fcd14840b9a50" - integrity sha512-kdwcn1ja/0//BBHRElX3In1yfqMEhqUoL3G0njDan8R+gfPy3DanyuCtio4VruHQ1m3XN3LcrqavbClzcGo7IA== +"@motionone/easing@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" + integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== dependencies: - "@motionone/utils" "^10.12.0" + "@motionone/utils" "^10.15.1" tslib "^2.3.1" -"@motionone/generators@^10.12.0": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.12.0.tgz#2a175c47c741ed3864dd834e6c98efa68798a866" - integrity sha512-QM8/ndOve80HLXImChwW8ogrEM/8m9xzZEl2Ci2ep1uGLAQ+ADiwzKtl11inGESrxiFDrUdD12WXacCn+y172Q== +"@motionone/generators@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" + integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== dependencies: - "@motionone/types" "^10.12.0" - "@motionone/utils" "^10.12.0" + "@motionone/types" "^10.15.1" + "@motionone/utils" "^10.15.1" tslib "^2.3.1" -"@motionone/types@^10.12.0": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.12.0.tgz#06ede843d4c2990edbd22ecf8d5568d1fcd1f105" - integrity sha512-D9k7ijkAT6JJOCMUVn9IgJqWolp7N3oBbWRQTIRGGO41Bmr/JzLv4GzAb00PvkYAzZX+BpnSTKqXI19zrSjC5w== +"@motionone/types@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" + integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== -"@motionone/utils@^10.12.0": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.12.0.tgz#e8432a96bb7f91148987d0baaab6653ae727f9ee" - integrity sha512-2g3tCqYYwb/tgzCDRbILbD5edXJB45HV51NbnhwKVOOl0PhFraRDtehzLKo9wLHdaTnO/IjVn6cHQsw6RjdolA== +"@motionone/utils@^10.15.1": + version "10.15.1" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" + integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== dependencies: - "@motionone/types" "^10.12.0" + "@motionone/types" "^10.15.1" hey-listen "^1.0.8" tslib "^2.3.1" @@ -3203,10 +3438,15 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"@zag-js/focus-visible@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz#9777bbaff8316d0b3a14a9095631e1494f69dbc7" - integrity sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg== +"@zag-js/element-size@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.3.0.tgz#1c0ab23c9ada453f5778c4baf1eed46218dc9e85" + integrity sha512-5/hEI+0c6ZNCx6KHlOS5/WeHsd6+I7gk7Y/b/zATp4Rp3tHirs/tu1frq+iy5BmfaG9hbQtfHfUJTjOcI5jnoQ== + +"@zag-js/focus-visible@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.2.1.tgz#bf4f1009f4fd35a9728dfaa9214d8cb318fe8b1e" + integrity sha512-19uTjoZGP4/Ax7kSNhhay9JA83BirKzpqLkeEAilrpdI1hE5xuq6q+tzJOsrMOOqJrm7LkmZp5lbsTQzvK2pYg== abab@^2.0.3, abab@^2.0.5: version "2.0.6" @@ -3656,15 +3896,6 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -4167,6 +4398,11 @@ color-support@^1.1.2, color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color2k@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.1.tgz#bea59670b323265cc13a745f239c6bd6a89d9a89" + integrity sha512-iCg+xrEqtYISsSJZN1z44fyhv4EfX8lSkcDhodt6VnMf1+iMwZxAtmGXchTCeMUnTbXunGvUVK6E3skkApPnZw== + colord@^2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" @@ -5746,33 +5982,23 @@ fraction.js@^4.2.0: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== -framer-motion@^6: - version "6.5.1" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-6.5.1.tgz#802448a16a6eb764124bf36d8cbdfa6dd6b931a7" - integrity sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw== +framer-motion@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-8.4.2.tgz#06f4ad469d8a697cde2441c8b4009810420025db" + integrity sha512-AdYwbEZZ+6Z748A8JdNtwH7YR24HvXr/hJHL06ofipMyRchrf7Mzvk69zM24+rAm3SC3DCJK0WdbhpOLzroO+w== dependencies: - "@motionone/dom" "10.12.0" - framesync "6.0.1" + "@motionone/dom" "^10.15.3" hey-listen "^1.0.8" - popmotion "11.0.3" - style-value-types "5.0.0" - tslib "^2.1.0" + tslib "^2.4.0" optionalDependencies: "@emotion/is-prop-valid" "^0.8.2" -framesync@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b" - integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== +framesync@6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.1.2.tgz#755eff2fb5b8f3b4d2b266dd18121b300aefea27" + integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== dependencies: - tslib "^2.1.0" - -framesync@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.0.1.tgz#5e32fc01f1c42b39c654c35b16440e07a25d6f20" - integrity sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA== - dependencies: - tslib "^2.1.0" + tslib "2.4.0" fresh@0.5.2: version "0.5.2" @@ -8729,16 +8955,6 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -popmotion@11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9" - integrity sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA== - dependencies: - framesync "6.0.1" - hey-listen "^1.0.8" - style-value-types "5.0.0" - tslib "^2.1.0" - postcss-attribute-case-insensitive@^5.0.1: version "5.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" @@ -10698,14 +10914,6 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -style-value-types@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad" - integrity sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA== - dependencies: - hey-listen "^1.0.8" - tslib "^2.1.0" - stylehacks@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" @@ -10714,10 +10922,10 @@ stylehacks@^5.1.0: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== +stylis@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== supports-color@^5.3.0: version "5.5.0" @@ -11045,6 +11253,11 @@ tslib@^1.0.0, tslib@^1.10.0, tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -11128,10 +11341,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typescript@^4.9.4: + version "4.9.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" + integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== unbox-primitive@^1.0.2: version "1.0.2"