diff --git a/go.mod b/go.mod index 58aefd19..de0355cc 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,7 @@ require ( github.com/oapi-codegen/runtime v1.1.1 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/pkg/errors v0.9.1 + github.com/samber/lo v1.47.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.18.2 diff --git a/go.sum b/go.sum index cada5711..bb0dd108 100644 --- a/go.sum +++ b/go.sum @@ -275,6 +275,8 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f h1:MvTmaQdww/z0Q4wrYjDSCcZ78NoftLQyHBSLW/Cx79Y= github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= +github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= +github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= diff --git a/internal/dev_server/adapters/api.go b/internal/dev_server/adapters/api.go index 6833d32e..308ef224 100644 --- a/internal/dev_server/adapters/api.go +++ b/internal/dev_server/adapters/api.go @@ -2,6 +2,9 @@ package adapters import ( "context" + "log" + "net/url" + "strconv" ldapi "github.com/launchdarkly/api-client-go/v14" "github.com/pkg/errors" @@ -20,6 +23,7 @@ func GetApi(ctx context.Context) Api { //go:generate go run go.uber.org/mock/mockgen -destination mocks/api.go -package mocks . Api type Api interface { GetSdkKey(ctx context.Context, projectKey, environmentKey string) (string, error) + GetAllFlags(ctx context.Context, projectKey string) ([]ldapi.FeatureFlag, error) } type apiClientApi struct { @@ -31,9 +35,73 @@ func NewApi(client ldapi.APIClient) Api { } func (a apiClientApi) GetSdkKey(ctx context.Context, projectKey, environmentKey string) (string, error) { + log.Printf("GetSdkKey - projectKey: %s, environmentKey: %s", projectKey, environmentKey) environment, _, err := a.apiClient.EnvironmentsApi.GetEnvironment(ctx, projectKey, environmentKey).Execute() if err != nil { return "", errors.Wrap(err, "unable to get SDK key from LD API") } return environment.ApiKey, nil } + +func (a apiClientApi) GetAllFlags(ctx context.Context, projectKey string) ([]ldapi.FeatureFlag, error) { + log.Printf("Fetching all flags for project '%s'", projectKey) + flags, err := a.getFlags(ctx, projectKey, nil) + if err != nil { + err = errors.Wrap(err, "unable to get all flags from LD API") + } + return flags, err +} + +func (a apiClientApi) getFlags(ctx context.Context, projectKey string, href *string) ([]ldapi.FeatureFlag, error) { + var featureFlags *ldapi.FeatureFlags + var err error + if href == nil { + featureFlags, _, err = a.apiClient.FeatureFlagsApi.GetFeatureFlags(ctx, projectKey). + Summary(false). + Execute() + if err != nil { + return nil, err + } + } else { + limit, offset, err := parseHref(*href) + if err != nil { + return nil, errors.Wrapf(err, "unable to parse href for next link: %s", *href) + } + featureFlags, _, err = a.apiClient.FeatureFlagsApi.GetFeatureFlags(ctx, projectKey). + Summary(false). + Limit(limit). + Offset(offset). + Execute() + if err != nil { + return nil, err + } + } + flags := featureFlags.Items + if next, ok := featureFlags.Links["next"]; ok && next.Href != nil { + newFlags, err := a.getFlags(ctx, projectKey, next.Href) + if err != nil { + return nil, err + } + flags = append(flags, newFlags...) + } + return flags, nil +} + +func parseHref(href string) (limit, offset int64, err error) { + parsedUrl, err := url.Parse(href) + if err != nil { + return + } + l, err := strconv.Atoi(parsedUrl.Query().Get("limit")) + if err != nil { + return + } + o, err := strconv.Atoi(parsedUrl.Query().Get("offset")) + if err != nil { + return + } + + limit = int64(l) + offset = int64(o) + return +} diff --git a/internal/dev_server/adapters/mocks/api.go b/internal/dev_server/adapters/mocks/api.go index efacb902..26d75bc6 100644 --- a/internal/dev_server/adapters/mocks/api.go +++ b/internal/dev_server/adapters/mocks/api.go @@ -13,6 +13,7 @@ import ( context "context" reflect "reflect" + ldapi "github.com/launchdarkly/api-client-go/v14" gomock "go.uber.org/mock/gomock" ) @@ -39,6 +40,21 @@ func (m *MockApi) EXPECT() *MockApiMockRecorder { return m.recorder } +// GetAllFlags mocks base method. +func (m *MockApi) GetAllFlags(arg0 context.Context, arg1 string) ([]ldapi.FeatureFlag, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAllFlags", arg0, arg1) + ret0, _ := ret[0].([]ldapi.FeatureFlag) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAllFlags indicates an expected call of GetAllFlags. +func (mr *MockApiMockRecorder) GetAllFlags(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllFlags", reflect.TypeOf((*MockApi)(nil).GetAllFlags), arg0, arg1) +} + // GetSdkKey mocks base method. func (m *MockApi) GetSdkKey(arg0 context.Context, arg1, arg2 string) (string, error) { m.ctrl.T.Helper() diff --git a/internal/dev_server/api/api.yaml b/internal/dev_server/api/api.yaml index 6bd6e55d..bdb9c89e 100644 --- a/internal/dev_server/api/api.yaml +++ b/internal/dev_server/api/api.yaml @@ -28,7 +28,7 @@ paths: summary: updates the flag state for the given project and source environment parameters: - $ref: "#/components/parameters/projectKey" - - $ref: "#/components/parameters/expand" + - $ref: "#/components/parameters/projectExpand" responses: 200: $ref: "#/components/responses/Project" @@ -39,7 +39,7 @@ paths: summary: get the specified project and its configuration for syncing from the LaunchDarkly Service parameters: - $ref: "#/components/parameters/projectKey" - - $ref: "#/components/parameters/expand" + - $ref: "#/components/parameters/projectExpand" responses: 200: $ref: "#/components/responses/Project" @@ -49,7 +49,7 @@ paths: summary: updates the project context or sourceEnvironmentKey parameters: - $ref: "#/components/parameters/projectKey" - - $ref: "#/components/parameters/expand" + - $ref: "#/components/parameters/projectExpand" requestBody: content: application/json: @@ -79,7 +79,7 @@ paths: summary: Add the project to the dev server parameters: - $ref: "#/components/parameters/projectKey" - - $ref: "#/components/parameters/expand" + - $ref: "#/components/parameters/projectExpand" requestBody: content: application/json: @@ -143,7 +143,7 @@ components: required: true schema: type: string - expand: + projectExpand: name: expand description: Available expand options for this endpoint. in: query @@ -153,6 +153,7 @@ components: type: string enum: - overrides + - availableVariations schemas: FlagValue: description: value of a feature flag variation @@ -173,6 +174,20 @@ components: default: key: "dev-environment" kind: "user" + Variation: + description: variation of a flag + required: + - _id + - value + properties: + _id: + type: string + name: + type: string + description: + type: string + value: + $ref: '#/components/schemas/FlagValue' Project: description: Project type: object @@ -194,10 +209,17 @@ components: path: github.com/launchdarkly/ldcli/internal/dev_server/model overrides: type: object - description: flags and their values and version for a given project in the source environment + description: overridden flags for the project x-go-type: model.FlagsState x-go-type-import: path: github.com/launchdarkly/ldcli/internal/dev_server/model + availableVariations: + type: object + description: variations + additionalProperties: + type: array + items: + $ref: '#/components/schemas/Variation' _lastSyncedFromSource: type: integer x-go-type: int64 diff --git a/internal/dev_server/api/data_mapping.go b/internal/dev_server/api/data_mapping.go new file mode 100644 index 00000000..57aead5b --- /dev/null +++ b/internal/dev_server/api/data_mapping.go @@ -0,0 +1,20 @@ +package api + +import "github.com/launchdarkly/ldcli/internal/dev_server/model" + +func availableVariationsToResponseFormat(availableVariations map[string][]model.Variation) map[string][]Variation { + respAvailableVariations := make(map[string][]Variation, len(availableVariations)) + for flagKey, variationsForFlag := range availableVariations { + respVariationsForFlag := make([]Variation, 0, len(variationsForFlag)) + for _, variation := range variationsForFlag { + respVariationsForFlag = append(respVariationsForFlag, Variation{ + Id: variation.Id, + Description: variation.Description, + Name: variation.Name, + Value: variation.Value, + }) + } + respAvailableVariations[flagKey] = respVariationsForFlag + } + return respAvailableVariations +} diff --git a/internal/dev_server/api/server.gen.go b/internal/dev_server/api/server.gen.go index 5d522be1..aef4e550 100644 --- a/internal/dev_server/api/server.gen.go +++ b/internal/dev_server/api/server.gen.go @@ -19,22 +19,26 @@ import ( // Defines values for GetDevProjectsProjectKeyParamsExpand. const ( - GetDevProjectsProjectKeyParamsExpandOverrides GetDevProjectsProjectKeyParamsExpand = "overrides" + GetDevProjectsProjectKeyParamsExpandAvailableVariations GetDevProjectsProjectKeyParamsExpand = "availableVariations" + GetDevProjectsProjectKeyParamsExpandOverrides GetDevProjectsProjectKeyParamsExpand = "overrides" ) // Defines values for PatchDevProjectsProjectKeyParamsExpand. const ( - PatchDevProjectsProjectKeyParamsExpandOverrides PatchDevProjectsProjectKeyParamsExpand = "overrides" + PatchDevProjectsProjectKeyParamsExpandAvailableVariations PatchDevProjectsProjectKeyParamsExpand = "availableVariations" + PatchDevProjectsProjectKeyParamsExpandOverrides PatchDevProjectsProjectKeyParamsExpand = "overrides" ) // Defines values for PostDevProjectsProjectKeyParamsExpand. const ( - PostDevProjectsProjectKeyParamsExpandOverrides PostDevProjectsProjectKeyParamsExpand = "overrides" + PostDevProjectsProjectKeyParamsExpandAvailableVariations PostDevProjectsProjectKeyParamsExpand = "availableVariations" + PostDevProjectsProjectKeyParamsExpandOverrides PostDevProjectsProjectKeyParamsExpand = "overrides" ) // Defines values for PatchDevProjectsProjectKeySyncParamsExpand. const ( - PatchDevProjectsProjectKeySyncParamsExpandOverrides PatchDevProjectsProjectKeySyncParamsExpand = "overrides" + PatchDevProjectsProjectKeySyncParamsExpandAvailableVariations PatchDevProjectsProjectKeySyncParamsExpand = "availableVariations" + PatchDevProjectsProjectKeySyncParamsExpandOverrides PatchDevProjectsProjectKeySyncParamsExpand = "overrides" ) // Context context object to use when evaluating flags in source environment @@ -48,25 +52,38 @@ type Project struct { // LastSyncedFromSource unix timestamp for the lat time the flag values were synced from the source environment LastSyncedFromSource int64 `json:"_lastSyncedFromSource"` + // AvailableVariations variations + AvailableVariations *map[string][]Variation `json:"availableVariations,omitempty"` + // Context context object to use when evaluating flags in source environment Context Context `json:"context"` // FlagsState flags and their values and version for a given project in the source environment FlagsState *model.FlagsState `json:"flagsState,omitempty"` - // Overrides flags and their values and version for a given project in the source environment + // Overrides overridden flags for the project Overrides *model.FlagsState `json:"overrides,omitempty"` // SourceEnvironmentKey environment to copy flag values from SourceEnvironmentKey string `json:"sourceEnvironmentKey"` } -// Expand defines model for expand. -type Expand = []string +// Variation variation of a flag +type Variation struct { + Id string `json:"_id"` + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` + + // Value value of a feature flag variation + Value FlagValue `json:"value"` +} // FlagKey defines model for flagKey. type FlagKey = string +// ProjectExpand defines model for projectExpand. +type ProjectExpand = []string + // ProjectKey defines model for projectKey. type ProjectKey = string @@ -91,7 +108,7 @@ type FlagOverride struct { // GetDevProjectsProjectKeyParams defines parameters for GetDevProjectsProjectKey. type GetDevProjectsProjectKeyParams struct { // Expand Available expand options for this endpoint. - Expand *Expand `form:"expand,omitempty" json:"expand,omitempty"` + Expand *ProjectExpand `form:"expand,omitempty" json:"expand,omitempty"` } // GetDevProjectsProjectKeyParamsExpand defines parameters for GetDevProjectsProjectKey. @@ -109,7 +126,7 @@ type PatchDevProjectsProjectKeyJSONBody struct { // PatchDevProjectsProjectKeyParams defines parameters for PatchDevProjectsProjectKey. type PatchDevProjectsProjectKeyParams struct { // Expand Available expand options for this endpoint. - Expand *Expand `form:"expand,omitempty" json:"expand,omitempty"` + Expand *ProjectExpand `form:"expand,omitempty" json:"expand,omitempty"` } // PatchDevProjectsProjectKeyParamsExpand defines parameters for PatchDevProjectsProjectKey. @@ -127,7 +144,7 @@ type PostDevProjectsProjectKeyJSONBody struct { // PostDevProjectsProjectKeyParams defines parameters for PostDevProjectsProjectKey. type PostDevProjectsProjectKeyParams struct { // Expand Available expand options for this endpoint. - Expand *Expand `form:"expand,omitempty" json:"expand,omitempty"` + Expand *ProjectExpand `form:"expand,omitempty" json:"expand,omitempty"` } // PostDevProjectsProjectKeyParamsExpand defines parameters for PostDevProjectsProjectKey. @@ -136,7 +153,7 @@ type PostDevProjectsProjectKeyParamsExpand string // PatchDevProjectsProjectKeySyncParams defines parameters for PatchDevProjectsProjectKeySync. type PatchDevProjectsProjectKeySyncParams struct { // Expand Available expand options for this endpoint. - Expand *Expand `form:"expand,omitempty" json:"expand,omitempty"` + Expand *ProjectExpand `form:"expand,omitempty" json:"expand,omitempty"` } // PatchDevProjectsProjectKeySyncParamsExpand defines parameters for PatchDevProjectsProjectKeySync. diff --git a/internal/dev_server/api/server.go b/internal/dev_server/api/server.go index 7ae6bfcf..23cdccad 100644 --- a/internal/dev_server/api/server.go +++ b/internal/dev_server/api/server.go @@ -78,6 +78,14 @@ func (s Server) GetDevProjectsProjectKey(ctx context.Context, request GetDevProj } response.Overrides = &respOverrides } + if item == "availableVariations" { + availableVariations, err := store.GetAvailableVariationsForProject(ctx, request.ProjectKey) + if err != nil { + return nil, err + } + respAvailableVariations := availableVariationsToResponseFormat(availableVariations) + response.AvailableVariations = &respAvailableVariations + } } } @@ -135,6 +143,14 @@ func (s Server) PostDevProjectsProjectKey(ctx context.Context, request PostDevPr } response.Overrides = &respOverrides } + if item == "availableVariations" { + availableVariations, err := store.GetAvailableVariationsForProject(ctx, request.ProjectKey) + if err != nil { + return nil, err + } + respAvailableVariations := availableVariationsToResponseFormat(availableVariations) + response.AvailableVariations = &respAvailableVariations + } } } @@ -180,6 +196,14 @@ func (s Server) PatchDevProjectsProjectKey(ctx context.Context, request PatchDev } response.Overrides = &respOverrides } + if item == "availableVariations" { + availableVariations, err := store.GetAvailableVariationsForProject(ctx, request.ProjectKey) + if err != nil { + return nil, err + } + respAvailableVariations := availableVariationsToResponseFormat(availableVariations) + response.AvailableVariations = &respAvailableVariations + } } } @@ -191,7 +215,7 @@ func (s Server) PatchDevProjectsProjectKey(ctx context.Context, request PatchDev func (s Server) PatchDevProjectsProjectKeySync(ctx context.Context, request PatchDevProjectsProjectKeySyncRequestObject) (PatchDevProjectsProjectKeySyncResponseObject, error) { store := model.StoreFromContext(ctx) - project, err := model.SyncProject(ctx, request.ProjectKey) + project, err := model.UpdateProject(ctx, request.ProjectKey, nil, nil) if err != nil { return nil, err } @@ -225,6 +249,14 @@ func (s Server) PatchDevProjectsProjectKeySync(ctx context.Context, request Patc } response.Overrides = &respOverrides } + if item == "availableVariations" { + availableVariations, err := store.GetAvailableVariationsForProject(ctx, request.ProjectKey) + if err != nil { + return nil, err + } + respAvailableVariations := availableVariationsToResponseFormat(availableVariations) + response.AvailableVariations = &respAvailableVariations + } } } diff --git a/internal/dev_server/db/sqlite.go b/internal/dev_server/db/sqlite.go index 523b4b9f..ee9e2df3 100644 --- a/internal/dev_server/db/sqlite.go +++ b/internal/dev_server/db/sqlite.go @@ -16,6 +16,8 @@ type Sqlite struct { database *sql.DB } +var _ model.Store = Sqlite{} + func (s Sqlite) GetDevProjectKeys(ctx context.Context) ([]string, error) { rows, err := s.database.Query("select key from projects") if err != nil { @@ -70,7 +72,16 @@ func (s Sqlite) UpdateProject(ctx context.Context, project model.Project) (bool, return false, errors.Wrap(err, "unable to marshal flags state when updating project") } - result, err := s.database.ExecContext(ctx, ` + tx, err := s.database.BeginTx(ctx, nil) + if err != nil { + return false, err + } + defer func() { + if err != nil { + _ = tx.Rollback() + } + }() + result, err := tx.ExecContext(ctx, ` UPDATE projects SET flag_state = ?, last_sync_time = ?, context=? WHERE key = ?; @@ -79,6 +90,24 @@ func (s Sqlite) UpdateProject(ctx context.Context, project model.Project) (bool, return false, errors.Wrap(err, "unable to execute update project") } + // Delete all and add all new variations. Definitely room for optimization... + _, err = tx.ExecContext(ctx, ` + DELETE FROM available_variations + WHERE project_key = ? + `, project.Key) + if err != nil { + return false, err + } + + err = InsertAvailableVariations(ctx, tx, project) + if err != nil { + return false, err + } + err = tx.Commit() + if err != nil { + return false, err + } + rowsAffected, err := result.RowsAffected() if err != nil { return false, err @@ -106,6 +135,24 @@ func (s Sqlite) DeleteDevProject(ctx context.Context, key string) (bool, error) return true, nil } +func InsertAvailableVariations(ctx context.Context, tx *sql.Tx, project model.Project) (err error) { + for _, variation := range project.AvailableVariations { + jsonValue, err := variation.Value.MarshalJSON() + if err != nil { + return err + } + _, err = tx.ExecContext(ctx, ` + INSERT INTO available_variations + (project_key, flag_key, id, value, description, name) + VALUES (?, ?, ?, ?, ?, ?) + `, project.Key, variation.FlagKey, variation.Id, string(jsonValue), variation.Description, variation.Name) + if err != nil { + return err + } + } + return nil +} + func (s Sqlite) InsertProject(ctx context.Context, project model.Project) (err error) { flagsStateJson, err := json.Marshal(project.AllFlagsState) if err != nil { @@ -148,8 +195,59 @@ VALUES (?, ?, ?, ?, ?) if err != nil { return } - err = tx.Commit() - return + + err = InsertAvailableVariations(ctx, tx, project) + if err != nil { + return err + } + return tx.Commit() +} + +func (s Sqlite) GetAvailableVariationsForProject(ctx context.Context, projectKey string) (map[string][]model.Variation, error) { + rows, err := s.database.QueryContext(ctx, ` + SELECT flag_key, id, name, description, value + FROM available_variations + WHERE project_key = ? + `, projectKey) + + if err != nil { + return nil, err + } + + availableVariations := make(map[string][]model.Variation) + for rows.Next() { + var flagKey string + var id string + var nameNullable sql.NullString + var descriptionNullable sql.NullString + var valueJson string + + err = rows.Scan(&flagKey, &id, &nameNullable, &descriptionNullable, &valueJson) + if err != nil { + return nil, err + } + + var value ldvalue.Value + err = json.Unmarshal([]byte(valueJson), &value) + if err != nil { + return nil, err + } + + var name, description *string + if nameNullable.Valid { + name = &nameNullable.String + } + if descriptionNullable.Valid { + description = &descriptionNullable.String + } + availableVariations[flagKey] = append(availableVariations[flagKey], model.Variation{ + Id: id, + Name: name, + Description: description, + Value: value, + }) + } + return availableVariations, nil } func (s Sqlite) GetOverridesForProject(ctx context.Context, projectKey string) (model.Overrides, error) { @@ -267,6 +365,11 @@ func (s Sqlite) runMigrations(ctx context.Context) error { if err != nil { return err } + defer func() { + if err != nil { + _ = tx.Rollback() + } + }() _, err = tx.Exec(` CREATE TABLE IF NOT EXISTS projects ( key text PRIMARY KEY, @@ -291,5 +394,21 @@ func (s Sqlite) runMigrations(ctx context.Context) error { if err != nil { return err } + + _, err = tx.Exec(` + CREATE TABLE IF NOT EXISTS available_variations ( + project_key text NOT NULL, + flag_key text NOT NULL, + id text NOT NULL, + value text NOT NULL, + description text, + name text, + FOREIGN KEY (project_key) REFERENCES projects (key) ON DELETE CASCADE, + UNIQUE (project_key, flag_key, id) ON CONFLICT REPLACE + )`) + if err != nil { + return err + } + return tx.Commit() } diff --git a/internal/dev_server/db/sqlite_test.go b/internal/dev_server/db/sqlite_test.go index acbed71f..2352915f 100644 --- a/internal/dev_server/db/sqlite_test.go +++ b/internal/dev_server/db/sqlite_test.go @@ -10,6 +10,7 @@ import ( "github.com/launchdarkly/go-sdk-common/v3/ldvalue" "github.com/launchdarkly/ldcli/internal/dev_server/db" "github.com/launchdarkly/ldcli/internal/dev_server/model" + "github.com/samber/lo" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -38,6 +39,31 @@ func TestDBFunctions(t *testing.T) { "flag-1": model.FlagState{Value: ldvalue.Bool(true), Version: 2}, "flag-2": model.FlagState{Value: ldvalue.String("cool"), Version: 2}, }, + AvailableVariations: []model.FlagVariation{ + { + FlagKey: "flag-1", + Variation: model.Variation{ + Id: "1", + Value: ldvalue.Bool(true), + }, + }, + { + FlagKey: "flag-1", + Variation: model.Variation{ + Id: "2", + Value: ldvalue.Bool(false), + }, + }, + { + FlagKey: "flag-2", + Variation: model.Variation{ + Id: "3", + Description: lo.ToPtr("cool description"), + Name: lo.ToPtr("cool name"), + Value: ldvalue.String("Cool"), + }, + }, + }, }, { Key: "proj-to-delete", @@ -48,6 +74,22 @@ func TestDBFunctions(t *testing.T) { "flag-1": model.FlagState{Value: ldvalue.Int(123), Version: 2}, "flag-2": model.FlagState{Value: ldvalue.Float64(99.99), Version: 2}, }, + AvailableVariations: []model.FlagVariation{ + { + FlagKey: "flag-1", + Variation: model.Variation{ + Id: "1", + Value: ldvalue.Int(123), + }, + }, + { + FlagKey: "flag-2", + Variation: model.Variation{ + Id: "2", + Value: ldvalue.Float64(99.99), + }, + }, + }, }, } actualProjectKeys := make(map[string]bool, len(projects)) @@ -93,28 +135,93 @@ func TestDBFunctions(t *testing.T) { assert.True(t, expected.LastSyncTime.Equal(p.LastSyncTime)) }) + t.Run("GetAvailableVariations returns variations", func(t *testing.T) { + availableVariations, err := store.GetAvailableVariationsForProject(ctx, projects[0].Key) + require.NoError(t, err) + require.Len(t, availableVariations, 2) + flag1Variations := availableVariations["flag-1"] + assert.Len(t, flag1Variations, 2) + flag2Variations := availableVariations["flag-2"] + assert.Len(t, flag2Variations, 1) + + expectedFlagVariations := projects[0].AvailableVariations + assert.Equal(t, expectedFlagVariations[2].Id, flag2Variations[0].Id) + assert.Equal(t, *expectedFlagVariations[2].Name, *flag2Variations[0].Name) + assert.Equal(t, *expectedFlagVariations[2].Description, *flag2Variations[0].Description) + assert.Equal(t, expectedFlagVariations[2].Value.String(), flag2Variations[0].Value.String()) + assert.Equal(t, ldvalue.StringType, flag2Variations[0].Value.Type()) + for _, variation := range flag1Variations { + if variation.Value.BoolValue() { + assert.Equal(t, expectedFlagVariations[0].Variation, variation) + } else { + assert.Equal(t, expectedFlagVariations[1].Variation, variation) + } + } + }) + t.Run("UpdateProject updates flag state, sync time, context but not source environment key", func(t *testing.T) { - projects[0].Context = ldcontext.New(t.Name() + "blah") - projects[0].AllFlagsState = model.FlagsState{ + project := projects[0] + project.Context = ldcontext.New(t.Name() + "blah") + project.AllFlagsState = model.FlagsState{ "flag-1": model.FlagState{Value: ldvalue.Bool(false), Version: 3}, "flag-2": model.FlagState{Value: ldvalue.String("cool beeans"), Version: 3}, } - projects[0].LastSyncTime = time.Now().Add(time.Hour) + project.LastSyncTime = time.Now().Add(time.Hour) oldSourceEnvKey := projects[0].SourceEnvironmentKey - projects[0].SourceEnvironmentKey = "new-env" + project.SourceEnvironmentKey = "new-env" + project.AvailableVariations = []model.FlagVariation{ + { + FlagKey: "flag-1", + Variation: model.Variation{ + Id: "1", + Value: ldvalue.Bool(true), + }, + }, + { + FlagKey: "flag-1", + Variation: model.Variation{ + Id: "2", + Value: ldvalue.Bool(false), + }, + }, + { + FlagKey: "flag-2", + Variation: model.Variation{ + Id: "3", + Description: lo.ToPtr("cool description"), + Name: lo.ToPtr("cool name"), + Value: ldvalue.String("cool beans"), + }, + }, + } - updated, err := store.UpdateProject(ctx, projects[0]) + updated, err := store.UpdateProject(ctx, project) assert.NoError(t, err) assert.True(t, updated) - newProj, err := store.GetDevProject(ctx, projects[0].Key) + newProj, err := store.GetDevProject(ctx, project.Key) assert.NoError(t, err) assert.NotNil(t, newProj) - assert.Equal(t, projects[0].Key, newProj.Key) - assert.Equal(t, projects[0].AllFlagsState, newProj.AllFlagsState) + assert.Equal(t, project.Key, newProj.Key) + assert.Equal(t, project.AllFlagsState, newProj.AllFlagsState) assert.Equal(t, oldSourceEnvKey, newProj.SourceEnvironmentKey) - assert.Equal(t, projects[0].Context, newProj.Context) - assert.True(t, projects[0].LastSyncTime.Equal(newProj.LastSyncTime)) + assert.Equal(t, project.Context, newProj.Context) + assert.True(t, project.LastSyncTime.Equal(newProj.LastSyncTime)) + + availableVariations, err := store.GetAvailableVariationsForProject(ctx, projects[0].Key) + require.NoError(t, err) + require.Len(t, availableVariations, 2) + flag1Variations := availableVariations["flag-1"] + assert.Len(t, flag1Variations, 2) + flag2Variations := availableVariations["flag-2"] + assert.Len(t, flag2Variations, 1) + + expectedFlagVariation := project.AvailableVariations[2] + assert.Equal(t, expectedFlagVariation.Id, flag2Variations[0].Id) + assert.Equal(t, *expectedFlagVariation.Name, *flag2Variations[0].Name) + assert.Equal(t, *expectedFlagVariation.Description, *flag2Variations[0].Description) + assert.Equal(t, expectedFlagVariation.Value.String(), flag2Variations[0].Value.String()) + assert.Equal(t, ldvalue.StringType, flag2Variations[0].Value.Type()) }) t.Run("UpdateProject returns false if project does not exist", func(t *testing.T) { diff --git a/internal/dev_server/model/mocks/store.go b/internal/dev_server/model/mocks/store.go index 2ea32011..1fd95209 100644 --- a/internal/dev_server/model/mocks/store.go +++ b/internal/dev_server/model/mocks/store.go @@ -69,6 +69,21 @@ func (mr *MockStoreMockRecorder) DeleteDevProject(arg0, arg1 any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteDevProject", reflect.TypeOf((*MockStore)(nil).DeleteDevProject), arg0, arg1) } +// GetAvailableVariationsForProject mocks base method. +func (m *MockStore) GetAvailableVariationsForProject(arg0 context.Context, arg1 string) (map[string][]model.Variation, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAvailableVariationsForProject", arg0, arg1) + ret0, _ := ret[0].(map[string][]model.Variation) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAvailableVariationsForProject indicates an expected call of GetAvailableVariationsForProject. +func (mr *MockStoreMockRecorder) GetAvailableVariationsForProject(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAvailableVariationsForProject", reflect.TypeOf((*MockStore)(nil).GetAvailableVariationsForProject), arg0, arg1) +} + // GetDevProject mocks base method. func (m *MockStore) GetDevProject(arg0 context.Context, arg1 string) (*model.Project, error) { m.ctrl.T.Helper() diff --git a/internal/dev_server/model/project.go b/internal/dev_server/model/project.go index 6d2677cb..b594abaf 100644 --- a/internal/dev_server/model/project.go +++ b/internal/dev_server/model/project.go @@ -5,6 +5,7 @@ import ( "time" "github.com/launchdarkly/go-sdk-common/v3/ldcontext" + "github.com/launchdarkly/go-sdk-common/v3/ldvalue" "github.com/launchdarkly/ldcli/internal/dev_server/adapters" "github.com/pkg/errors" ) @@ -15,6 +16,7 @@ type Project struct { Context ldcontext.Context LastSyncTime time.Time AllFlagsState FlagsState + AvailableVariations []FlagVariation } // CreateProject creates a project and adds it to the database. @@ -29,15 +31,10 @@ func CreateProject(ctx context.Context, projectKey, sourceEnvironmentKey string, } else { project.Context = *ldCtx } - - flagsState, err := project.FetchFlagState(ctx) + err := project.refreshExternalState(ctx) if err != nil { return Project{}, err } - - project.AllFlagsState = flagsState - project.LastSyncTime = time.Now() - store := StoreFromContext(ctx) err = store.InsertProject(ctx, project) if err != nil { @@ -46,6 +43,22 @@ func CreateProject(ctx context.Context, projectKey, sourceEnvironmentKey string, return project, nil } +func (project *Project) refreshExternalState(ctx context.Context) error { + flagsState, err := project.fetchFlagState(ctx) + if err != nil { + return err + } + project.AllFlagsState = flagsState + project.LastSyncTime = time.Now() + + availableVariations, err := project.fetchAvailableVariations(ctx) + if err != nil { + return err + } + project.AvailableVariations = availableVariations + return nil +} + func UpdateProject(ctx context.Context, projectKey string, context *ldcontext.Context, sourceEnvironmentKey *string) (Project, error) { store := StoreFromContext(ctx) project, err := store.GetDevProject(ctx, projectKey) @@ -60,40 +73,11 @@ func UpdateProject(ctx context.Context, projectKey string, context *ldcontext.Co project.SourceEnvironmentKey = *sourceEnvironmentKey } - if context != nil || sourceEnvironmentKey != nil { - flagsState, err := project.FetchFlagState(ctx) - if err != nil { - return Project{}, err - } - project.AllFlagsState = flagsState - project.LastSyncTime = time.Now() - } - - updated, err := store.UpdateProject(ctx, *project) - if err != nil { - return Project{}, err - } - if !updated { - return Project{}, errors.New("Project not updated") - } - - return *project, nil -} - -func SyncProject(ctx context.Context, projectKey string) (Project, error) { - store := StoreFromContext(ctx) - project, err := store.GetDevProject(ctx, projectKey) - if err != nil { - return Project{}, err - } - flagsState, err := project.FetchFlagState(ctx) + err = project.refreshExternalState(ctx) if err != nil { return Project{}, err } - project.AllFlagsState = flagsState - project.LastSyncTime = time.Now() - updated, err := store.UpdateProject(ctx, *project) if err != nil { return Project{}, err @@ -114,14 +98,14 @@ func SyncProject(ctx context.Context, projectKey string) (Project, error) { return *project, nil } -func (p Project) GetFlagStateWithOverridesForProject(ctx context.Context) (FlagsState, error) { +func (project Project) GetFlagStateWithOverridesForProject(ctx context.Context) (FlagsState, error) { store := StoreFromContext(ctx) - overrides, err := store.GetOverridesForProject(ctx, p.Key) + overrides, err := store.GetOverridesForProject(ctx, project.Key) if err != nil { - return FlagsState{}, errors.Wrapf(err, "unable to fetch overrides for project %s", p.Key) + return FlagsState{}, errors.Wrapf(err, "unable to fetch overrides for project %s", project.Key) } - withOverrides := make(FlagsState, len(p.AllFlagsState)) - for flagKey, flagState := range p.AllFlagsState { + withOverrides := make(FlagsState, len(project.AllFlagsState)) + for flagKey, flagState := range project.AllFlagsState { if override, ok := overrides.GetFlag(flagKey); ok { flagState = override.Apply(flagState) } @@ -130,16 +114,40 @@ func (p Project) GetFlagStateWithOverridesForProject(ctx context.Context) (Flags return withOverrides, nil } -func (p Project) FetchFlagState(ctx context.Context) (FlagsState, error) { +func (project Project) fetchAvailableVariations(ctx context.Context) ([]FlagVariation, error) { + apiAdapter := adapters.GetApi(ctx) + flags, err := apiAdapter.GetAllFlags(ctx, project.Key) + if err != nil { + return nil, err + } + var allVariations []FlagVariation + for _, flag := range flags { + flagKey := flag.Key + for _, variation := range flag.Variations { + allVariations = append(allVariations, FlagVariation{ + FlagKey: flagKey, + Variation: Variation{ + Id: *variation.Id, + Description: variation.Description, + Name: variation.Name, + Value: ldvalue.CopyArbitraryValue(variation.Value), + }, + }) + } + } + return allVariations, nil +} + +func (project Project) fetchFlagState(ctx context.Context) (FlagsState, error) { apiAdapter := adapters.GetApi(ctx) - sdkKey, err := apiAdapter.GetSdkKey(ctx, p.Key, p.SourceEnvironmentKey) + sdkKey, err := apiAdapter.GetSdkKey(ctx, project.Key, project.SourceEnvironmentKey) flagsState := make(FlagsState) if err != nil { return flagsState, err } sdkAdapter := adapters.GetSdk(ctx) - sdkFlags, err := sdkAdapter.GetAllFlagsState(ctx, p.Context, sdkKey) + sdkFlags, err := sdkAdapter.GetAllFlagsState(ctx, project.Context, sdkKey) if err != nil { return flagsState, err } diff --git a/internal/dev_server/model/project_test.go b/internal/dev_server/model/project_test.go index 9add089c..0e7bf880 100644 --- a/internal/dev_server/model/project_test.go +++ b/internal/dev_server/model/project_test.go @@ -5,13 +5,16 @@ import ( "errors" "testing" + ldapi "github.com/launchdarkly/api-client-go/v14" "github.com/launchdarkly/go-sdk-common/v3/ldcontext" "github.com/launchdarkly/go-sdk-common/v3/ldvalue" "github.com/launchdarkly/go-server-sdk/v7/interfaces/flagstate" adapters_mocks "github.com/launchdarkly/ldcli/internal/dev_server/adapters/mocks" "github.com/launchdarkly/ldcli/internal/dev_server/model" "github.com/launchdarkly/ldcli/internal/dev_server/model/mocks" + "github.com/samber/lo" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" ) @@ -25,10 +28,27 @@ func TestCreateProject(t *testing.T) { sourceEnvKey := "env" sdkKey := "thing" - allFlags := flagstate.NewAllFlagsBuilder(). + allFlagsState := flagstate.NewAllFlagsBuilder(). AddFlag("boolFlag", flagstate.FlagState{Value: ldvalue.Bool(true)}). Build() + trueVariationId, falseVariationId := "true", "false" + allFlags := []ldapi.FeatureFlag{{ + Name: "bool flag", + Kind: "bool", + Key: "boolFlag", + Variations: []ldapi.Variation{ + { + Id: &trueVariationId, + Value: true, + }, + { + Id: &falseVariationId, + Value: false, + }, + }, + }} + t.Run("Returns error if it cant fetch flag state", func(t *testing.T) { api.EXPECT().GetSdkKey(gomock.Any(), projKey, sourceEnvKey).Return("", errors.New("fetch flag state fails")) _, err := model.CreateProject(ctx, projKey, sourceEnvKey, nil) @@ -36,9 +56,19 @@ func TestCreateProject(t *testing.T) { assert.Equal(t, "fetch flag state fails", err.Error()) }) + t.Run("Returns error if it can't fetch flags", func(t *testing.T) { + api.EXPECT().GetSdkKey(gomock.Any(), projKey, sourceEnvKey).Return(sdkKey, nil) + sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), sdkKey).Return(allFlagsState, nil) + api.EXPECT().GetAllFlags(gomock.Any(), projKey).Return(nil, errors.New("fetch flags failed")) + _, err := model.CreateProject(ctx, projKey, sourceEnvKey, nil) + assert.NotNil(t, err) + assert.Equal(t, "fetch flags failed", err.Error()) + }) + t.Run("Returns error if it fails to insert the project", func(t *testing.T) { api.EXPECT().GetSdkKey(gomock.Any(), projKey, sourceEnvKey).Return(sdkKey, nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), sdkKey).Return(allFlags, nil) + sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), sdkKey).Return(allFlagsState, nil) + api.EXPECT().GetAllFlags(gomock.Any(), projKey).Return(allFlags, nil) store.EXPECT().InsertProject(gomock.Any(), gomock.Any()).Return(errors.New("insert fails")) _, err := model.CreateProject(ctx, projKey, sourceEnvKey, nil) @@ -48,7 +78,8 @@ func TestCreateProject(t *testing.T) { t.Run("Successfully creates project", func(t *testing.T) { api.EXPECT().GetSdkKey(gomock.Any(), projKey, sourceEnvKey).Return(sdkKey, nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), sdkKey).Return(allFlags, nil) + sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), sdkKey).Return(allFlagsState, nil) + api.EXPECT().GetAllFlags(gomock.Any(), projKey).Return(allFlags, nil) store.EXPECT().InsertProject(gomock.Any(), gomock.Any()).Return(nil) p, err := model.CreateProject(ctx, projKey, sourceEnvKey, nil) @@ -58,13 +89,14 @@ func TestCreateProject(t *testing.T) { Key: projKey, SourceEnvironmentKey: sourceEnvKey, Context: ldcontext.NewBuilder("user").Key("dev-environment").Build(), - AllFlagsState: model.FromAllFlags(allFlags), + AllFlagsState: model.FromAllFlags(allFlagsState), } assert.Equal(t, expectedProj.Key, p.Key) assert.Equal(t, expectedProj.SourceEnvironmentKey, p.SourceEnvironmentKey) assert.Equal(t, expectedProj.Context, p.Context) assert.Equal(t, expectedProj.AllFlagsState, p.AllFlagsState) + //TODO add assertion on AvailableVariations }) } @@ -73,6 +105,12 @@ func TestUpdateProject(t *testing.T) { store := mocks.NewMockStore(mockController) ctx := model.ContextWithStore(context.Background(), store) ctx, api, sdk := adapters_mocks.WithMockApiAndSdk(ctx, mockController) + + observer := mocks.NewMockObserver(mockController) + observers := model.NewObservers() + observers.RegisterObserver(observer) + ctx = model.SetObserversOnContext(ctx, observers) + ldCtx := ldcontext.New(t.Name()) newSrcEnv := "newEnv" @@ -82,6 +120,22 @@ func TestUpdateProject(t *testing.T) { Context: ldcontext.New(t.Name()), } + allFlagsState := flagstate.NewAllFlagsBuilder(). + AddFlag("stringFlag", flagstate.FlagState{Value: ldvalue.String("cool")}). + Build() + + allFlags := []ldapi.FeatureFlag{{ + Name: "string flag", + Kind: "multivariate", + Key: "stringFlag", + Variations: []ldapi.Variation{ + { + Id: lo.ToPtr("string"), + Value: "cool", + }, + }, + }} + t.Run("Returns error if GetDevProject fails", func(t *testing.T) { store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&model.Project{}, errors.New("GetDevProject fails")) _, err := model.UpdateProject(ctx, proj.Key, nil, nil) @@ -89,7 +143,7 @@ func TestUpdateProject(t *testing.T) { assert.Equal(t, "GetDevProject fails", err.Error()) }) - t.Run("Passing in context triggers FetchFlagState, returns error if the fetch fails", func(t *testing.T) { + t.Run("returns error if the fetch flag state fails", func(t *testing.T) { store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("", errors.New("FetchFlagState fails")) @@ -98,10 +152,11 @@ func TestUpdateProject(t *testing.T) { assert.Equal(t, "FetchFlagState fails", err.Error()) }) - t.Run("Passing in sourceEnvironmentKey triggers FetchFlagState, returns error if UpdateProject fails", func(t *testing.T) { + t.Run("Returns error if UpdateProject fails", func(t *testing.T) { store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, newSrcEnv).Return("sdkKey", nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(flagstate.AllFlags{}, nil) + sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(allFlagsState, nil) + api.EXPECT().GetAllFlags(gomock.Any(), proj.Key).Return(allFlags, nil) store.EXPECT().UpdateProject(gomock.Any(), gomock.Any()).Return(false, errors.New("UpdateProject fails")) _, err := model.UpdateProject(ctx, proj.Key, nil, &newSrcEnv) @@ -110,75 +165,13 @@ func TestUpdateProject(t *testing.T) { }) t.Run("Returns error if project was not actually updated", func(t *testing.T) { - store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) - store.EXPECT().UpdateProject(gomock.Any(), gomock.Any()).Return(false, nil) - - _, err := model.UpdateProject(ctx, proj.Key, nil, nil) - assert.NotNil(t, err) - assert.Equal(t, "Project not updated", err.Error()) - }) - - t.Run("Return successfully", func(t *testing.T) { - store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) - store.EXPECT().UpdateProject(gomock.Any(), gomock.Any()).Return(true, nil) - - project, err := model.UpdateProject(ctx, proj.Key, nil, nil) - assert.Nil(t, err) - assert.Equal(t, proj, project) - }) -} - -func TestSyncProject(t *testing.T) { - mockController := gomock.NewController(t) - store := mocks.NewMockStore(mockController) - ctx := model.ContextWithStore(context.Background(), store) - ctx, api, sdk := adapters_mocks.WithMockApiAndSdk(ctx, mockController) - - observer := mocks.NewMockObserver(mockController) - observers := model.NewObservers() - observers.RegisterObserver(observer) - ctx = model.SetObserversOnContext(ctx, observers) - - proj := model.Project{ - Key: "projKey", - SourceEnvironmentKey: "srcEnvKey", - Context: ldcontext.New(t.Name()), - } - - t.Run("Returns error if GetDevProject fails", func(t *testing.T) { - store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&model.Project{}, errors.New("GetDevProject fails")) - _, err := model.SyncProject(ctx, proj.Key) - assert.NotNil(t, err) - assert.Equal(t, "GetDevProject fails", err.Error()) - }) - - t.Run("returns error if FetchFlagState fails", func(t *testing.T) { - store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) - api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("", errors.New("FetchFlagState fails")) - - _, err := model.SyncProject(ctx, proj.Key) - assert.NotNil(t, err) - assert.Equal(t, "FetchFlagState fails", err.Error()) - }) - - t.Run("returns error if UpdateProject fails", func(t *testing.T) { store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("sdkKey", nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(flagstate.AllFlags{}, nil) - store.EXPECT().UpdateProject(gomock.Any(), gomock.Any()).Return(false, errors.New("UpdateProject fails")) - - _, err := model.SyncProject(ctx, proj.Key) - assert.NotNil(t, err) - assert.Equal(t, "UpdateProject fails", err.Error()) - }) - - t.Run("Returns error if project was not actually updated", func(t *testing.T) { - store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) - api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("sdkKey", nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(flagstate.AllFlags{}, nil) + sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(allFlagsState, nil) + api.EXPECT().GetAllFlags(gomock.Any(), proj.Key).Return(allFlags, nil) store.EXPECT().UpdateProject(gomock.Any(), gomock.Any()).Return(false, nil) - _, err := model.SyncProject(ctx, proj.Key) + _, err := model.UpdateProject(ctx, proj.Key, nil, nil) assert.NotNil(t, err) assert.Equal(t, "Project not updated", err.Error()) }) @@ -186,18 +179,19 @@ func TestSyncProject(t *testing.T) { t.Run("Return successfully", func(t *testing.T) { store.EXPECT().GetDevProject(gomock.Any(), proj.Key).Return(&proj, nil) api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("sdkKey", nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(flagstate.AllFlags{}, nil) + sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "sdkKey").Return(allFlagsState, nil) + api.EXPECT().GetAllFlags(gomock.Any(), proj.Key).Return(allFlags, nil) store.EXPECT().UpdateProject(gomock.Any(), gomock.Any()).Return(true, nil) store.EXPECT().GetOverridesForProject(gomock.Any(), proj.Key).Return(model.Overrides{}, nil) observer. EXPECT(). Handle(model.SyncEvent{ ProjectKey: proj.Key, - AllFlagsState: model.FlagsState{}, + AllFlagsState: model.FromAllFlags(allFlagsState), }) - project, err := model.SyncProject(ctx, proj.Key) - assert.Nil(t, err) + project, err := model.UpdateProject(ctx, proj.Key, nil, nil) + require.Nil(t, err) assert.Equal(t, proj, project) }) } @@ -244,44 +238,3 @@ func TestGetFlagStateWithOverridesForProject(t *testing.T) { assert.Equal(t, 2, overriddenFlag.Version) }) } - -func TestFetchFlagState(t *testing.T) { - ctx := context.Background() - mockController := gomock.NewController(t) - ctx, api, sdk := adapters_mocks.WithMockApiAndSdk(ctx, mockController) - allFlags := flagstate.NewAllFlagsBuilder(). - AddFlag("boolFlag", flagstate.FlagState{Value: ldvalue.Bool(true)}). - Build() - - proj := model.Project{ - Key: "projKey", - SourceEnvironmentKey: "srcEnvKey", - Context: ldcontext.New(t.Name()), - } - - t.Run("Returns error if fails to fetch sdk key", func(t *testing.T) { - api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("", errors.New("sdk key fail")) - - _, err := proj.FetchFlagState(ctx) - assert.NotNil(t, err) - assert.Equal(t, "sdk key fail", err.Error()) - }) - - t.Run("Returns error if fails to fetch flags state", func(t *testing.T) { - api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("key", nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "key").Return(flagstate.AllFlags{}, errors.New("fetch fail")) - - _, err := proj.FetchFlagState(ctx) - assert.NotNil(t, err) - assert.Equal(t, "fetch fail", err.Error()) - }) - - t.Run("Successfully fetches flag state", func(t *testing.T) { - api.EXPECT().GetSdkKey(gomock.Any(), proj.Key, proj.SourceEnvironmentKey).Return("key", nil) - sdk.EXPECT().GetAllFlagsState(gomock.Any(), gomock.Any(), "key").Return(allFlags, nil) - - flagState, err := proj.FetchFlagState(ctx) - assert.Nil(t, err) - assert.Equal(t, model.FromAllFlags(allFlags), flagState) - }) -} diff --git a/internal/dev_server/model/store.go b/internal/dev_server/model/store.go index 2686a1bb..8859b944 100644 --- a/internal/dev_server/model/store.go +++ b/internal/dev_server/model/store.go @@ -25,6 +25,7 @@ type Store interface { InsertProject(ctx context.Context, project Project) error UpsertOverride(ctx context.Context, override Override) (Override, error) GetOverridesForProject(ctx context.Context, projectKey string) (Overrides, error) + GetAvailableVariationsForProject(ctx context.Context, projectKey string) (map[string][]Variation, error) } func ContextWithStore(ctx context.Context, store Store) context.Context { diff --git a/internal/dev_server/model/variations.go b/internal/dev_server/model/variations.go new file mode 100644 index 00000000..92450ea6 --- /dev/null +++ b/internal/dev_server/model/variations.go @@ -0,0 +1,15 @@ +package model + +import "github.com/launchdarkly/go-sdk-common/v3/ldvalue" + +type Variation struct { + Id string + Description *string + Name *string + Value ldvalue.Value +} + +type FlagVariation struct { + FlagKey string + Variation +} diff --git a/internal/dev_server/sdk/go_sdk_test.go b/internal/dev_server/sdk/go_sdk_test.go index b6a32370..06579661 100644 --- a/internal/dev_server/sdk/go_sdk_test.go +++ b/internal/dev_server/sdk/go_sdk_test.go @@ -45,6 +45,9 @@ func TestSDKRoutesViaGoSDK(t *testing.T) { ctx, api, sdk := mocks.WithMockApiAndSdk(ctx, mockController) api.EXPECT().GetSdkKey(gomock.Any(), projectKey, environmentKey).Return(testSdkKey, nil).AnyTimes() + api.EXPECT().GetAllFlags(gomock.Any(), projectKey). + Return(nil, nil). // Available variations are not used for evaluation + AnyTimes() // Wire up sdk routes in test server router := mux.NewRouter() @@ -129,7 +132,7 @@ func TestSDKRoutesViaGoSDK(t *testing.T) { trackers[flagKey] = flagUpdateChan } - _, err := model.SyncProject(ctx, projectKey) + _, err := model.UpdateProject(ctx, projectKey, nil, nil) require.NoError(t, err) for flagKey, value := range valuesMap { diff --git a/internal/dev_server/ui/.prettierignore b/internal/dev_server/ui/.prettierignore new file mode 100644 index 00000000..1521c8b7 --- /dev/null +++ b/internal/dev_server/ui/.prettierignore @@ -0,0 +1 @@ +dist diff --git a/internal/dev_server/ui/dist/index.html b/internal/dev_server/ui/dist/index.html index 284059d0..edbb4cd2 100644 --- a/internal/dev_server/ui/dist/index.html +++ b/internal/dev_server/ui/dist/index.html @@ -5,7 +5,7 @@ LaunchDevly - - diff --git a/internal/dev_server/ui/package-lock.json b/internal/dev_server/ui/package-lock.json index de1937d9..92289af8 100644 --- a/internal/dev_server/ui/package-lock.json +++ b/internal/dev_server/ui/package-lock.json @@ -8,17 +8,22 @@ "name": "ldcli-dev-server-ui", "version": "0.0.0", "dependencies": { - "@launchpad-ui/components": "0.2.12", + "@launchpad-ui/components": "0.4.4", "@launchpad-ui/core": "0.49.22", - "@launchpad-ui/icons": "0.18.4", - "@launchpad-ui/tokens": "0.9.12", + "@launchpad-ui/icons": "0.18.13", + "@launchpad-ui/tokens": "0.11.3", + "fuzzysort": "3.0.2", "launchdarkly-js-client-sdk": "3.4.0", + "lodash": "4.17.21", "react": "18.3.1", - "react-dom": "18.3.1" + "react-dom": "18.3.1", + "react-window": "1.8.10" }, "devDependencies": { + "@types/lodash": "4.17.7", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", + "@types/react-window": "1.8.8", "@typescript-eslint/eslint-plugin": "7.13.1", "@typescript-eslint/parser": "7.13.1", "@vitejs/plugin-react": "4.3.1", @@ -59,30 +64,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -107,12 +112,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -122,14 +127,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -137,6 +142,15 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -146,43 +160,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", @@ -197,16 +174,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -216,9 +192,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -237,22 +213,10 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -268,22 +232,22 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dev": true, "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" @@ -305,10 +269,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -347,9 +314,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -358,33 +325,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -393,12 +357,12 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -407,9 +371,9 @@ } }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", "peer": true }, "node_modules/@esbuild/aix-ppc64": { @@ -796,9 +760,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -891,9 +855,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.3.tgz", - "integrity": "sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" }, "node_modules/@formatjs/ecma402-abstract": { "version": "2.0.0", @@ -997,9 +961,9 @@ "dev": true }, "node_modules/@internationalized/date": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", - "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz", + "integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==", "dependencies": { "@swc/helpers": "^0.5.0" } @@ -1062,9 +1026,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { @@ -1078,14 +1042,14 @@ } }, "node_modules/@launchpad-ui/alert": { - "version": "0.9.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/alert/-/alert-0.9.20.tgz", - "integrity": "sha512-zKBAis4Mzxtj8+dsQ/wrVmhkLjWZ/eiN9iVTBYmfI8iqlK9ITM4+m4YzBfQHkMowML+tE405eI6gPYWYz/d7OQ==", + "version": "0.9.30", + "resolved": "https://registry.npmjs.org/@launchpad-ui/alert/-/alert-0.9.30.tgz", + "integrity": "sha512-Ypsw01C2/rXA7qQin0MhN+ok18kqV0Nar/WRE28hAGLGdepnYJ54qyI/32Q5qRxH0s58DORYYt2lcCdmuLN6NA==", "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@react-stately/utils": "3.10.1", + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@react-stately/utils": "3.10.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1094,12 +1058,12 @@ } }, "node_modules/@launchpad-ui/avatar": { - "version": "0.6.30", - "resolved": "https://registry.npmjs.org/@launchpad-ui/avatar/-/avatar-0.6.30.tgz", - "integrity": "sha512-b0IoCn0Jgq6DpxUI5lbiriyzxSKvFTd2b6/cx3mzD0y/6lgFBz3LaFNj6FXhb6b+qMchK2DkSfYKV+ErsqWa/w==", + "version": "0.6.39", + "resolved": "https://registry.npmjs.org/@launchpad-ui/avatar/-/avatar-0.6.39.tgz", + "integrity": "sha512-43In06/xZSCpCplH4L8wvgDlRTjMFhtwBOMk+zqvr1t+g22CWgxtdGJRLbrruuMNb+e/VbpsSqsV1AuNzHjJHw==", "dependencies": { - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1108,13 +1072,13 @@ } }, "node_modules/@launchpad-ui/banner": { - "version": "0.10.30", - "resolved": "https://registry.npmjs.org/@launchpad-ui/banner/-/banner-0.10.30.tgz", - "integrity": "sha512-b77fZA6es+lLMCoqKHidb3ayh3r9FsUo9Rq3ZZm4D4Wk8qxi2lwORU/5+R7rGWq5kTfaBRCNiDGbGWOGcQCZng==", + "version": "0.10.39", + "resolved": "https://registry.npmjs.org/@launchpad-ui/banner/-/banner-0.10.39.tgz", + "integrity": "sha512-2qAgxQxzDQi3syaDGQQcAgcR+KA5s4zzeiVFd222hJHpcfW2jq1vVmZYNl2h/6+XPd5Vws9B9CHdTsbTDPio6w==", "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1123,13 +1087,13 @@ } }, "node_modules/@launchpad-ui/box": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@launchpad-ui/box/-/box-0.1.13.tgz", - "integrity": "sha512-uoErz95ETafuMmAeSPVCMovT7gB7qyDWOkQB+kA8fQwtIl7/JxuawcsRl00cgVkyNv2mhs7o4PwIPhfAT3KDwg==", + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@launchpad-ui/box/-/box-0.1.18.tgz", + "integrity": "sha512-yliur10GFYFdeXkRSuccE6ws89aot3UqedNSiIQ/0Gzka2dwk0cZrMczmSmkld4reVQLePkE5Wnihk3WBSnKAA==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/vars": "~0.2.19", - "@radix-ui/react-slot": "1.0.2", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/vars": "~0.2.24", + "@radix-ui/react-slot": "1.1.0", "@vanilla-extract/dynamic": "2.1.0", "rainbow-sprinkles": "0.17.0" }, @@ -1140,13 +1104,13 @@ } }, "node_modules/@launchpad-ui/button": { - "version": "0.12.17", - "resolved": "https://registry.npmjs.org/@launchpad-ui/button/-/button-0.12.17.tgz", - "integrity": "sha512-6XT0wXZxZKnfowU/H+hrlxjFCoVCKKMqaQsnViABubphLQvo8KXX8xskzwA1GXGGBEh2U5pykkfPlmFCEC5vzw==", + "version": "0.12.26", + "resolved": "https://registry.npmjs.org/@launchpad-ui/button/-/button-0.12.26.tgz", + "integrity": "sha512-kgsrcDSdb8mldqag/MtqO7jDduhFetjlSxo6mNikdoh2+R/aNNA1du1/7ClaaluJcVyS66n5L5YV2BnvAzfQcg==", "dependencies": { - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@radix-ui/react-slot": "1.0.2", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@radix-ui/react-slot": "1.1.0", "classix": "2.1.17" }, "peerDependencies": { @@ -1155,12 +1119,12 @@ } }, "node_modules/@launchpad-ui/card": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/card/-/card-0.2.35.tgz", - "integrity": "sha512-tMwD7ObfhS6YjbrboBep35nTzHogUeuNTI/27OtfdwmF0SRvuKmA/PaXAE1B5SSyepZmJMHKnzMn2suWfWarlA==", + "version": "0.2.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/card/-/card-0.2.46.tgz", + "integrity": "sha512-hIAUdQud6ubgouqJ/uH1ysqBLSG8QG4OwRLnk7Y3iYpVvYh7MUfuhjtKMHOMZZpfYFt6sMRvfFBVme0vdDmUZA==", "dependencies": { - "@launchpad-ui/form": "~0.11.20", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/form": "~0.11.31", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1169,12 +1133,12 @@ } }, "node_modules/@launchpad-ui/chip": { - "version": "0.9.30", - "resolved": "https://registry.npmjs.org/@launchpad-ui/chip/-/chip-0.9.30.tgz", - "integrity": "sha512-+n/yYq3FU1JnFsKs5cYg0tsEBl7oU2a19iiiiTvDBXmcEV762plOwo/Vsh+9nbh5kbjUpwLypNgpsQqhz5wgCg==", + "version": "0.9.39", + "resolved": "https://registry.npmjs.org/@launchpad-ui/chip/-/chip-0.9.39.tgz", + "integrity": "sha512-tPxGmDF5E+D8jZ2woEJxTO8WYnaYcDRicw7L9X4+11TygyTuWPAMIiWu5e79O4tPEeHJgxJJTqXSlu0AeF9Jqw==", "dependencies": { - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1183,14 +1147,14 @@ } }, "node_modules/@launchpad-ui/clipboard": { - "version": "0.11.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/clipboard/-/clipboard-0.11.35.tgz", - "integrity": "sha512-ZXuRcFC3u00jbTAWhRmW6/rlcJYOXTXMCUtx/ytOpFdr7cD80gRuUFl/OyNgXJOOEnXP3ZT8TR4IHZWmlcrI9w==", - "dependencies": { - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@radix-ui/react-slot": "1.0.2", + "version": "0.11.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/clipboard/-/clipboard-0.11.46.tgz", + "integrity": "sha512-mpiHFtslmLLWMixbvR3EyKZqmO+Ujf0f1gGG+Xmc13fqsgX64l3N7Hmgg2ozYI6l3ANIvR3/7JeGju8RzSU+sg==", + "dependencies": { + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@radix-ui/react-slot": "1.1.0", "@react-aria/live-announcer": "3.3.4", "classix": "2.1.17" }, @@ -1200,13 +1164,13 @@ } }, "node_modules/@launchpad-ui/collapsible": { - "version": "0.1.61", - "resolved": "https://registry.npmjs.org/@launchpad-ui/collapsible/-/collapsible-0.1.61.tgz", - "integrity": "sha512-13jplhIlUUxgaCeLCBAM/pkCYCNLEW1TaBwMHEVgelhcCu08JDU9VmSzONnJDa5KdzOWv7Ob64868R8gwwb+CA==", + "version": "0.1.70", + "resolved": "https://registry.npmjs.org/@launchpad-ui/collapsible/-/collapsible-0.1.70.tgz", + "integrity": "sha512-Yg+PnmVoZI1jT3LDf2bWBoGm3CcCAzmG78Q5gGHO8cZw0w7FDZbLE84g0CVjkNq4Clge0RdNxFaQ/ZpzMK6MTg==", "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1215,11 +1179,11 @@ } }, "node_modules/@launchpad-ui/columns": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/@launchpad-ui/columns/-/columns-0.1.22.tgz", - "integrity": "sha512-HURsO+6Xk6QwnnLfFedXwAn38sdZ8xxFToXmbawtD07+uSnVDJULwDVAJytMD+NlXqFCsAYhjBZoBjrwUaRBCw==", + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/@launchpad-ui/columns/-/columns-0.1.27.tgz", + "integrity": "sha512-5xROcntPUdlBxIvK/e2GNPm8539PAd1G7RbWL63A4ePmXqzGAHRUFqQAK865TknqepSqxQdLoporCYAYVvGkvg==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "@launchpad-ui/types": "~0.1.1", "classix": "2.1.17" }, @@ -1229,22 +1193,21 @@ } }, "node_modules/@launchpad-ui/components": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@launchpad-ui/components/-/components-0.2.12.tgz", - "integrity": "sha512-bmhVFxcvmy+2F0dr04Qpfkp7mMNOp5AP/v7tftvTLLhfaya8Vh+75wCvsvgphoFQq0JSbf0KVfXOMQuxF5yGsQ==", - "dependencies": { - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/interactions": "3.21.3", - "@react-aria/toast": "3.0.0-beta.12", - "@react-aria/utils": "3.24.1", - "@react-stately/toast": "3.0.0-beta.4", - "@react-types/shared": "3.23.1", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@launchpad-ui/components/-/components-0.4.4.tgz", + "integrity": "sha512-xHUrCJ+jEbnACLaj4gZCFrxyS6GD6u2M6bD2vkwlSbNlH6+N1dd/DabWmsWkvYA8bFXdwqyiKeDlBx+k+onUeg==", + "dependencies": { + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/toast": "3.0.0-beta.15", + "@react-aria/utils": "3.25.2", + "@react-stately/toast": "3.0.0-beta.5", + "@react-stately/utils": "3.10.3", + "@react-types/shared": "3.24.1", "class-variance-authority": "0.7.0", - "react-aria": "3.33.1", - "react-aria-components": "1.2.1", - "react-router-dom": "6.16.0", - "react-stately": "3.31.1" + "react-aria": "3.34.3", + "react-aria-components": "1.3.3", + "react-router-dom": "6.16.0" }, "peerDependencies": { "react": "18.3.1", @@ -1304,11 +1267,11 @@ } }, "node_modules/@launchpad-ui/counter": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@launchpad-ui/counter/-/counter-0.4.16.tgz", - "integrity": "sha512-LH2uN4AV+cAHdVJuS2D3Rg/IJP706cw1nWXr0VPPW8ihW1fa1U/klUmmiSXKtvtjmcbdLyGB6Y7dKKithyAoUw==", + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@launchpad-ui/counter/-/counter-0.4.21.tgz", + "integrity": "sha512-XL2W99Ql2lFWSMaCxqlbAo3nzkRy23N5fovFDw4AwToQn9M/EQFz7b0Gx0r/rWImu7liQ4JshFqHho9FuaariA==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1317,45 +1280,45 @@ } }, "node_modules/@launchpad-ui/data-table": { - "version": "0.2.21", - "resolved": "https://registry.npmjs.org/@launchpad-ui/data-table/-/data-table-0.2.21.tgz", - "integrity": "sha512-GEqR07JKgC18O2YYwyxKl7SNLgkI6KCbcnGa0eHP/6YAZSAZFwPJ289JEfyKZTLKEosgbplQV1SGNglKOWaLRQ==", - "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/vars": "~0.2.19", - "@react-aria/checkbox": "3.14.3", - "@react-aria/focus": "3.17.1", - "@react-aria/table": "3.14.1", - "@react-aria/utils": "3.24.1", - "@react-aria/visually-hidden": "3.8.12", - "@react-stately/table": "3.11.8", - "@react-stately/toggle": "3.7.4", - "@react-types/grid": "3.2.6", + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/@launchpad-ui/data-table/-/data-table-0.2.28.tgz", + "integrity": "sha512-0phEF1k/xp0Al0NLvyccl653S+bAuP2JcziLSTDabkhExZAelP/HirqjPDkOi5x1It0D7aFxEk3qyvdBnv4Law==", + "dependencies": { + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/vars": "~0.2.24", + "@react-aria/checkbox": "3.14.6", + "@react-aria/focus": "3.18.2", + "@react-aria/table": "3.15.3", + "@react-aria/utils": "3.25.2", + "@react-aria/visually-hidden": "3.8.15", + "@react-stately/table": "3.12.2", + "@react-stately/toggle": "3.7.7", + "@react-types/grid": "3.2.8", "@vanilla-extract/recipes": "^0.5.0", "classix": "2.1.17" }, "peerDependencies": { - "@react-stately/table": "3.11.8", + "@react-stately/table": "3.12.2", "@vanilla-extract/css": "^1.14.0", "react": "18.3.1", "react-dom": "18.3.1" } }, "node_modules/@launchpad-ui/drawer": { - "version": "0.5.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/drawer/-/drawer-0.5.35.tgz", - "integrity": "sha512-IlKpK38YHIJJPJSZSyX7W5GoixukOzYk0BRoYcG18GoYS5orf8w4yCBWx93xh56/s71ZyMaJSlYOmv0eh3WUEg==", + "version": "0.5.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/drawer/-/drawer-0.5.46.tgz", + "integrity": "sha512-92heu24Zzlmnk9Utf9rk+KrKMaJz8jijchTL6f/VhGC7Nv2sicpOrYq6hEhVqFWB4VHdHkQLxS+1aZWIQGLTLw==", "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/focus-trap": "~0.1.20", - "@launchpad-ui/icons": "~0.18.4", + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/focus-trap": "~0.1.23", + "@launchpad-ui/icons": "~0.18.13", "@launchpad-ui/portal": "~0.1.5", - "@launchpad-ui/progress": "~0.5.47", - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/interactions": "3.21.3", - "@react-aria/overlays": "3.22.1", + "@launchpad-ui/progress": "~0.5.52", + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/interactions": "3.22.2", + "@react-aria/overlays": "3.23.2", "classix": "2.1.17", - "framer-motion": "11.2.4" + "framer-motion": "11.3.0" }, "peerDependencies": { "react": "18.3.1", @@ -1363,15 +1326,15 @@ } }, "node_modules/@launchpad-ui/dropdown": { - "version": "0.6.109", - "resolved": "https://registry.npmjs.org/@launchpad-ui/dropdown/-/dropdown-0.6.109.tgz", - "integrity": "sha512-vKwDHSniDZCyK4NZo7Q8GhxK56HexSnFb7dc5075K6zgIDNkVMyY9WiUbD/PYkOIVWuKWn+2F+4tla6fIHQ5dA==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/utils": "3.24.1", + "version": "0.6.120", + "resolved": "https://registry.npmjs.org/@launchpad-ui/dropdown/-/dropdown-0.6.120.tgz", + "integrity": "sha512-3feDZFSGjdqu/o7CKttSPdeljBg4fghogYP7D7+m9zJBEOyqSojsHQTjvoSOrGWKFPzEh77g9LBH5QLFvmtigg==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/utils": "3.25.2", "classix": "2.1.17" }, "peerDependencies": { @@ -1380,17 +1343,17 @@ } }, "node_modules/@launchpad-ui/filter": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/filter/-/filter-0.7.20.tgz", - "integrity": "sha512-8+KcL5xZKH7sYsyj8Tz2pr2QtMA1AjDF5bv/JkIKWgFLXsUdzvXk2JoTKDRq3wI72T3A9UGiYI4zxX7+5VpFfw==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/dropdown": "~0.6.109", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/menu": "~0.13.20", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@react-aria/visually-hidden": "3.8.12", + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@launchpad-ui/filter/-/filter-0.7.31.tgz", + "integrity": "sha512-Ei9vHhGsrTnC8mft6WOJm0ui4ewp096lyxGqi3l5XuDhVKsTmHlfvMKc89xK/TVz6GehLPdmQFmPrclCSJYG/Q==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/dropdown": "~0.6.120", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/menu": "~0.13.31", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@react-aria/visually-hidden": "3.8.15", "classix": "2.1.17" }, "peerDependencies": { @@ -1399,11 +1362,11 @@ } }, "node_modules/@launchpad-ui/focus-trap": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/focus-trap/-/focus-trap-0.1.20.tgz", - "integrity": "sha512-n/nHfKaj5G8rxw9ok10llFff4QmyUPUhMlISBuh7ZuMW0GeBD5EqLiE64IyXDCSAFJqUt6nvx+peN9tHyqatsQ==", + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@launchpad-ui/focus-trap/-/focus-trap-0.1.23.tgz", + "integrity": "sha512-2yxkEeLXojMGg3r2Tdogt+3s8phOR4VJRUmmbdC8+l5PlmFnoU6+yMRuW1MynXor2Ty9Ee+5oo55zVNqirTYnw==", "dependencies": { - "@react-aria/focus": "3.17.1" + "@react-aria/focus": "3.18.2" }, "peerDependencies": { "react": "18.3.1", @@ -1411,19 +1374,19 @@ } }, "node_modules/@launchpad-ui/form": { - "version": "0.11.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/form/-/form-0.11.20.tgz", - "integrity": "sha512-X6Gx2p3wWC8wdZMYV7VM8K0Q9BMRi5jP8/RDR2GP9NyQ+4It6XXwL2vTmlaOQhdiJfILDlaSQqTYxYZNF342Pw==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@react-aria/button": "3.9.5", - "@react-aria/i18n": "3.11.1", - "@react-aria/numberfield": "3.11.3", - "@react-aria/visually-hidden": "3.8.12", - "@react-stately/numberfield": "3.9.3", + "version": "0.11.31", + "resolved": "https://registry.npmjs.org/@launchpad-ui/form/-/form-0.11.31.tgz", + "integrity": "sha512-XvhhOFvCEgxtjUiqsR4jvnLh8oXgIIvunhDOjqRZ36i9p1oMlc9/01H/Ox+kSrmw0vURcEHdaegQJ1mbTiHWqQ==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@react-aria/button": "3.9.8", + "@react-aria/i18n": "3.12.2", + "@react-aria/numberfield": "3.11.6", + "@react-aria/visually-hidden": "3.8.15", + "@react-stately/numberfield": "3.9.6", "classix": "2.1.17" }, "peerDependencies": { @@ -1432,11 +1395,11 @@ } }, "node_modules/@launchpad-ui/icons": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/@launchpad-ui/icons/-/icons-0.18.4.tgz", - "integrity": "sha512-hcHUJFcxxPRs8PIWXZHAQGmezecEW+SUAoJ/FGAjtZFxse+iHD/IxMyzNIvNiWOqTFjew7Jt16U9veHvJfth4A==", + "version": "0.18.13", + "resolved": "https://registry.npmjs.org/@launchpad-ui/icons/-/icons-0.18.13.tgz", + "integrity": "sha512-/qzD3iDgzUQKr8Lv6G3ipNcLvNWkk5RsCAyLk2dECIsfkpLyIlBrrLgnjU4XcD4EykYQ/SxxMWwhL6/XYgumTg==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1445,11 +1408,11 @@ } }, "node_modules/@launchpad-ui/inline": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/@launchpad-ui/inline/-/inline-0.1.22.tgz", - "integrity": "sha512-v0gdWJzgQhWbLpo45Gw9DiT0bK5OEmb6pf6zpIu1mavvfpgqRoI724DIKcgXJQ7zoP+Hna3YtCY8HZqGMfqpEw==", + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/@launchpad-ui/inline/-/inline-0.1.27.tgz", + "integrity": "sha512-lthRDiZDt4ZOGt3vqOQtvhPX/9jhMtEAT3pWCMq2pwZIffwAq891VBi0opYAB8GPlUese+qeCbdA3ZI3Nnr4TA==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "@launchpad-ui/types": "~0.1.1", "classix": "2.1.17" }, @@ -1459,19 +1422,19 @@ } }, "node_modules/@launchpad-ui/inline-edit": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/inline-edit/-/inline-edit-0.3.20.tgz", - "integrity": "sha512-TGyld7YP3I9xs/t4kR6xof/2QGHxX/jDJ/SnhbCYeiHW94AADT7MKwO60tcZElTBVRai6oSo4C2v6kqzgl7AQg==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/form": "~0.11.20", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/vars": "~0.2.19", - "@react-aria/button": "3.9.5", - "@react-aria/focus": "3.17.1", - "@react-aria/interactions": "3.21.3", - "@react-aria/utils": "3.24.1", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@launchpad-ui/inline-edit/-/inline-edit-0.3.31.tgz", + "integrity": "sha512-3HWqJb3zx6gGuo7jTVSFNU2Gwdmqt0+Y79gp9rYruoeGtiMNcP1zP5qGyS4cXKOZGD0Jvwdf3HvG32kj+EGWZQ==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/form": "~0.11.31", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/vars": "~0.2.24", + "@react-aria/button": "3.9.8", + "@react-aria/focus": "3.18.2", + "@react-aria/interactions": "3.22.2", + "@react-aria/utils": "3.25.2", "@vanilla-extract/recipes": "^0.5.0", "classix": "2.1.17" }, @@ -1482,14 +1445,14 @@ } }, "node_modules/@launchpad-ui/markdown": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/@launchpad-ui/markdown/-/markdown-0.5.18.tgz", - "integrity": "sha512-RT3Aeb1+7zlYMg+llp0aFv0ZGrm94maZ6KwQ2Tvl1jMpByqOJdOm6qkohOr713rNO2zykoZG2slCFICw9qbuhw==", + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@launchpad-ui/markdown/-/markdown-0.5.24.tgz", + "integrity": "sha512-PAwv2Qk5F9d3GwraxIPzspVKAGK/45fyCT4S5WrfEViFBEBK/xyDnpDMd7bQYeOWK0uMlvFAgkuSsea9V6ZXSQ==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17", - "isomorphic-dompurify": "^2.12.0", - "marked": "^13.0.0" + "isomorphic-dompurify": "^2.14.0", + "marked": "^14.1.0" }, "peerDependencies": { "react": "18.3.1", @@ -1497,18 +1460,18 @@ } }, "node_modules/@launchpad-ui/menu": { - "version": "0.13.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/menu/-/menu-0.13.20.tgz", - "integrity": "sha512-TmJQvN+6aEiCo96AAF7BJ1sprF8bNLMizyjr9ENOs9qVoe0zp37QmBVkSCq136Ccrohp5hCd7+X3ITxBuNbPeQ==", - "dependencies": { - "@launchpad-ui/form": "~0.11.20", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@radix-ui/react-slot": "1.0.2", - "@react-aria/focus": "3.17.1", - "@react-aria/separator": "3.3.13", + "version": "0.13.31", + "resolved": "https://registry.npmjs.org/@launchpad-ui/menu/-/menu-0.13.31.tgz", + "integrity": "sha512-U1CYzhplh0P9NR6hp0cs8e55UFeWL60NEKo2EfbRTqZSdAii7zWWeSctUGhYJWug3Av1WmxFNi/r85nEc8Yv2Q==", + "dependencies": { + "@launchpad-ui/form": "~0.11.31", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@radix-ui/react-slot": "1.1.0", + "@react-aria/focus": "3.18.2", + "@react-aria/separator": "3.4.2", "classix": "2.1.17", "react-virtual": "2.10.4" }, @@ -1518,19 +1481,19 @@ } }, "node_modules/@launchpad-ui/modal": { - "version": "0.17.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/modal/-/modal-0.17.35.tgz", - "integrity": "sha512-XAcvaHN4TSPL+OSiTRlwEOK7F7fpiudRPPOtri77bRqW6RRqAHlrHJknYUTbxmj6ZixD9zQncFURG2Gb9jLw2A==", + "version": "0.17.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/modal/-/modal-0.17.46.tgz", + "integrity": "sha512-9J+m4Uz97AjzV4S6bWY0kupZ1nrIx64qSAyuitiQtPx9KkwuTxqBB5oUe2NY0yN/IubH1Sllt+JutNPmKj4PqQ==", "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/focus-trap": "~0.1.20", - "@launchpad-ui/icons": "~0.18.4", + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/focus-trap": "~0.1.23", + "@launchpad-ui/icons": "~0.18.13", "@launchpad-ui/portal": "~0.1.5", - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/interactions": "3.21.3", - "@react-aria/overlays": "3.22.1", + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/interactions": "3.22.2", + "@react-aria/overlays": "3.23.2", "classix": "2.1.17", - "framer-motion": "11.2.4" + "framer-motion": "11.3.0" }, "peerDependencies": { "react": "18.3.1", @@ -1538,20 +1501,20 @@ } }, "node_modules/@launchpad-ui/navigation": { - "version": "0.12.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/navigation/-/navigation-0.12.35.tgz", - "integrity": "sha512-on4tScWncd+YMqKJAGhkaO06tgaNEhvAbDolBw8Kiiimwur5dN16BjGcWjEmfNMV5sd9wl8bZGBmQXoigBDV1g==", - "dependencies": { - "@launchpad-ui/chip": "~0.9.30", - "@launchpad-ui/dropdown": "~0.6.109", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/menu": "~0.13.20", - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@react-aria/utils": "3.24.1", - "@react-stately/list": "3.10.5", - "@react-types/shared": "3.23.1", + "version": "0.12.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/navigation/-/navigation-0.12.46.tgz", + "integrity": "sha512-Hw2TwvKGBxXw0RUI3K0LY/27yjVvDBXOe0j2EFbKq0cMUiREQUgs5eHcEPsh2vJBKRbRSA0sAfuKNcQ4rik2Mw==", + "dependencies": { + "@launchpad-ui/chip": "~0.9.39", + "@launchpad-ui/dropdown": "~0.6.120", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/menu": "~0.13.31", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@react-aria/utils": "3.25.2", + "@react-stately/list": "3.10.8", + "@react-types/shared": "3.24.1", "classix": "2.1.17", "react-router-dom": "6.16.0" }, @@ -1573,15 +1536,15 @@ } }, "node_modules/@launchpad-ui/pagination": { - "version": "0.4.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/pagination/-/pagination-0.4.35.tgz", - "integrity": "sha512-F+VQDXJ4pZnp99ZbJ6A0SrJX+WJ4RJHHqihZcX9vB+NVl3XZgjYE2+W/UWM/dK9KDMmsokGv9B+qV1FDNyKF+w==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/progress": "~0.5.47", - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/visually-hidden": "3.8.12", + "version": "0.4.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/pagination/-/pagination-0.4.46.tgz", + "integrity": "sha512-wbpgkQqwIeO0WKe9fgHIhyPiuFmR/GdrN6nLwm33dhjx19xf+EUQW70RX24GQKEwCFhNL+U/c/mii1HbSEtXig==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/progress": "~0.5.52", + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/visually-hidden": "3.8.15", "classix": "2.1.17" }, "peerDependencies": { @@ -1590,17 +1553,17 @@ } }, "node_modules/@launchpad-ui/popover": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/@launchpad-ui/popover/-/popover-0.11.23.tgz", - "integrity": "sha512-x6B+/cZm5NcJXwLMSBXK+xeg/Yfk12AjgNmhU3IDFC9XjDVaNNKIheQe/oFiz2/29FLkhYmU/numSzDojxexfg==", + "version": "0.11.30", + "resolved": "https://registry.npmjs.org/@launchpad-ui/popover/-/popover-0.11.30.tgz", + "integrity": "sha512-BDOE7CLPU+RWCDBXOYiaDzlU3WNpr3jGcppM+IAdaAXvmaMDViUtZX4vH1Ny08RwT8t4j6Re3dO1M0jtmp5N+g==", "dependencies": { "@floating-ui/core": "1.6.0", "@floating-ui/dom": "1.6.1", - "@launchpad-ui/focus-trap": "~0.1.20", + "@launchpad-ui/focus-trap": "~0.1.23", "@launchpad-ui/overlay": "~0.3.30", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17", - "framer-motion": "11.2.4" + "framer-motion": "11.3.0" }, "peerDependencies": { "react": "18.3.1", @@ -1617,11 +1580,11 @@ } }, "node_modules/@launchpad-ui/progress": { - "version": "0.5.47", - "resolved": "https://registry.npmjs.org/@launchpad-ui/progress/-/progress-0.5.47.tgz", - "integrity": "sha512-Ai1q0lQ2zOSdvn7bWePSzWy6aGn7xArkkq+osp0PFAf3gn+E2uw0VHWYUnf68XEWbDjZL60L+LxHv56AHBGd9w==", + "version": "0.5.52", + "resolved": "https://registry.npmjs.org/@launchpad-ui/progress/-/progress-0.5.52.tgz", + "integrity": "sha512-Llu3szSKWKSwCHUFSLfuRmWJnrK0gjaxrF8+PSs82FVY7NnZmTTORLI0D8FcH2movjFxho0zBdjWXiJpeInBeg==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1630,12 +1593,12 @@ } }, "node_modules/@launchpad-ui/progress-bubbles": { - "version": "0.7.23", - "resolved": "https://registry.npmjs.org/@launchpad-ui/progress-bubbles/-/progress-bubbles-0.7.23.tgz", - "integrity": "sha512-vIBJBGmUFEBLusHzJmqPH+iT3MWZnoCPLGEsrE7WmwYQ2sQWJgAejKJAai3ulU1LOZ3TzL7JTUjiBQlczMERYw==", + "version": "0.7.30", + "resolved": "https://registry.npmjs.org/@launchpad-ui/progress-bubbles/-/progress-bubbles-0.7.30.tgz", + "integrity": "sha512-WZuLGVCXWVFCxjw42UMdvFInNEWYNWDp/3TDbRNpC59UuPUSRQ8uqs6XIQCm7HGe1TMql8ZrdXEv1zfbEeSHQg==", "dependencies": { - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1644,45 +1607,45 @@ } }, "node_modules/@launchpad-ui/select": { - "version": "0.4.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/select/-/select-0.4.35.tgz", - "integrity": "sha512-U0VypPwXHghj/Ajew/Y+QpZjEXLdvotWcXrPqLrOTNE+QBNgkDqB34P29NUTd7MqBUlN/VzeNiX10RnVHlFY5A==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/modal": "~0.17.35", - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@react-aria/button": "3.9.5", - "@react-aria/combobox": "3.9.1", - "@react-aria/focus": "3.17.1", - "@react-aria/gridlist": "3.8.1", - "@react-aria/interactions": "3.21.3", - "@react-aria/label": "3.7.8", - "@react-aria/listbox": "3.12.1", - "@react-aria/menu": "3.14.1", - "@react-aria/overlays": "3.22.1", - "@react-aria/select": "3.14.5", - "@react-aria/selection": "3.18.1", - "@react-aria/separator": "3.3.13", - "@react-aria/textfield": "3.14.5", - "@react-aria/utils": "3.24.1", - "@react-aria/visually-hidden": "3.8.12", - "@react-stately/collections": "3.10.7", - "@react-stately/combobox": "3.8.4", - "@react-stately/data": "3.11.4", - "@react-stately/list": "3.10.5", - "@react-stately/menu": "3.7.1", - "@react-stately/overlays": "3.6.7", - "@react-stately/select": "3.6.4", - "@react-stately/selection": "3.15.1", - "@react-stately/utils": "3.10.1", - "@react-types/button": "3.9.4", - "@react-types/combobox": "3.11.1", - "@react-types/overlays": "3.8.7", - "@react-types/select": "3.9.4", - "@react-types/shared": "3.23.1", + "version": "0.4.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/select/-/select-0.4.46.tgz", + "integrity": "sha512-HelcsxdhwQJ5InVGpHqeAiuv5hq317liUZA//mkYOpFRZ6FH28O3XWekHPtRBqyTWNcTVhcj3NbnsPXlFdsBVQ==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/modal": "~0.17.46", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@react-aria/button": "3.9.8", + "@react-aria/combobox": "3.10.3", + "@react-aria/focus": "3.18.2", + "@react-aria/gridlist": "3.9.3", + "@react-aria/interactions": "3.22.2", + "@react-aria/label": "3.7.11", + "@react-aria/listbox": "3.13.3", + "@react-aria/menu": "3.15.3", + "@react-aria/overlays": "3.23.2", + "@react-aria/select": "3.14.9", + "@react-aria/selection": "3.19.3", + "@react-aria/separator": "3.4.2", + "@react-aria/textfield": "3.14.8", + "@react-aria/utils": "3.25.2", + "@react-aria/visually-hidden": "3.8.15", + "@react-stately/collections": "3.10.9", + "@react-stately/combobox": "3.9.2", + "@react-stately/data": "3.11.6", + "@react-stately/list": "3.10.8", + "@react-stately/menu": "3.8.2", + "@react-stately/overlays": "3.6.10", + "@react-stately/select": "3.6.7", + "@react-stately/selection": "3.16.2", + "@react-stately/utils": "3.10.3", + "@react-types/button": "3.9.6", + "@react-types/combobox": "3.12.1", + "@react-types/overlays": "3.8.9", + "@react-types/select": "3.9.6", + "@react-types/shared": "3.24.1", "classix": "2.1.17" }, "peerDependencies": { @@ -1691,11 +1654,11 @@ } }, "node_modules/@launchpad-ui/slider": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@launchpad-ui/slider/-/slider-0.5.16.tgz", - "integrity": "sha512-Qt5349CLr7M6ESEWwhesiVW4YHTHE37YhiFoGuIAJubw3xd44WcCSSM+54Y+pQT8P1ZxnZoQ+p9Nvrc7clGlGg==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/@launchpad-ui/slider/-/slider-0.5.21.tgz", + "integrity": "sha512-cNnikivg9Xwg3k3JtGZ0x0BOcO3xUKxBeYdR1PVHowgE7TKQmJktn87dYD+ym55PogkX56R/ZByM+x9WUQ/c6g==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1704,15 +1667,15 @@ } }, "node_modules/@launchpad-ui/snackbar": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/@launchpad-ui/snackbar/-/snackbar-0.5.18.tgz", - "integrity": "sha512-Od+G4NCSw5mBqwTAaAOzzcpdgQjU8Id96tXCictGxRyJKb+oH3GExpcM0EAgDlPH1zBktIICcr8GN4YgsWZuxg==", + "version": "0.5.27", + "resolved": "https://registry.npmjs.org/@launchpad-ui/snackbar/-/snackbar-0.5.27.tgz", + "integrity": "sha512-1IWzpm2t4kV0/UrW5NL/wmjnIVeCfrUekmk20tftwwSKD8NIYbJNUyX0Jm+mIfdTw6sxteJ7mnXl7YtrCnXv3A==", "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17", - "framer-motion": "11.2.4" + "framer-motion": "11.3.0" }, "peerDependencies": { "react": "18.3.1", @@ -1720,15 +1683,15 @@ } }, "node_modules/@launchpad-ui/split-button": { - "version": "0.10.20", - "resolved": "https://registry.npmjs.org/@launchpad-ui/split-button/-/split-button-0.10.20.tgz", - "integrity": "sha512-ZILhoKCaLfA1ZDF5fzL5N5nyBMk3BTD4FVU0p4RgJM9q8zYUU4HJBZ3Tasna407YxrsCZQTFV/jJry5KBJ7c6A==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/dropdown": "~0.6.109", - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/@launchpad-ui/split-button/-/split-button-0.10.31.tgz", + "integrity": "sha512-f6F3GiSz1TDjp3Fuk7c8upoThYLkJRPqxYuv4+IvWubP/QybbY3BfqzwskGIff1fawAgWsNy4i9Bc5ozxxKZAQ==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/dropdown": "~0.6.120", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", "classix": "2.1.17" }, "peerDependencies": { @@ -1737,11 +1700,11 @@ } }, "node_modules/@launchpad-ui/stack": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/@launchpad-ui/stack/-/stack-0.1.22.tgz", - "integrity": "sha512-3oQWEe+wmhiF6vy6ZgGaVNIcbiwSP4yJurhGSEYMNbxwK7XhnjZyziUucBBg+55z8M9nHYP7mS1t50k2hjSKKw==", + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/@launchpad-ui/stack/-/stack-0.1.27.tgz", + "integrity": "sha512-i+yR3MAeMcc4/g01x3J4KuxqASFpHoKfUJRQHNsVLYzwsYIw5B+r1eGXi1szmGCDfiqILG5OtJm6tXlOOz1T7A==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "@launchpad-ui/types": "~0.1.1", "classix": "2.1.17" }, @@ -1751,29 +1714,29 @@ } }, "node_modules/@launchpad-ui/tab-list": { - "version": "0.5.22", - "resolved": "https://registry.npmjs.org/@launchpad-ui/tab-list/-/tab-list-0.5.22.tgz", - "integrity": "sha512-k/8SpOOuqpNSGsIblwB8S1IaJfQUSBkqjz4osl5m9AE4+E4DGg+U0+QY8ssm/PjPMEaaOh/dn1SE5KufWo94Lw==", - "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/tabs": "3.9.1", - "@react-stately/tabs": "3.6.6", - "@react-types/shared": "3.23.1", - "@react-types/tabs": "3.3.7", + "version": "0.5.29", + "resolved": "https://registry.npmjs.org/@launchpad-ui/tab-list/-/tab-list-0.5.29.tgz", + "integrity": "sha512-JYAIHReEeYAD8jzy5CJtGoIbJcOkpO2bvWWVZRTlEyV/a9ihpYZHEwS+wcnkYYJE9PaPBrWf4bQcVKlEhT7RLw==", + "dependencies": { + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/tabs": "3.9.5", + "@react-stately/tabs": "3.6.9", + "@react-types/shared": "3.24.1", + "@react-types/tabs": "3.3.9", "classix": "2.1.17" }, "peerDependencies": { - "@react-stately/collections": "3.10.7", + "@react-stately/collections": "3.10.9", "react": "18.3.1", "react-dom": "18.3.1" } }, "node_modules/@launchpad-ui/table": { - "version": "0.6.17", - "resolved": "https://registry.npmjs.org/@launchpad-ui/table/-/table-0.6.17.tgz", - "integrity": "sha512-rOcHHgLMVGFds8aa69UDOd3mcibvVZfAIvJ8F1AYUNVc6Ynb7uUzGkjEjySbaDakbQ0zcyjYMozVcZ4WBlDVAg==", + "version": "0.6.22", + "resolved": "https://registry.npmjs.org/@launchpad-ui/table/-/table-0.6.22.tgz", + "integrity": "sha512-/uazU0r/drBwICrCcPili1RoXR+OeeZJsRsX+q8zD+jzXjIzlAWJxx55Omf6F9QAf0L4LpzLFd9IwCDhiev8TQ==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1782,21 +1745,21 @@ } }, "node_modules/@launchpad-ui/tag": { - "version": "0.3.35", - "resolved": "https://registry.npmjs.org/@launchpad-ui/tag/-/tag-0.3.35.tgz", - "integrity": "sha512-RRwiaF158Wcu4b+T6Aaefzr5Yn7SK4Mg7j0bPZ7XoboClzbzranxaTm2IwC3YOPyf1GTmJ8+3bT6dRPrgBxsQw==", - "dependencies": { - "@launchpad-ui/button": "~0.12.17", - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", - "@launchpad-ui/tooltip": "~0.9.12", - "@react-aria/focus": "3.17.1", - "@react-aria/interactions": "3.21.3", - "@react-aria/selection": "3.18.1", - "@react-aria/tag": "3.4.1", - "@react-aria/utils": "3.24.1", - "@react-stately/list": "3.10.5", - "@react-types/shared": "3.23.1", + "version": "0.3.46", + "resolved": "https://registry.npmjs.org/@launchpad-ui/tag/-/tag-0.3.46.tgz", + "integrity": "sha512-f4hrU3q8zNP0EfnjDu22wbMSjMbcQHGSobliMacRZpB0BmTcXFIa3Civz2rVfci65THWX+J6R9JDraFaMUvSWw==", + "dependencies": { + "@launchpad-ui/button": "~0.12.26", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", + "@launchpad-ui/tooltip": "~0.9.19", + "@react-aria/focus": "3.18.2", + "@react-aria/interactions": "3.22.2", + "@react-aria/selection": "3.19.3", + "@react-aria/tag": "3.4.5", + "@react-aria/utils": "3.25.2", + "@react-stately/list": "3.10.8", + "@react-types/shared": "3.24.1", "classix": "2.1.17" }, "peerDependencies": { @@ -1805,14 +1768,14 @@ } }, "node_modules/@launchpad-ui/toast": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@launchpad-ui/toast/-/toast-0.3.31.tgz", - "integrity": "sha512-TdFFK2sw0xqTD1olN/zw6gh09q3s92zi0v98ub3wISfZtibGf4EPjMIcx0bFbdYC13kBMoemoVRbpew2cb5Pvw==", + "version": "0.3.40", + "resolved": "https://registry.npmjs.org/@launchpad-ui/toast/-/toast-0.3.40.tgz", + "integrity": "sha512-2gtj43MPwc5yyzK5J45DCaog6PXceNoJX+QBkUUUsSjSHD9ZAzzEH33FLuwSo7oVnZ67v4cf79MIzkBP+5s3Bw==", "dependencies": { - "@launchpad-ui/icons": "~0.18.4", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/icons": "~0.18.13", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17", - "framer-motion": "11.2.4" + "framer-motion": "11.3.0" }, "peerDependencies": { "react": "18.3.1", @@ -1820,14 +1783,14 @@ } }, "node_modules/@launchpad-ui/toggle": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/@launchpad-ui/toggle/-/toggle-0.7.22.tgz", - "integrity": "sha512-X3FXxdM1a32x1qbcCLQT3C6IdBwIkt07SfRjlbYql1socANcCmWOdRD1Qd0JWjARpoDMDediGZtJZ6EsLUxroQ==", - "dependencies": { - "@launchpad-ui/tokens": "~0.9.12", - "@react-aria/focus": "3.17.1", - "@react-aria/switch": "3.6.4", - "@react-stately/toggle": "3.7.4", + "version": "0.7.29", + "resolved": "https://registry.npmjs.org/@launchpad-ui/toggle/-/toggle-0.7.29.tgz", + "integrity": "sha512-FSOsXK+0fgOoufW6GVc22pD0uWfHBBxzwm6QFje2K28n2Kb8x5khW9C+gruc3o1IcZBhJCOR5bry7ZNxgjui6g==", + "dependencies": { + "@launchpad-ui/tokens": "~0.11.3", + "@react-aria/focus": "3.18.2", + "@react-aria/switch": "3.6.7", + "@react-stately/toggle": "3.7.7", "classix": "2.1.17" }, "peerDependencies": { @@ -1836,17 +1799,17 @@ } }, "node_modules/@launchpad-ui/tokens": { - "version": "0.9.12", - "resolved": "https://registry.npmjs.org/@launchpad-ui/tokens/-/tokens-0.9.12.tgz", - "integrity": "sha512-FEDBt0s+b0hlwkhSU/TiY5YXseLQYGKeIgqZUngmUiPTgaSvttlBm4BSVtoly3JK00ihNGZsvEtZVoUgp+zoKA==" + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@launchpad-ui/tokens/-/tokens-0.11.3.tgz", + "integrity": "sha512-84Tm/duRQIs31TreFMYfFbhNZSk+FQl00/l0OZ9DHk1d4j9La0Od8dJ5d6pRJg1u7Q5q/vLWg3J+lZqlfdMqlA==" }, "node_modules/@launchpad-ui/tooltip": { - "version": "0.9.12", - "resolved": "https://registry.npmjs.org/@launchpad-ui/tooltip/-/tooltip-0.9.12.tgz", - "integrity": "sha512-qsEnQAXOEpPyyoMEN0fa1D8mgKYPMd09VGQCg65RS0KNNbK/TjewbvtKi07AZdzol1hTzArnpCaM7/INPRLBoA==", + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/@launchpad-ui/tooltip/-/tooltip-0.9.19.tgz", + "integrity": "sha512-4+N/rPH9DwS9zjb+ssWynjOT+1MqD4ZTu90+911jhiCvb9bOnCkmKWvysVlIS8eZYjLg6ZXRPHD9CvWhY8mJ3Q==", "dependencies": { - "@launchpad-ui/popover": "~0.11.23", - "@launchpad-ui/tokens": "~0.9.12", + "@launchpad-ui/popover": "~0.11.30", + "@launchpad-ui/tokens": "~0.11.3", "classix": "2.1.17" }, "peerDependencies": { @@ -1860,11 +1823,11 @@ "integrity": "sha512-0mHnqVNIHNwrRe4uw5DacWp1N+WNFt6PgVs/5xAuO6tlH5WXHq1WqEg3H4rKi46sXwsepEaijdhKQC3xlajcmA==" }, "node_modules/@launchpad-ui/vars": { - "version": "0.2.19", - "resolved": "https://registry.npmjs.org/@launchpad-ui/vars/-/vars-0.2.19.tgz", - "integrity": "sha512-fvSRN/mQ+DpuaLpXO4usLaqfaqb0u0M6ryMLIMpqK9kdv5gTjbha3GWOv0MVz5PKDBWFkXdgNtvvkWzYjlgZQA==", + "version": "0.2.24", + "resolved": "https://registry.npmjs.org/@launchpad-ui/vars/-/vars-0.2.24.tgz", + "integrity": "sha512-8Q2J19MvMqm8aF2MHVvZTNAtzZGxTK40otf9ufh1Tjomm+qVbonRz7kmRcm4TU77K5+7uWox3oQBm8Oi5dLclQ==", "dependencies": { - "@launchpad-ui/tokens": "~0.9.12" + "@launchpad-ui/tokens": "~0.11.3" }, "peerDependencies": { "@vanilla-extract/css": "^1.14.0" @@ -1911,15 +1874,12 @@ } }, "node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", - "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -1928,16 +1888,15 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -1951,367 +1910,382 @@ "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" }, "node_modules/@react-aria/breadcrumbs": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz", - "integrity": "sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/link": "^3.7.1", - "@react-aria/utils": "^3.24.1", - "@react-types/breadcrumbs": "^3.7.5", - "@react-types/shared": "^3.23.1", + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.16.tgz", + "integrity": "sha512-OXLKKu4SmjnSaSHkk4kow5/aH/SzlHWPJt+Uq3xec9TwDOr/Ob8aeFVGFoY0HxfGozuQlUz+4e+d29vfA0jNWg==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/link": "^3.7.4", + "@react-aria/utils": "^3.25.2", + "@react-types/breadcrumbs": "^3.7.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/button": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.5.tgz", - "integrity": "sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/toggle": "^3.7.4", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.8.tgz", + "integrity": "sha512-MdbMQ3t5KSCkvKtwYd/Z6sgw0v+r1VQFRYOZ4L53xOkn+u140z8vBpNeWKZh/45gxGv7SJn9s2KstLPdCWmIxw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/toggle": "^3.7.7", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/calendar": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.8.tgz", - "integrity": "sha512-Whlp4CeAA5/ZkzrAHUv73kgIRYjw088eYGSc+cvSOCxfrc/2XkBm9rNrnSBv0DvhJ8AG0Fjz3vYakTmF3BgZBw==", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.11.tgz", + "integrity": "sha512-VLhBovLVu3uJXBkHbgEippmo/K58QLcc/tSJQ0aJUNyHsrvPgHEcj484cb+Uj/yOirXEIzaoW6WEvhcdKrb49Q==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@internationalized/date": "^3.5.5", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-stately/calendar": "^3.5.1", - "@react-types/button": "^3.9.4", - "@react-types/calendar": "^3.4.6", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.2", + "@react-stately/calendar": "^3.5.4", + "@react-types/button": "^3.9.6", + "@react-types/calendar": "^3.4.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/checkbox": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.3.tgz", - "integrity": "sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA==", - "dependencies": { - "@react-aria/form": "^3.0.5", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/toggle": "^3.10.4", - "@react-aria/utils": "^3.24.1", - "@react-stately/checkbox": "^3.6.5", - "@react-stately/form": "^3.0.3", - "@react-stately/toggle": "^3.7.4", - "@react-types/checkbox": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.14.6", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.6.tgz", + "integrity": "sha512-LICY1PR3WsW/VbuLMjZbxo75+poeo3XCXGcUnk6hxMlWfp/Iy/XHVsHlGu9stRPKRF8BSuOGteaHWVn6IXfwtA==", + "dependencies": { + "@react-aria/form": "^3.0.8", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/toggle": "^3.10.7", + "@react-aria/utils": "^3.25.2", + "@react-stately/checkbox": "^3.6.8", + "@react-stately/form": "^3.0.5", + "@react-stately/toggle": "^3.7.7", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/collections": { + "version": "3.0.0-alpha.4", + "resolved": "https://registry.npmjs.org/@react-aria/collections/-/collections-3.0.0-alpha.4.tgz", + "integrity": "sha512-chMNAlsubnpErBWN7sLhmAMOnE7o17hSfq3s0VDHlvRN9K/mPOPlYokmyWkkPqi7fYiR50EPVHDtwTWLJoqfnw==", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/color": { - "version": "3.0.0-beta.33", - "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.0-beta.33.tgz", - "integrity": "sha512-nhqnIHYm5p6MbuF3cC6lnqzG7MjwBsBd0DtpO+ByFYO+zxpMMbeC5R+1SFxvapR4uqmAzTotbtiUCGsG+SUaIg==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/numberfield": "^3.11.3", - "@react-aria/slider": "^3.7.8", - "@react-aria/spinbutton": "^3.6.5", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/color": "^3.6.1", - "@react-stately/form": "^3.0.3", - "@react-types/color": "3.0.0-beta.25", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.0-rc.2.tgz", + "integrity": "sha512-h4P7LocDEHPOEWgHYb8VPJLRGkyMhcsXemmvGao6G23zGTpTX8Nr6pEuJhcXQlGWt8hXvj/ASnC750my+zb1yA==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/numberfield": "^3.11.6", + "@react-aria/slider": "^3.7.11", + "@react-aria/spinbutton": "^3.6.8", + "@react-aria/textfield": "^3.14.8", + "@react-aria/utils": "^3.25.2", + "@react-aria/visually-hidden": "^3.8.15", + "@react-stately/color": "^3.7.2", + "@react-stately/form": "^3.0.5", + "@react-types/color": "3.0.0-rc.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/combobox": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.9.1.tgz", - "integrity": "sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.10.3.tgz", + "integrity": "sha512-EdDwr2Rp1xy7yWjOYHt2qF1IpAtUrkaNKZJzlIw1XSwcqizQY6E8orNPdZr6ZwD6/tgujxF1N71JTKyffrR0Xw==", "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/listbox": "^3.12.1", + "@react-aria/i18n": "^3.12.2", + "@react-aria/listbox": "^3.13.3", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/menu": "^3.14.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/combobox": "^3.8.4", - "@react-stately/form": "^3.0.3", - "@react-types/button": "^3.9.4", - "@react-types/combobox": "^3.11.1", - "@react-types/shared": "^3.23.1", + "@react-aria/menu": "^3.15.3", + "@react-aria/overlays": "^3.23.2", + "@react-aria/selection": "^3.19.3", + "@react-aria/textfield": "^3.14.8", + "@react-aria/utils": "^3.25.2", + "@react-stately/collections": "^3.10.9", + "@react-stately/combobox": "^3.9.2", + "@react-stately/form": "^3.0.5", + "@react-types/button": "^3.9.6", + "@react-types/combobox": "^3.12.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/datepicker": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.10.1.tgz", - "integrity": "sha512-4HZL593nrNMa1GjBmWEN/OTvNS6d3/16G1YJWlqiUlv11ADulSbqBIjMmkgwrJVFcjrgqtXFy+yyrTA/oq94Zw==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.11.2.tgz", + "integrity": "sha512-6sbLln3VXSBcBRDgSACBzIzF/5KV5NlNOhZvXPFE6KqFw6GbevjZQTv5BNDXiwA3CQoawIRF7zgRvTANw8HkNA==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/number": "^3.5.3", "@internationalized/string": "^3.2.3", - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/spinbutton": "^3.6.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/datepicker": "^3.9.4", - "@react-stately/form": "^3.0.3", - "@react-types/button": "^3.9.4", - "@react-types/calendar": "^3.4.6", - "@react-types/datepicker": "^3.7.4", - "@react-types/dialog": "^3.5.10", - "@react-types/shared": "^3.23.1", + "@react-aria/focus": "^3.18.2", + "@react-aria/form": "^3.0.8", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/spinbutton": "^3.6.8", + "@react-aria/utils": "^3.25.2", + "@react-stately/datepicker": "^3.10.2", + "@react-stately/form": "^3.0.5", + "@react-types/button": "^3.9.6", + "@react-types/calendar": "^3.4.9", + "@react-types/datepicker": "^3.8.2", + "@react-types/dialog": "^3.5.12", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/dialog": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.14.tgz", - "integrity": "sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-types/dialog": "^3.5.10", - "@react-types/shared": "^3.23.1", + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.17.tgz", + "integrity": "sha512-lvfEgaqg922J1hurscqCS600OZQVitGtdpo81kAefJaUzMnCxzrYviyT96aaW0simHOlimbYF5js8lxBLZJRaw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/overlays": "^3.23.2", + "@react-aria/utils": "^3.25.2", + "@react-types/dialog": "^3.5.12", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/dnd": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.6.1.tgz", - "integrity": "sha512-6WnujUTD+cIYZVF/B+uXdHyJ+WSpbYa8jH282epvY4FUAq1qLmen12/HHcoj/5dswKQe8X6EM3OhkQM89d9vFw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.7.2.tgz", + "integrity": "sha512-NuE3EGqoBbe9aXAO9mDfbu4kMO7S4MCgkjkCqYi16TWfRUf38ajQbIlqodCx91b3LVN3SYvNbE3D4Tj5ebkljw==", "dependencies": { "@internationalized/string": "^3.2.3", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/dnd": "^3.3.1", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "@react-aria/overlays": "^3.23.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/dnd": "^3.4.2", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/focus": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", - "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.2.tgz", + "integrity": "sha512-Jc/IY+StjA3uqN73o6txKQ527RFU7gnG5crEl5Xy3V+gbYp2O5L3ezAo/E0Ipi2cyMbG6T5Iit1IDs7hcGu8aw==", "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/form": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz", - "integrity": "sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ==", - "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/form": "^3.0.3", - "@react-types/shared": "^3.23.1", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.8.tgz", + "integrity": "sha512-8S2QiyUdAgK43M3flohI0R+2rTyzH088EmgeRArA8euvJTL16cj/oSOKMEgWVihjotJ9n6awPb43ZhKboyNsMg==", + "dependencies": { + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/form": "^3.0.5", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/grid": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.9.1.tgz", - "integrity": "sha512-fGEZqAEaS8mqzV/II3N4ndoNWegIcbh+L3PmKbXdpKKUP8VgMs/WY5rYl5WAF0f5RoFwXqx3ibDLeR9tKj/bOg==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.10.3.tgz", + "integrity": "sha512-l0r9mz05Gwjq3t6JOTNQOf+oAoWN0bXELPJtIr8m0XyXMPFCQe1xsTaX8igVQdrDmXyBc75RAWS0BJo2JF2fIA==", "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/grid": "^3.8.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/checkbox": "^3.8.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/collections": "^3.10.9", + "@react-stately/grid": "^3.9.2", + "@react-stately/selection": "^3.16.2", + "@react-types/checkbox": "^3.8.3", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/gridlist": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.8.1.tgz", - "integrity": "sha512-vVPkkA+Ct0NDcpnNm/tnYaBumg0fP9pXxsPLqL1rxvsTyj1PaIpFTZ4corabPTbTDExZwUSTS3LG1n+o1OvBtQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/grid": "^3.9.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-stately/tree": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.9.3.tgz", + "integrity": "sha512-bb9GnKKeuL6NljoVUcHxr9F0cy/2WDOXRYeMikTnviRw6cuX95oojrhFfCUvz2d6ID22Btrvh7LkE+oIPVuc+g==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/grid": "^3.10.3", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.8", + "@react-stately/tree": "^3.8.4", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/i18n": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz", - "integrity": "sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ==", + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.2.tgz", + "integrity": "sha512-PvEyC6JWylTpe8dQEWqQwV6GiA+pbTxHQd//BxtMSapRW3JT9obObAnb/nFhj3HthkUvqHyj0oO1bfeN+mtD8A==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/message": "^3.1.4", "@internationalized/number": "^3.5.3", "@internationalized/string": "^3.2.3", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/interactions": { - "version": "3.21.3", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", - "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "version": "3.22.2", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.2.tgz", + "integrity": "sha512-xE/77fRVSlqHp2sfkrMeNLrqf2amF/RyuAS6T5oDJemRSgYM3UoxTbWjucPhfnoW7r32pFPHHgz4lbdX8xqD/g==", "dependencies": { - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/label": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz", - "integrity": "sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg==", + "version": "3.7.11", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.11.tgz", + "integrity": "sha512-REgejE5Qr8cXG/b8H2GhzQmjQlII/0xQW/4eDzydskaTLvA7lF5HoJUE6biYTquH5va38d8XlH465RPk+bvHzA==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/landmark": { - "version": "3.0.0-beta.12", - "resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.0-beta.12.tgz", - "integrity": "sha512-xCAYw0cxn115ZaTXyGXALW2Jebm56s7oX/R0/REubiHwkuDSRxRnYXbaaHxGXNsJWex5LGIZbUYaumGjGrzOnw==", + "version": "3.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.0-beta.15.tgz", + "integrity": "sha512-EEABy0IFzqoS7r11HoD2YwiGR5LFw4kWDFTFUFwJkRP5tHEzsrEgkKPSPJXScQr5m7tenV6j0/Zzl1+w1ki3lA==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.2.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/link": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz", - "integrity": "sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-types/link": "^3.5.5", - "@react-types/shared": "^3.23.1", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.4.tgz", + "integrity": "sha512-E8SLDuS9ssm/d42+3sDFNthfMcNXMUrT2Tq1DIZt22EsMcuEzmJ9B0P7bDP5RgvIw05xVGqZ20nOpU4mKTxQtA==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-types/link": "^3.5.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/listbox": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz", - "integrity": "sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA==", - "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-types/listbox": "^3.4.9", - "@react-types/shared": "^3.23.1", + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.13.3.tgz", + "integrity": "sha512-htluPyDfFtn66OEYaJdIaFCYH9wGCNk30vOgZrQkPul9F9Cjce52tTyPVR0ERsf14oCUsjjS5qgeq3dGidRqEw==", + "dependencies": { + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.8", + "@react-types/listbox": "^3.5.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/live-announcer": { @@ -2323,237 +2297,237 @@ } }, "node_modules/@react-aria/menu": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz", - "integrity": "sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/menu": "^3.7.1", - "@react-stately/tree": "^3.8.1", - "@react-types/button": "^3.9.4", - "@react-types/menu": "^3.9.9", - "@react-types/shared": "^3.23.1", + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.15.3.tgz", + "integrity": "sha512-vvUmVjJwIg3h2r+7isQXTwlmoDlPAFBckHkg94p3afrT1kNOTHveTsaVl17mStx/ymIioaAi3PrIXk/PZXp1jw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/overlays": "^3.23.2", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/collections": "^3.10.9", + "@react-stately/menu": "^3.8.2", + "@react-stately/tree": "^3.8.4", + "@react-types/button": "^3.9.6", + "@react-types/menu": "^3.9.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/meter": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.13.tgz", - "integrity": "sha512-oG6KvHQM3ri93XkYQkgEaMKSMO9KNDVpcW1MUqFfqyUXHFBRZRrJB4BTXMZ4nyjheFVQjVboU51fRwoLjOzThg==", + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.16.tgz", + "integrity": "sha512-hJqKnEE6mmK2Psx5kcI7NZ44OfTg0Bp7DatQSQ4zZE4yhnykRRwxqSKjze37tPR63cCqgRXtQ5LISfBfG54c0Q==", "dependencies": { - "@react-aria/progress": "^3.4.13", - "@react-types/meter": "^3.4.1", - "@react-types/shared": "^3.23.1", + "@react-aria/progress": "^3.4.16", + "@react-types/meter": "^3.4.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/numberfield": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.3.tgz", - "integrity": "sha512-QQ9ZTzBbRI8d9ksaBWm6YVXbgv+5zzUsdxVxwzJVXLznvivoORB8rpdFJzUEWVCo25lzoBxluCEPYtLOxP1B0w==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/spinbutton": "^3.6.5", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/form": "^3.0.3", - "@react-stately/numberfield": "^3.9.3", - "@react-types/button": "^3.9.4", - "@react-types/numberfield": "^3.8.3", - "@react-types/shared": "^3.23.1", + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.6.tgz", + "integrity": "sha512-nvEWiQcWRwj6O2JXmkXEeWoBX/GVZT9zumFJcew3XknGTWJUr3h2AOymIQFt9g4mpag8IgOFEpSIlwhtZHdp1A==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/spinbutton": "^3.6.8", + "@react-aria/textfield": "^3.14.8", + "@react-aria/utils": "^3.25.2", + "@react-stately/form": "^3.0.5", + "@react-stately/numberfield": "^3.9.6", + "@react-types/button": "^3.9.6", + "@react-types/numberfield": "^3.8.5", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/overlays": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz", - "integrity": "sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/overlays": "^3.6.7", - "@react-types/button": "^3.9.4", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1", + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.23.2.tgz", + "integrity": "sha512-vjlplr953YAuJfHiP4O+CyrTlr6OaFgXAGrzWq4MVMjnpV/PT5VRJWYFHR0sUGlHTPqeKS4NZbi/xCSgl/3pGQ==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.2", + "@react-aria/visually-hidden": "^3.8.15", + "@react-stately/overlays": "^3.6.10", + "@react-types/button": "^3.9.6", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/progress": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.13.tgz", - "integrity": "sha512-YBV9bOO5JzKvG8QCI0IAA00o6FczMgIDiK8Q9p5gKorFMatFUdRayxlbIPoYHMi+PguLil0jHgC7eOyaUcrZ0g==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-types/progress": "^3.5.4", - "@react-types/shared": "^3.23.1", + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.16.tgz", + "integrity": "sha512-RbDIFQg4+/LG+KYZeLAijt2zH7K2Gp0CY9RKWdho3nU5l3/w57Fa7NrfDGWtpImrt7bR2nRmXMA6ESfr7THfrg==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/label": "^3.7.11", + "@react-aria/utils": "^3.25.2", + "@react-types/progress": "^3.5.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/radio": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.4.tgz", - "integrity": "sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-stately/radio": "^3.10.4", - "@react-types/radio": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.7.tgz", + "integrity": "sha512-o2tqIe7xd1y4HeCBQfz/sXIwLJuI6LQbVoCQ1hgk/5dGhQ0LiuXohRYitGRl9zvxW8jYdgLULmOEDt24IflE8A==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/form": "^3.0.8", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/utils": "^3.25.2", + "@react-stately/radio": "^3.10.7", + "@react-types/radio": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/searchfield": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.5.tgz", - "integrity": "sha512-h1sMUOWjhevaKKUHab/luHbM6yiyeN57L4RxZU0IIc9Ww0h5Rp2GUuKZA3pcdPiExHje0aijcImL3wBHEbKAzw==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/searchfield": "^3.5.3", - "@react-types/button": "^3.9.4", - "@react-types/searchfield": "^3.5.5", - "@react-types/shared": "^3.23.1", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.8.tgz", + "integrity": "sha512-SsF5xwH8Us548QgzivvbM7nhFbw7pu23xnRRIuhlP3MwOR3jRUFh17NKxf3Z0jvrDv/u0xfm3JKHIgaUN0KJ2A==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/textfield": "^3.14.8", + "@react-aria/utils": "^3.25.2", + "@react-stately/searchfield": "^3.5.6", + "@react-types/button": "^3.9.6", + "@react-types/searchfield": "^3.5.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/select": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.5.tgz", - "integrity": "sha512-s8jixBuTUNdKWRHe2tIJqp55ORHeUObGMw1s7PQRRVrrHPdNSYseAOI9B2W7qpl3hKhvjJg40UW+45mcb1WKbw==", - "dependencies": { - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/listbox": "^3.12.1", - "@react-aria/menu": "^3.14.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/select": "^3.6.4", - "@react-types/button": "^3.9.4", - "@react-types/select": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.14.9", + "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.9.tgz", + "integrity": "sha512-tiNgMyA2G9nKnFn3pB/lMSgidNToxSFU7r6l4OcG+Vyr63J7B/3dF2lTXq8IYhlfOR3K3uQkjroSx52CmC3NDw==", + "dependencies": { + "@react-aria/form": "^3.0.8", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/listbox": "^3.13.3", + "@react-aria/menu": "^3.15.3", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-aria/visually-hidden": "^3.8.15", + "@react-stately/select": "^3.6.7", + "@react-types/button": "^3.9.6", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/selection": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz", - "integrity": "sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/selection": "^3.15.1", - "@react-types/shared": "^3.23.1", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.19.3.tgz", + "integrity": "sha512-GYoObXCXlmGK08hp7Qfl6Bk0U+bKP5YDWSsX+MzNjJsqzQSLm4S06tRB9ACM7gIo9dDCvL4IRxdSYTJAlJc6bw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/selection": "^3.16.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/separator": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.3.13.tgz", - "integrity": "sha512-hofA6JCPnAOqSE9vxnq7Dkazr7Kb2A0I5sR16fOG7ddjYRc/YEY5Nv7MWfKUGU0kNFHkgNjsDAILERtLechzeA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.4.2.tgz", + "integrity": "sha512-Xql9Kg3VlGesEUC7QheE+L5b3KgBv0yxiUU+/4JP8V2vfU/XSz4xmprHEeq7KVQVOetn38iiXU8gA5g26SEsUA==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/slider": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.8.tgz", - "integrity": "sha512-MYvPcM0K8jxEJJicUK2+WxUkBIM/mquBxOTOSSIL3CszA80nXIGVnLlCUnQV3LOUzpWtabbWaZokSPtGgOgQOw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-stately/slider": "^3.5.4", - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3", + "version": "3.7.11", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.11.tgz", + "integrity": "sha512-2WAwjANXPsA2LHJ5nxxV4c7ihFAzz2spaBz8+FJ7MDYE7WroYnE8uAXElea1aGo+Lk0DTiAdepLpBkggqPNanw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/utils": "^3.25.2", + "@react-stately/slider": "^3.5.7", + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/spinbutton": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.5.tgz", - "integrity": "sha512-0aACBarF/Xr/7ixzjVBTQ0NBwwwsoGkf5v6AVFVMTC0uYMXHTALvRs+ULHjHMa5e/cX/aPlEvaVT7jfSs+Xy9Q==", + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.8.tgz", + "integrity": "sha512-OJMAYRIZ0WrWE+5tZsywrSg4t+aOwl6vl/e1+J64YcGMM+p+AKd61KGG5T0OgNSORXjoVIZOmj6wZ6Od4xfPMw==", "dependencies": { - "@react-aria/i18n": "^3.11.1", + "@react-aria/i18n": "^3.12.2", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.2", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/ssr": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", - "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -2561,345 +2535,363 @@ "node": ">= 12" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/switch": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.4.tgz", - "integrity": "sha512-2nVqz4ZuJyof47IpGSt3oZRmp+EdS8wzeDYgf42WHQXrx4uEOk1mdLJ20+NnsYhj/2NHZsvXVrjBeKMjlMs+0w==", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.7.tgz", + "integrity": "sha512-yBNvKylhc3ZRQ0+7mD0mIenRRe+1yb8YaqMMZr8r3Bf87LaiFtQyhRFziq6ZitcwTJz5LEWjBihxbSVvUrf49w==", "dependencies": { - "@react-aria/toggle": "^3.10.4", - "@react-stately/toggle": "^3.7.4", - "@react-types/switch": "^3.5.3", + "@react-aria/toggle": "^3.10.7", + "@react-stately/toggle": "^3.7.7", + "@react-types/shared": "^3.24.1", + "@react-types/switch": "^3.5.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/table": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.14.1.tgz", - "integrity": "sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/grid": "^3.9.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.15.3.tgz", + "integrity": "sha512-nQCLjlEvyJHyuijHw8ESqnA9fxNJfQHx0WPcl08VDEb8VxcE/MVzSAIedSWaqjG5k9Oflz6o/F/zHtzw4AFAow==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/grid": "^3.10.3", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/collections": "^3.10.7", + "@react-aria/utils": "^3.25.2", + "@react-aria/visually-hidden": "^3.8.15", + "@react-stately/collections": "^3.10.9", "@react-stately/flags": "^3.0.3", - "@react-stately/table": "^3.11.8", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/checkbox": "^3.8.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "@react-stately/table": "^3.12.2", + "@react-types/checkbox": "^3.8.3", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tabs": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.1.tgz", - "integrity": "sha512-S5v/0sRcOaSXaJYZuuy1ZVzYc7JD4sDyseG1133GjyuNjJOFHgoWMb+b4uxNIJbZxnLgynn/ZDBZSO+qU+fIxw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/tabs": "^3.6.6", - "@react-types/shared": "^3.23.1", - "@react-types/tabs": "^3.3.7", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.5.tgz", + "integrity": "sha512-aQZGAoOIg1B16qlvXIy6+rHbNBNVcWkGjOjeyvqTTPMjXt/FmElkICnqckI7MRJ1lTqzyppCOBitYOHSXRo8Uw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/tabs": "^3.6.9", + "@react-types/shared": "^3.24.1", + "@react-types/tabs": "^3.3.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tag": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.4.1.tgz", - "integrity": "sha512-gcIGPYZ2OBwMT4IHnlczEezKlxr0KRPL/mSfm2Q91GE027ZGOJnqusH9az6DX1qxrQx8x3vRdqYT2KmuefkrBQ==", - "dependencies": { - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/list": "^3.10.5", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.4.5.tgz", + "integrity": "sha512-iyJuATQ8t2cdLC7hiZm143eeZze/MtgxaMq0OewlI9TUje54bkw2Q+CjERdgisIo3Eemf55JJgylGrTcalEJAg==", + "dependencies": { + "@react-aria/gridlist": "^3.9.3", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/list": "^3.10.8", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/textfield": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz", - "integrity": "sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", - "@react-types/textfield": "^3.9.3", + "version": "3.14.8", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.8.tgz", + "integrity": "sha512-FHEvsHdE1cMR2B7rlf+HIneITrC40r201oLYbHAp3q26jH/HUujzFBB9I20qhXjyBohMWfQLqJhSwhs1VW1RJQ==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/form": "^3.0.8", + "@react-aria/label": "^3.7.11", + "@react-aria/utils": "^3.25.2", + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.3", + "@react-types/shared": "^3.24.1", + "@react-types/textfield": "^3.9.6", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toast": { - "version": "3.0.0-beta.12", - "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.0-beta.12.tgz", - "integrity": "sha512-cNchqcvK+WJ+CTMzXBk8GzlsqEUUtbyLxz4BUgKHzysac50uhpbjdYbb+5cKetEaU6/wJ75VECk35wiLYkc16w==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/landmark": "3.0.0-beta.12", - "@react-aria/utils": "^3.24.1", - "@react-stately/toast": "3.0.0-beta.4", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.0-beta.15.tgz", + "integrity": "sha512-bg6ZXq4B5JYVt3GXVlf075tQOakcfumbDLnUMaijez4BhacuxF01+IvBPzAVEsARVNXfELoXa7Frb2K54Wgvtw==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/landmark": "3.0.0-beta.15", + "@react-aria/utils": "^3.25.2", + "@react-stately/toast": "3.0.0-beta.5", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toggle": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.4.tgz", - "integrity": "sha512-bRk+CdB8QzrSyGNjENXiTWxfzYKRw753iwQXsEAU7agPCUdB8cZJyrhbaUoD0rwczzTp2zDbZ9rRbUPdsBE2YQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/toggle": "^3.7.4", - "@react-types/checkbox": "^3.8.1", + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.7.tgz", + "integrity": "sha512-/RJQU8QlPZXRElZ3Tt10F5K5STgUBUGPpfuFUGuwF3Kw3GpPxYsA1YAVjxXz2MMGwS0+y6+U/J1xIs1AF0Jwzg==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/toggle": "^3.7.7", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toolbar": { - "version": "3.0.0-beta.5", - "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.5.tgz", - "integrity": "sha512-c8spY7aeLI6L+ygdXvEbAzaT41vExsxZ1Ld0t7BB+6iEF3nyBNJHshjkgdR7nv8FLgNk0no4tj0GTq4Jj4UqHQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.8.tgz", + "integrity": "sha512-nMlA1KK54/Kohb3HlHAzobg69PVIEr8Q1j5P3tLd9apY8FgGvnz7yLpcj6kO1GA872gseEzgiO0Rzk+yRHQRCA==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/i18n": "^3.12.2", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tooltip": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.4.tgz", - "integrity": "sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/tooltip": "^3.4.9", - "@react-types/shared": "^3.23.1", - "@react-types/tooltip": "^3.4.9", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.7.tgz", + "integrity": "sha512-UOTTDbbUz7OaE48VjNSWl+XQbYCUs5Gss4I3Tv1pfRLXzVtGYXv3ur/vRayvZR0xd12ANY26fZPNkSmCFpmiXw==", + "dependencies": { + "@react-aria/focus": "^3.18.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/tooltip": "^3.4.12", + "@react-types/shared": "^3.24.1", + "@react-types/tooltip": "^3.4.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tree": { - "version": "3.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.0-alpha.1.tgz", - "integrity": "sha512-CucyeJ4VeAvWO5UJHt/l9JO65CVtsOVUctMOVNCQS77Isqp3olX9pvfD3LXt8fD5Ph2g0Q/b7siVpX5ieVB32g==", - "dependencies": { - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/tree": "^3.8.1", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-alpha.5", + "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.0-alpha.5.tgz", + "integrity": "sha512-6JtkvQ/KQNFyqxc5M6JMVY63heHt2gZAwXxEt+Ojx/sbWDtDb5RrZVgkb44n7R/tMrFPJEiYZLMFPbGCsUQeJQ==", + "dependencies": { + "@react-aria/gridlist": "^3.9.3", + "@react-aria/i18n": "^3.12.2", + "@react-aria/selection": "^3.19.3", + "@react-aria/utils": "^3.25.2", + "@react-stately/tree": "^3.8.4", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/utils": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", - "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.2.tgz", + "integrity": "sha512-GdIvG8GBJJZygB4L2QJP1Gabyn2mjFsha73I2wSe+o4DYeGWoJiMZRM06PyTIxLH4S7Sn7eVDtsSBfkc2VY/NA==", "dependencies": { - "@react-aria/ssr": "^3.9.4", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/virtualizer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-4.0.2.tgz", + "integrity": "sha512-HNhpZl53UM2Z8g0DNvjAW7aZRwOReYgKRxdTF/IlYHNMLpdqWZinKwLbxZCsbgX3SCjdIGns90YhkMSKVpfrpw==", + "dependencies": { + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-stately/virtualizer": "^4.0.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/visually-hidden": { - "version": "3.8.12", - "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz", - "integrity": "sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw==", + "version": "3.8.15", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.15.tgz", + "integrity": "sha512-l+sJ7xTdD5Sd6+rDNDaeJCSPnHOsI+BaJyApvb/YcVgHa7rB47lp6TXCWUCDItcPY4JqRGyeByRJVrtzBFTWCw==", "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/interactions": "^3.22.2", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/calendar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz", - "integrity": "sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.4.tgz", + "integrity": "sha512-R2011mtFSXIjzMXaA+CZ1sflPm9XkTBMqVk77Bnxso2ZsG7FUX8nqFmaDavxwTuHFC6OUexAGSMs8bP9KycTNg==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-stately/utils": "^3.10.1", - "@react-types/calendar": "^3.4.6", - "@react-types/shared": "^3.23.1", + "@internationalized/date": "^3.5.5", + "@react-stately/utils": "^3.10.3", + "@react-types/calendar": "^3.4.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/checkbox": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz", - "integrity": "sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg==", - "dependencies": { - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/checkbox": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.8.tgz", + "integrity": "sha512-c8TWjU67XHHBCpqj6+FXXhQUWGr2Pil1IKggX81pkedhWiJl3/7+WHJuZI0ivGnRjp3aISNOG8UNVlBEjS9E8A==", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.3", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/collections": { - "version": "3.10.7", - "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz", - "integrity": "sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA==", + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz", + "integrity": "sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w==", "dependencies": { - "@react-types/shared": "^3.23.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/color": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.6.1.tgz", - "integrity": "sha512-iW0nAhl3+fUBegHMw5EcAbFVDpgwHBrivfC85pVoTM3pyzp66hqNN6R6xWxW6ETyljS8UOer59+/w4GDVGdPig==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.7.2.tgz", + "integrity": "sha512-tNJ7pQjBqXtfASdLRjIYzeI8q0b3JtxqkJbusyEEdLAumpcWkbOvl3Vp9un0Bu/XXWihDa4v2dEdpKxjM+pPxg==", "dependencies": { "@internationalized/number": "^3.5.3", "@internationalized/string": "^3.2.3", - "@react-aria/i18n": "^3.11.1", - "@react-stately/form": "^3.0.3", - "@react-stately/numberfield": "^3.9.3", - "@react-stately/slider": "^3.5.4", - "@react-stately/utils": "^3.10.1", - "@react-types/color": "3.0.0-beta.25", - "@react-types/shared": "^3.23.1", + "@react-aria/i18n": "^3.12.2", + "@react-stately/form": "^3.0.5", + "@react-stately/numberfield": "^3.9.6", + "@react-stately/slider": "^3.5.7", + "@react-stately/utils": "^3.10.3", + "@react-types/color": "3.0.0-rc.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/combobox": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz", - "integrity": "sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/form": "^3.0.3", - "@react-stately/list": "^3.10.5", - "@react-stately/overlays": "^3.6.7", - "@react-stately/select": "^3.6.4", - "@react-stately/utils": "^3.10.1", - "@react-types/combobox": "^3.11.1", - "@react-types/shared": "^3.23.1", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.9.2.tgz", + "integrity": "sha512-ZsbAcD58IvxZqwYxg9d2gOf8R/k5RUB2TPUiGKD6wgWfEKH6SDzY3bgRByHGOyMCyJB62cHjih/ZShizNTguqA==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.8", + "@react-stately/overlays": "^3.6.10", + "@react-stately/select": "^3.6.7", + "@react-stately/utils": "^3.10.3", + "@react-types/combobox": "^3.12.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/data": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.4.tgz", - "integrity": "sha512-PbnUQxeE6AznSuEWYnRmrYQ9t5z1Asx98Jtrl96EeA6Iapt9kOjTN9ySqCxtPxMKleb1NIqG3+uHU3veIqmLsg==", + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.6.tgz", + "integrity": "sha512-S8q1Ejuhijl8SnyVOdDNFrMrWWnLk/Oh1ZT3KHSbTdpfMRtvhi5HukoiP06jlzz75phnpSPQL40npDtUB/kk3Q==", "dependencies": { - "@react-types/shared": "^3.23.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/datepicker": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz", - "integrity": "sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.10.2.tgz", + "integrity": "sha512-pa5IZUw+49AyOnddwu4XwU2kI5eo/1thbiIVNHP8uDpbbBrBkquSk3zVFDAGX1cu/I1U2VUkt64U/dxgkwaMQw==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/string": "^3.2.3", - "@react-stately/form": "^3.0.3", - "@react-stately/overlays": "^3.6.7", - "@react-stately/utils": "^3.10.1", - "@react-types/datepicker": "^3.7.4", - "@react-types/shared": "^3.23.1", + "@react-stately/form": "^3.0.5", + "@react-stately/overlays": "^3.6.10", + "@react-stately/utils": "^3.10.3", + "@react-types/datepicker": "^3.8.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/dnd": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.3.1.tgz", - "integrity": "sha512-I/Ci5xB8hSgAXzoWYWScfMM9UK1MX/eTlARBhiSlfudewweOtNJAI+cXJgU7uiUnGjh4B4v3qDBtlAH1dWDCsw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.4.2.tgz", + "integrity": "sha512-VrHmNoNdVGrx5JHdz/zewmN+N8rlZe+vL/iAOLmvQ74RRLEz8KDFnHdlhgKg1AZqaSg3JJ18BlHEkS7oL1n+tA==", "dependencies": { - "@react-stately/selection": "^3.15.1", - "@react-types/shared": "^3.23.1", + "@react-stately/selection": "^3.16.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/flags": { @@ -2911,574 +2903,591 @@ } }, "node_modules/@react-stately/form": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz", - "integrity": "sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.5.tgz", + "integrity": "sha512-J3plwJ63HQz109OdmaTqTA8Qhvl3gcYYK7DtgKyNP6mc/Me2Q4tl2avkWoA+22NRuv5m+J8TpBk4AVHUEOwqeQ==", "dependencies": { - "@react-types/shared": "^3.23.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/grid": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.8.7.tgz", - "integrity": "sha512-he3TXCLAhF5C5z1/G4ySzcwyt7PEiWcVIupxebJQqRyFrNWemSuv+7tolnStmG8maMVIyV3P/3j4eRBbdSlOIg==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/selection": "^3.15.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.9.2.tgz", + "integrity": "sha512-2gK//sqAqg2Xaq6UITTFQwFUJnBRgcW+cKBVbFt+F8d152xB6UwwTS/K79E5PUkOotwqZgTEpkrSFs/aVxCLpw==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.2", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/layout": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-4.0.2.tgz", + "integrity": "sha512-g3IOrYQcaWxWKW44fYCOLoLMYKEmoOAcT9vQIbgK8MLTQV9Zgt9sGREwn4WJPm85N58Ij6yP72aQ7og/PSymvg==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/table": "^3.12.2", + "@react-stately/virtualizer": "^4.0.2", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/list": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz", - "integrity": "sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.8.tgz", + "integrity": "sha512-rHCiPLXd+Ry3ztR9DkLA5FPQeH4Zd4/oJAEDWJ77W3oBBOdiMp3ZdHDLP7KBRh17XGNLO/QruYoHWAQTPiMF4g==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.2", + "@react-stately/utils": "^3.10.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/menu": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz", - "integrity": "sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.8.2.tgz", + "integrity": "sha512-lt6hIHmSixMzkKx1rKJf3lbAf01EmEvvIlENL20GLiU9cRbpPnPJ1aJMZ5Ad5ygglA7wAemAx+daPhlTQfF2rg==", "dependencies": { - "@react-stately/overlays": "^3.6.7", - "@react-types/menu": "^3.9.9", - "@react-types/shared": "^3.23.1", + "@react-stately/overlays": "^3.6.10", + "@react-types/menu": "^3.9.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/numberfield": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.3.tgz", - "integrity": "sha512-UlPTLSabhLEuHtgzM0PgfhtEaHy3yttbzcRb8yHNvGo4KbCHeHpTHd3QghKfTFm024Mug7+mVlWCmMtW0f5ttg==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.6.tgz", + "integrity": "sha512-p2R9admGLI439qZzB39dyANhkruprJJtZwuoGVtxW/VD0ficw6BrPVqAaKG25iwKPkmveleh9p8o+yRqjGedcQ==", "dependencies": { "@internationalized/number": "^3.5.3", - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/numberfield": "^3.8.3", + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.3", + "@react-types/numberfield": "^3.8.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/overlays": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz", - "integrity": "sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw==", + "version": "3.6.10", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.10.tgz", + "integrity": "sha512-XxZ2qScT5JPwGk9qiVJE4dtVh3AXTcYwGRA5RsHzC26oyVVsegPqY2PmNJGblAh6Q57VyodoVUyebE0Eo5CzRw==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/overlays": "^3.8.7", + "@react-stately/utils": "^3.10.3", + "@react-types/overlays": "^3.8.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/radio": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz", - "integrity": "sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ==", - "dependencies": { - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/radio": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.7.tgz", + "integrity": "sha512-ZwGzFR+sGd42DxRlDTp3G2vLZyhMVtgHkwv2BxazPHxPMvLO9yYl7+3PPNxAmhMB4tg2u9CrzffpGX2rmEJEXA==", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.3", + "@react-types/radio": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/searchfield": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.3.tgz", - "integrity": "sha512-H0OvlgwPIFdc471ypw79MDjz3WXaVq9+THaY6JM4DIohEJNN5Dwei7O9g6r6m/GqPXJIn5TT3b74kJ2Osc00YQ==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.6.tgz", + "integrity": "sha512-gVzU0FeWiLYD8VOYRgWlk79Qn7b2eirqOnWhtI5VNuGN8WyNaCIuBp6SkXTW2dY8hs2Hzn8HlMbgy1MIc7130Q==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/searchfield": "^3.5.5", + "@react-stately/utils": "^3.10.3", + "@react-types/searchfield": "^3.5.8", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/select": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.4.tgz", - "integrity": "sha512-whZgF1N53D0/dS8tOFdrswB0alsk5Q5620HC3z+5f2Hpi8gwgAZ8TYa+2IcmMYRiT+bxVuvEc/NirU9yPmqGbA==", - "dependencies": { - "@react-stately/form": "^3.0.3", - "@react-stately/list": "^3.10.5", - "@react-stately/overlays": "^3.6.7", - "@react-types/select": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.7.tgz", + "integrity": "sha512-hCUIddw0mPxVy1OH6jhyaDwgNea9wESjf+MYdnnTG/abRB+OZv/dWScd87OjzVsHTHWcw7CN4ZzlJoXm0FJbKQ==", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.8", + "@react-stately/overlays": "^3.6.10", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/selection": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.15.1.tgz", - "integrity": "sha512-6TQnN9L0UY9w19B7xzb1P6mbUVBtW840Cw1SjgNXCB3NPaCf59SwqClYzoj8O2ZFzMe8F/nUJtfU1NS65/OLlw==", + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.16.2.tgz", + "integrity": "sha512-C4eSKw7BIZHJLPzwqGqCnsyFHiUIEyryVQZTJDt6d0wYBOHU6k1pW+Q4VhrZuzSv+IMiI2RkiXeJKc55f0ZXrg==", "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/utils": "^3.10.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/slider": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz", - "integrity": "sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.7.tgz", + "integrity": "sha512-gEIGTcpBLcXixd8LYiLc8HKrBiGQJltrrEGoOvvTP8KVItXQxmeL+JiSsh8qgOoUdRRpzmAoFNUKGEg2/gtN8A==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3", + "@react-stately/utils": "^3.10.3", + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/table": { - "version": "3.11.8", - "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz", - "integrity": "sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg==", + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.12.2.tgz", + "integrity": "sha512-dUcsrdALylhWz6exqIoqtR/dnrzjIAptMyAUPT378Y/mCYs4PxKkHSvtPEQrZhdQS1ALIIgfeg9KUVIempoXPw==", "dependencies": { - "@react-stately/collections": "^3.10.7", + "@react-stately/collections": "^3.10.9", "@react-stately/flags": "^3.0.3", - "@react-stately/grid": "^3.8.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/utils": "^3.10.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "@react-stately/grid": "^3.9.2", + "@react-stately/selection": "^3.16.2", + "@react-stately/utils": "^3.10.3", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/tabs": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz", - "integrity": "sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.9.tgz", + "integrity": "sha512-YZDqZng3HrRX+uXmg6u78x73Oi24G5ICpiXVqDKKDkO333XCA5H8MWItiuPZkYB2h3SbaCaLqSobLkvCoWYpNQ==", "dependencies": { - "@react-stately/list": "^3.10.5", - "@react-types/shared": "^3.23.1", - "@react-types/tabs": "^3.3.7", + "@react-stately/list": "^3.10.8", + "@react-types/shared": "^3.24.1", + "@react-types/tabs": "^3.3.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/toast": { - "version": "3.0.0-beta.4", - "resolved": "https://registry.npmjs.org/@react-stately/toast/-/toast-3.0.0-beta.4.tgz", - "integrity": "sha512-YzEyFNAAQqZ+7pZpRiejotxDzp5CHagN21btVGGwU2jHu/oQRR+todtB3wADAp7EF5lfAlAsLABiD9ZNWQeDTw==", + "version": "3.0.0-beta.5", + "resolved": "https://registry.npmjs.org/@react-stately/toast/-/toast-3.0.0-beta.5.tgz", + "integrity": "sha512-MEdQwcKsexlcJ4YQZ9cN5QSIqTlGGdgC5auzSKXXoq15DHuo4mtHfLzXPgcMDYOhOdmyphMto8Vt+21UL2FOrw==", "dependencies": { "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.2.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/toggle": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz", - "integrity": "sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.7.tgz", + "integrity": "sha512-AS+xB4+hHWa3wzYkbS6pwBkovPfIE02B9SnuYTe0stKcuejpWKo5L3QMptW0ftFYsW3ZPCXuneImfObEw2T01A==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/checkbox": "^3.8.1", + "@react-stately/utils": "^3.10.3", + "@react-types/checkbox": "^3.8.3", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/tooltip": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz", - "integrity": "sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA==", + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.12.tgz", + "integrity": "sha512-QKYT/cze7n9qaBsk7o5ais3jRfhYCzcVRfps+iys/W+/9FFbbhjfQG995Lwi6b+vGOHWfXxXpwmyIO2tzM1Iog==", "dependencies": { - "@react-stately/overlays": "^3.6.7", - "@react-types/tooltip": "^3.4.9", + "@react-stately/overlays": "^3.6.10", + "@react-types/tooltip": "^3.4.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/tree": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz", - "integrity": "sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.4.tgz", + "integrity": "sha512-HFNclIXJ/3QdGQWxXbj+tdlmIX/XwCfzAMB5m26xpJ6HtJhia6dtx3GLfcdyHNjmuRbAsTBsAAnnVKBmNRUdIQ==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.2", + "@react-stately/utils": "^3.10.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", - "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.3.tgz", + "integrity": "sha512-moClv7MlVSHpbYtQIkm0Cx+on8Pgt1XqtPx6fy9rQFb2DNc9u1G3AUVnqA17buOkH1vLxAtX4MedlxMWyRCYYA==", "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/virtualizer": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz", - "integrity": "sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.0.2.tgz", + "integrity": "sha512-LiSr6E6OoL/cKVFO088zEzkNGj41g02nlOAgLluYONncNEjoYiHmb8Yw0otPgViVLKiFjO6Kk4W+dbt8EZ51Ag==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/breadcrumbs": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz", - "integrity": "sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.7.tgz", + "integrity": "sha512-ZmhXwD2LLzfEA2OvOCp/QvXu8A/Edsrn5q0qUDGsmOZj9SCVeT82bIv8P+mQnATM13mi2gyoik6102Jc1OscJA==", "dependencies": { - "@react-types/link": "^3.5.5", - "@react-types/shared": "^3.23.1" + "@react-types/link": "^3.5.7", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/button": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz", - "integrity": "sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.6.tgz", + "integrity": "sha512-8lA+D5JLbNyQikf8M/cPP2cji91aVTcqjrGpDqI7sQnaLFikM8eFR6l1ZWGtZS5MCcbfooko77ha35SYplSQvw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/calendar": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz", - "integrity": "sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.9.tgz", + "integrity": "sha512-O/PS9c21HgO9qzxOyZ7/dTccxabFZdF6tj3UED4DrBw7AN3KZ7JMzwzYbwHinOcO7nUcklGgNoAIHk45UAKR9g==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-types/shared": "^3.23.1" + "@internationalized/date": "^3.5.5", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/checkbox": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz", - "integrity": "sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.3.tgz", + "integrity": "sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/color": { - "version": "3.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.0-beta.25.tgz", - "integrity": "sha512-D24ASvLeSWouBwOBi4ftUe4/BhrZj5AiHV7tXwrVeMGOy9Z9jyeK65Xysq+R3ecaSONLXsgai5CQMvj13cOacA==", + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.0-rc.1.tgz", + "integrity": "sha512-aw6FzrBlZTWKrFaFskM7e3AFICe6JqH10wO0E919goa3LZDDFbyYEwRpatwjIyiZH1elEUkFPgwqpv3ZcPPn8g==", "dependencies": { - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3" + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/combobox": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz", - "integrity": "sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.12.1.tgz", + "integrity": "sha512-bd5YwHZWtgnJx4jGbplWbYzXj7IbO5w3IY5suNR7r891rx6IktquZ8GQwyYH0pQ/x+X5LdK2xI59i6+QC2PmlA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/datepicker": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz", - "integrity": "sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.8.2.tgz", + "integrity": "sha512-Ih4F0bNVGrEuwCD8XmmBAspuuOBsj/Svn/pDFtC2RyAZjXfWh+sI+n4XLz/sYKjvARh5TUI8GNy9smYS4vYXug==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-types/calendar": "^3.4.6", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@internationalized/date": "^3.5.5", + "@react-types/calendar": "^3.4.9", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/dialog": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.10.tgz", - "integrity": "sha512-S9ga+edOLNLZw7/zVOnZdT5T40etpzUYBXEKdFPbxyPYnERvRxJAsC1/ASuBU9fQAXMRgLZzADWV+wJoGS/X9g==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.12.tgz", + "integrity": "sha512-JmpQbSpXltqEyYfEwoqDolABIiojeExkqolHNdQlayIsfFuSxZxNwXZPOpz58Ri/iwv21JP7K3QF0Gb2Ohxl9w==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/form": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.4.tgz", - "integrity": "sha512-HZojAWrb6feYnhDEOy3vBamDVAHDl0l2JQZ7aIDLHmeTAGQC3JNZcm2fLTxqLye46zz8w8l8OHgI+NdD4PHdOw==", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.6.tgz", + "integrity": "sha512-lhS2y1bVtRnyYjkM+ylJUp2g663ZNbeZxu2o+mFfD5c2wYmVLA58IWR90c7DL8IVUitoANnZ1JPhhXvutiFpQQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/grid": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz", - "integrity": "sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.8.tgz", + "integrity": "sha512-6PJrpukwMqlv3IhJSDkJuVbhHM8Oe6hd2supWqd9adMXrlSP7QHt9a8SgFcFblCCTx8JzUaA0PvY5sTudcEtOQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/link": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz", - "integrity": "sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.7.tgz", + "integrity": "sha512-2WyaVmm1qr9UrSG3Dq6iz+2ziuVp+DH8CsYZ9CA6aNNb6U18Hxju3LTPb4a5gM0eC7W0mQGNBmrgGlAdDZEJOw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/listbox": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.4.9.tgz", - "integrity": "sha512-S5G+WmNKUIOPZxZ4svWwWQupP3C6LmVfnf8QQmPDvwYXGzVc0WovkqUWyhhjJirFDswTXRCO9p0yaTHHIlkdwQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.5.1.tgz", + "integrity": "sha512-n5bOgD9lgfK1qaLtag9WPnu151SwXBCNn/OgGY/Br9mWRl+nPUEYtFcPX+2VCld7uThf54kwrTmzlFnaraIlcw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/menu": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz", - "integrity": "sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg==", + "version": "3.9.11", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.11.tgz", + "integrity": "sha512-IguQVF70d7aHXgWB1Rd2a/PiIuLZ2Nt7lyayJshLcy/NLOYmgpTmTyn2WCtlA5lTfQwmQrNFf4EvnWkeljJXdA==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/meter": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.1.tgz", - "integrity": "sha512-AIJV4NDFAqKH94s02c5Da4TH2qgJjfrw978zuFM0KUBFD85WRPKh7MvgWpomvUgmzqE6lMCzIdi1KPKqrRabdw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.3.tgz", + "integrity": "sha512-Y2fX5CTAPGRKxVSeepbeyN6/K+wlF9pMRcNxTSU2qDwdoFqNCtTWMcWuCsU/Y2L/zU0jFWu4x0Vo7WkrcsgcMA==", "dependencies": { - "@react-types/progress": "^3.5.4" + "@react-types/progress": "^3.5.6" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/numberfield": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.3.tgz", - "integrity": "sha512-z5fGfVj3oh5bmkw9zDvClA1nDBSFL9affOuyk2qZ/M2SRUmykDAPCksbfcMndft0XULWKbF4s2CYbVI+E/yrUA==", + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.5.tgz", + "integrity": "sha512-LVWggkxwd1nyVZomXBPfQA1E4I4/i4PBifjcDs2AfcV7q5RE9D+DVIDXsYucVOBxPlDOxiAq/T9ypobspWSwHw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/overlays": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz", - "integrity": "sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA==", + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.9.tgz", + "integrity": "sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/progress": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz", - "integrity": "sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.6.tgz", + "integrity": "sha512-Nh43sjQ5adyN1bTHBPRaIPhXUdBqP0miYeJpeMY3V/KUl4qmouJLwDnccwFG4xLm6gBfYe22lgbbV7nAfNnuTQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/radio": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz", - "integrity": "sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.3.tgz", + "integrity": "sha512-fUVJt4Bb6jOReFqnhHVNxWXH7t6c60uSFfoPKuXt/xI9LL1i2jhpur0ggpTfIn3qLIAmNBU6bKBCWAdr4KjeVQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/searchfield": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.5.5.tgz", - "integrity": "sha512-T/NHg12+w23TxlXMdetogLDUldk1z5dDavzbnjKrLkajLb221bp8brlR/+O6C1CtFpuJGALqYHgTasU1qkQFSA==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.5.8.tgz", + "integrity": "sha512-EcdqalHNIC6BJoRfmqUhAvXRd3aHkWlV1cFCz57JJKgUEFYyXPNrXd1b73TKLzTXEk+X/D6LKV15ILYpEaxu8w==", "dependencies": { - "@react-types/shared": "^3.23.1", - "@react-types/textfield": "^3.9.3" + "@react-types/shared": "^3.24.1", + "@react-types/textfield": "^3.9.6" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/select": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz", - "integrity": "sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.6.tgz", + "integrity": "sha512-cVSFR0eJLup/ht1Uto+y8uyLmHO89J6wNh65SIHb3jeVz9oLBAedP3YNI2qB+F9qFMUcA8PBSLXIIuT6gXzLgQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/shared": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", - "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/slider": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.3.tgz", - "integrity": "sha512-F8qFQaD2mqug2D0XeWMmjGBikiwbdERFlhFzdvNGbypPLz3AZICBKp1ZLPWdl0DMuy03G/jy6Gl4mDobl7RT2g==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.5.tgz", + "integrity": "sha512-bRitwQRQjQoOcKEdPMljnvm474dwrmsc6pdsVQDh/qynzr+KO9IHuYc3qPW53WVE2hMQJDohlqtCAWQXWQ5Vcg==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/switch": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.3.tgz", - "integrity": "sha512-Nb6+J5MrPaFa8ZNFKGMzAsen/NNzl5UG/BbC65SLGPy7O0VDa/sUpn7dcu8V2xRpRwwIN/Oso4v63bt2sgdkgA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.5.tgz", + "integrity": "sha512-SZx1Bd+COhAOs/RTifbZG+uq/llwba7VAKx7XBeX4LeIz1dtguy5bigOBgFTMQi4qsIVCpybSWEEl+daj4XFPw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/table": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz", - "integrity": "sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.10.1.tgz", + "integrity": "sha512-xsNh0Gm4GtNeSknZqkMsfGvc94fycmfhspGO+FzQKim2hB5k4yILwd+lHYQ2UKW6New9GVH/zN2Pd3v67IeZ2g==", "dependencies": { - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1" + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/tabs": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz", - "integrity": "sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.9.tgz", + "integrity": "sha512-3Q9kRVvg/qDyeJR/W1+C2z2OyvDWQrSLvOCvAezX5UKzww4rBEAA8OqBlyDwn7q3fiwrh/m64l6p+dbln+RdxQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/textfield": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz", - "integrity": "sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.6.tgz", + "integrity": "sha512-0uPqjJh4lYp1aL1HL9IlV8Cgp8eT0PcsNfdoCktfkLytvvBPmox2Pfm57W/d0xTtzZu2CjxhYNTob+JtGAOeXA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/tooltip": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz", - "integrity": "sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg==", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.11.tgz", + "integrity": "sha512-WPikHQxeT5Lb09yJEaW6Ja3ecE0g1YM6ukWYS2v/iZLUPn5YlYrGytspuCYQNSh/u7suCz4zRLEHYCl7OCigjw==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@remix-run/router": { @@ -3512,9 +3521,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", + "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", "cpu": [ "arm" ], @@ -3525,9 +3534,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", + "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", "cpu": [ "arm64" ], @@ -3538,9 +3547,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", + "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", "cpu": [ "arm64" ], @@ -3551,9 +3560,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", + "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", "cpu": [ "x64" ], @@ -3564,9 +3573,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", + "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", "cpu": [ "arm" ], @@ -3577,9 +3586,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", + "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", "cpu": [ "arm" ], @@ -3590,9 +3599,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", + "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", "cpu": [ "arm64" ], @@ -3603,9 +3612,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", + "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", "cpu": [ "arm64" ], @@ -3616,9 +3625,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", + "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", "cpu": [ "ppc64" ], @@ -3629,9 +3638,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", + "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", "cpu": [ "riscv64" ], @@ -3642,9 +3651,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", + "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", "cpu": [ "s390x" ], @@ -3655,9 +3664,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", + "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", "cpu": [ "x64" ], @@ -3668,9 +3677,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", + "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", "cpu": [ "x64" ], @@ -3681,9 +3690,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", + "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", "cpu": [ "arm64" ], @@ -3694,9 +3703,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", + "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", "cpu": [ "ia32" ], @@ -3707,9 +3716,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", + "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", "cpu": [ "x64" ], @@ -3933,9 +3942,9 @@ } }, "node_modules/@swc/helpers": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", - "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", "dependencies": { "tslib": "^2.4.0" } @@ -3995,6 +4004,12 @@ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, "node_modules/@types/prop-types": { "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", @@ -4020,6 +4035,15 @@ "@types/react": "*" } }, + "node_modules/@types/react-window": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", + "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -4217,19 +4241,20 @@ "dev": true }, "node_modules/@vanilla-extract/css": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.15.3.tgz", - "integrity": "sha512-mxoskDAxdQAspbkmQRxBvolUi1u1jnyy9WZGm+GeH8V2wwhEvndzl1QoK7w8JfA0WFevTxbev5d+i+xACZlPhA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.15.5.tgz", + "integrity": "sha512-N1nQebRWnXvlcmu9fXKVUs145EVwmWtMD95bpiEKtvehHDpUhmO1l2bauS7FGYKbi3dU1IurJbGpQhBclTr1ng==", "peer": true, "dependencies": { "@emotion/hash": "^0.9.0", - "@vanilla-extract/private": "^1.0.5", + "@vanilla-extract/private": "^1.0.6", "css-what": "^6.1.0", "cssesc": "^3.0.0", "csstype": "^3.0.7", "dedent": "^1.5.3", "deep-object-diff": "^1.1.9", "deepmerge": "^4.2.2", + "lru-cache": "^10.4.3", "media-query-parser": "^2.0.2", "modern-ahocorasick": "^1.0.0", "picocolors": "^1.0.0" @@ -4244,14 +4269,14 @@ } }, "node_modules/@vanilla-extract/private": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.5.tgz", - "integrity": "sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.6.tgz", + "integrity": "sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==" }, "node_modules/@vanilla-extract/recipes": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@vanilla-extract/recipes/-/recipes-0.5.3.tgz", - "integrity": "sha512-SPREq1NmaoKuvJeOV0pppOkwy3pWZUoDufsyQ6iHrbkHhAU7XQqG9o0iZSmg5JoVgDLIiOr9djQb0x9wuxig7A==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@vanilla-extract/recipes/-/recipes-0.5.5.tgz", + "integrity": "sha512-VadU7+IFUwLNLMgks29AHav/K5h7DOEfTU91RItn5vwdPfzduodNg317YbgWCcpm7FSXkuR3B3X8ZOi95UOozA==", "peerDependencies": { "@vanilla-extract/css": "^1.0.0" } @@ -4276,9 +4301,9 @@ } }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4411,9 +4436,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -4430,10 +4455,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -4464,9 +4489,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001637", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001637.tgz", - "integrity": "sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==", + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", "dev": true, "funding": [ { @@ -4670,9 +4695,9 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -4758,9 +4783,9 @@ } }, "node_modules/dompurify": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz", - "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==" }, "node_modules/dot-case": { "version": "3.0.4", @@ -4773,9 +4798,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.812", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz", - "integrity": "sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", "dev": true }, "node_modules/entities": { @@ -4837,9 +4862,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -5095,9 +5120,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -5271,9 +5296,9 @@ } }, "node_modules/framer-motion": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.4.tgz", - "integrity": "sha512-D+EXd0lspaZijv3BJhAcSsyGz+gnvoEdnf+QWkPZdhoFzbeX/2skrH9XSVFb0osgUnCajW8x1frjhLuKwa/Reg==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.3.0.tgz", + "integrity": "sha512-hjYjMUQaWuqilwRr5kC0CunHZFVMtKWHy/IdL/LPRBD0C491DKTvYwQRJ5qRXEAOT+Rth7Vi4XBe4TA4bFOn3A==", "dependencies": { "tslib": "^2.4.0" }, @@ -5314,6 +5339,11 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fuzzysort": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.0.2.tgz", + "integrity": "sha512-ZyahVgxvckB1Qosn7YGWLDJJp2XlyaQ2WmZeI+d0AzW0AMqVYnz5N89G6KAKa6m/LOtv+kzJn4lhDF/yVg11Cg==" + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5446,9 +5476,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -5469,9 +5499,9 @@ } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -5587,13 +5617,13 @@ "dev": true }, "node_modules/isomorphic-dompurify": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.12.0.tgz", - "integrity": "sha512-jJm6VgJ9toBLqNUHuLudn+2Q3NBBaoPbsh5SzzO2dp9Zq9+p6fEg4Ffuq9RZsofb8OnqE6FJVVq3MRDLlmBHpA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.15.0.tgz", + "integrity": "sha512-RDHlyeVmwEDAPZuX1VaaBzSn9RrsfvswxH7faEQK9cTHC1dXeNuK6ElUeSr7locFyeLguut8ASfhQWxHB4Ttug==", "dependencies": { "@types/dompurify": "^3.0.5", - "dompurify": "^3.1.5", - "jsdom": "^24.1.0" + "dompurify": "^3.1.6", + "jsdom": "^25.0.0" }, "engines": { "node": ">=18" @@ -5617,9 +5647,9 @@ } }, "node_modules/jsdom": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", - "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz", + "integrity": "sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==", "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", @@ -5627,11 +5657,11 @@ "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.4", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.10", + "nwsapi": "^2.2.12", "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.0", + "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.4", @@ -5640,7 +5670,7 @@ "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.17.0", + "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -5781,6 +5811,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5808,18 +5843,15 @@ } }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "peer": true }, "node_modules/marked": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.1.tgz", - "integrity": "sha512-7kBohS6GrZKvCsNXZyVVXSW7/hGBHe49ng99YPkDCckSUrrG7MSFLCexsRxptzOmyW2eT5dySh4Md1V6my52fA==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.0.tgz", + "integrity": "sha512-P93GikH/Pde0hM5TAXEd8I4JAYi8IB03n8qzW8Bh1BIEFpEyBoYxi/XWZA53LSpTeLBiMQOoSMj0u5E/tiVYTA==", "bin": { "marked": "bin/marked.js" }, @@ -5836,6 +5868,11 @@ "@babel/runtime": "^7.12.5" } }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5846,9 +5883,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -5938,15 +5975,15 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==" + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "node_modules/once": { "version": "1.4.0", @@ -6082,9 +6119,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -6099,9 +6136,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.44", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz", + "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==", "dev": true, "funding": [ { @@ -6119,7 +6156,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -6209,85 +6246,90 @@ } }, "node_modules/react-aria": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.33.1.tgz", - "integrity": "sha512-hFC3K/UA+90Krlx2IgRTgzFbC6FSPi4pUwHT+STperPLK+cTEHkI+3Lu0YYwQSBatkgxnIv9+GtFuVbps2kROw==", + "version": "3.34.3", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.34.3.tgz", + "integrity": "sha512-wSprEI5EojDFCm357MxnKAxJZN68OYIt6UH6N0KCo6MEUAVZMbhMSmGYjw/kLK4rI7KrbJDqGqUMQkwc93W9Ng==", "dependencies": { "@internationalized/string": "^3.2.3", - "@react-aria/breadcrumbs": "^3.5.13", - "@react-aria/button": "^3.9.5", - "@react-aria/calendar": "^3.5.8", - "@react-aria/checkbox": "^3.14.3", - "@react-aria/combobox": "^3.9.1", - "@react-aria/datepicker": "^3.10.1", - "@react-aria/dialog": "^3.5.14", - "@react-aria/dnd": "^3.6.1", - "@react-aria/focus": "^3.17.1", - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/link": "^3.7.1", - "@react-aria/listbox": "^3.12.1", - "@react-aria/menu": "^3.14.1", - "@react-aria/meter": "^3.4.13", - "@react-aria/numberfield": "^3.11.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/progress": "^3.4.13", - "@react-aria/radio": "^3.10.4", - "@react-aria/searchfield": "^3.7.5", - "@react-aria/select": "^3.14.5", - "@react-aria/selection": "^3.18.1", - "@react-aria/separator": "^3.3.13", - "@react-aria/slider": "^3.7.8", - "@react-aria/ssr": "^3.9.4", - "@react-aria/switch": "^3.6.4", - "@react-aria/table": "^3.14.1", - "@react-aria/tabs": "^3.9.1", - "@react-aria/tag": "^3.4.1", - "@react-aria/textfield": "^3.14.5", - "@react-aria/tooltip": "^3.7.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-types/shared": "^3.23.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@react-aria/breadcrumbs": "^3.5.16", + "@react-aria/button": "^3.9.8", + "@react-aria/calendar": "^3.5.11", + "@react-aria/checkbox": "^3.14.6", + "@react-aria/combobox": "^3.10.3", + "@react-aria/datepicker": "^3.11.2", + "@react-aria/dialog": "^3.5.17", + "@react-aria/dnd": "^3.7.2", + "@react-aria/focus": "^3.18.2", + "@react-aria/gridlist": "^3.9.3", + "@react-aria/i18n": "^3.12.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/label": "^3.7.11", + "@react-aria/link": "^3.7.4", + "@react-aria/listbox": "^3.13.3", + "@react-aria/menu": "^3.15.3", + "@react-aria/meter": "^3.4.16", + "@react-aria/numberfield": "^3.11.6", + "@react-aria/overlays": "^3.23.2", + "@react-aria/progress": "^3.4.16", + "@react-aria/radio": "^3.10.7", + "@react-aria/searchfield": "^3.7.8", + "@react-aria/select": "^3.14.9", + "@react-aria/selection": "^3.19.3", + "@react-aria/separator": "^3.4.2", + "@react-aria/slider": "^3.7.11", + "@react-aria/ssr": "^3.9.5", + "@react-aria/switch": "^3.6.7", + "@react-aria/table": "^3.15.3", + "@react-aria/tabs": "^3.9.5", + "@react-aria/tag": "^3.4.5", + "@react-aria/textfield": "^3.14.8", + "@react-aria/tooltip": "^3.7.7", + "@react-aria/utils": "^3.25.2", + "@react-aria/visually-hidden": "^3.8.15", + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-aria-components": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.2.1.tgz", - "integrity": "sha512-iGIdDjbTyLLn0/tGUyBQxxu+E1bw4/H4AU89d0cRcu8yIdw6MXG29YElmRHn0ugiyrERrk/YQALihstnns5kRQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.3.3.tgz", + "integrity": "sha512-wNjcoyIFTL14Z07OJ1I5m37CYB+1oH2DW8PIgZQjGt9lLcYKKEBLSgsenHVKu1F1L9tqlpXgYk5TeXCzU/xUKw==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/string": "^3.2.3", - "@react-aria/color": "3.0.0-beta.33", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/menu": "^3.14.1", - "@react-aria/toolbar": "3.0.0-beta.5", - "@react-aria/tree": "3.0.0-alpha.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/color": "^3.6.1", - "@react-stately/menu": "^3.7.1", - "@react-stately/table": "^3.11.8", - "@react-stately/utils": "^3.10.1", - "@react-types/color": "3.0.0-beta.25", - "@react-types/form": "^3.7.4", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "@react-aria/collections": "3.0.0-alpha.4", + "@react-aria/color": "3.0.0-rc.2", + "@react-aria/dnd": "^3.7.2", + "@react-aria/focus": "^3.18.2", + "@react-aria/interactions": "^3.22.2", + "@react-aria/menu": "^3.15.3", + "@react-aria/toolbar": "3.0.0-beta.8", + "@react-aria/tree": "3.0.0-alpha.5", + "@react-aria/utils": "^3.25.2", + "@react-aria/virtualizer": "^4.0.2", + "@react-stately/color": "^3.7.2", + "@react-stately/layout": "^4.0.2", + "@react-stately/menu": "^3.8.2", + "@react-stately/table": "^3.12.2", + "@react-stately/utils": "^3.10.3", + "@react-stately/virtualizer": "^4.0.2", + "@react-types/color": "3.0.0-rc.1", + "@react-types/form": "^3.7.6", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0", "client-only": "^0.0.1", - "react-aria": "^3.33.1", - "react-stately": "^3.31.1", + "react-aria": "^3.34.3", + "react-stately": "^3.32.2", "use-sync-external-store": "^1.2.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-dom": { @@ -6342,36 +6384,36 @@ } }, "node_modules/react-stately": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.31.1.tgz", - "integrity": "sha512-wuq673NHkYSdoceGryjtMJJvB9iQgyDkQDsnTN0t2v91pXjGDsN/EcOvnUrxXSBtY9eLdIw74R54z9GX5cJNEg==", - "dependencies": { - "@react-stately/calendar": "^3.5.1", - "@react-stately/checkbox": "^3.6.5", - "@react-stately/collections": "^3.10.7", - "@react-stately/combobox": "^3.8.4", - "@react-stately/data": "^3.11.4", - "@react-stately/datepicker": "^3.9.4", - "@react-stately/dnd": "^3.3.1", - "@react-stately/form": "^3.0.3", - "@react-stately/list": "^3.10.5", - "@react-stately/menu": "^3.7.1", - "@react-stately/numberfield": "^3.9.3", - "@react-stately/overlays": "^3.6.7", - "@react-stately/radio": "^3.10.4", - "@react-stately/searchfield": "^3.5.3", - "@react-stately/select": "^3.6.4", - "@react-stately/selection": "^3.15.1", - "@react-stately/slider": "^3.5.4", - "@react-stately/table": "^3.11.8", - "@react-stately/tabs": "^3.6.6", - "@react-stately/toggle": "^3.7.4", - "@react-stately/tooltip": "^3.4.9", - "@react-stately/tree": "^3.8.1", - "@react-types/shared": "^3.23.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.32.2.tgz", + "integrity": "sha512-pDSrbCIJtir4HeSa//PTqLSR7Tl7pFC9usmkkBObNKktObQq3Vdgkf46cxeTD1ov7J7GDdR3meIyjXGnZoEzUg==", + "dependencies": { + "@react-stately/calendar": "^3.5.4", + "@react-stately/checkbox": "^3.6.8", + "@react-stately/collections": "^3.10.9", + "@react-stately/combobox": "^3.9.2", + "@react-stately/data": "^3.11.6", + "@react-stately/datepicker": "^3.10.2", + "@react-stately/dnd": "^3.4.2", + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.8", + "@react-stately/menu": "^3.8.2", + "@react-stately/numberfield": "^3.9.6", + "@react-stately/overlays": "^3.6.10", + "@react-stately/radio": "^3.10.7", + "@react-stately/searchfield": "^3.5.6", + "@react-stately/select": "^3.6.7", + "@react-stately/selection": "^3.16.2", + "@react-stately/slider": "^3.5.7", + "@react-stately/table": "^3.12.2", + "@react-stately/tabs": "^3.6.9", + "@react-stately/toggle": "^3.7.7", + "@react-stately/tooltip": "^3.4.12", + "@react-stately/tree": "^3.8.4", + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-virtual": { @@ -6388,6 +6430,22 @@ "react": "^16.6.3 || ^17.0.0" } }, + "node_modules/react-window": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", + "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "memoize-one": ">=3.1.1 <6" + }, + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -6434,9 +6492,9 @@ } }, "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", + "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -6449,22 +6507,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@rollup/rollup-android-arm-eabi": "4.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", "fsevents": "~2.3.2" } }, @@ -6521,9 +6579,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6693,9 +6751,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/type-check": { "version": "0.4.0", @@ -6743,9 +6801,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -6972,9 +7030,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, diff --git a/internal/dev_server/ui/package.json b/internal/dev_server/ui/package.json index dac36ec8..b6f415f0 100644 --- a/internal/dev_server/ui/package.json +++ b/internal/dev_server/ui/package.json @@ -11,17 +11,22 @@ "preview": "vite preview" }, "dependencies": { - "@launchpad-ui/components": "0.2.12", + "@launchpad-ui/components": "0.4.4", "@launchpad-ui/core": "0.49.22", - "@launchpad-ui/icons": "0.18.4", - "@launchpad-ui/tokens": "0.9.12", + "@launchpad-ui/icons": "0.18.13", + "@launchpad-ui/tokens": "0.11.3", + "fuzzysort": "3.0.2", "launchdarkly-js-client-sdk": "3.4.0", + "lodash": "4.17.21", "react": "18.3.1", - "react-dom": "18.3.1" + "react-dom": "18.3.1", + "react-window": "1.8.10" }, "devDependencies": { + "@types/lodash": "4.17.7", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", + "@types/react-window": "1.8.8", "@typescript-eslint/eslint-plugin": "7.13.1", "@typescript-eslint/parser": "7.13.1", "@vitejs/plugin-react": "4.3.1", diff --git a/internal/dev_server/ui/src/App.css b/internal/dev_server/ui/src/App.css index 586121ca..3c27364b 100644 --- a/internal/dev_server/ui/src/App.css +++ b/internal/dev_server/ui/src/App.css @@ -3,50 +3,23 @@ @import url('../node_modules/@launchpad-ui/tokens/dist/themes.css'); @font-face { - font-family: inter; - font-style: normal; - font-weight: 300 800; - font-display: swap; - src: url('https://fonts.gstatic.com/s/inter/v7/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2') - format('woff2'); -} - -@font-face { - font-family: 'Audimat 3000 Regulier'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url('Audimat3000-Regulier.var-subset.woff2') format('woff2'); + font-family: inter; + src: url('https://fonts.gstatic.com/s/inter/v7/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7.woff2') + format('woff2'); + font-display: swap; + font-weight: 300 700; } html, body, #root { - height: 100%; - width: 100%; box-sizing: border-box; -} -#root { - padding: 2rem; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: 'Audimat 3000 Regulier', sans-serif; -} - -span { - font-family: 'Inter', sans-serif; -} + font-family: var(--lp-font-family-base); + font-size: var(--lp-font-size-300); + line-height: var(--lp-line-height-300); -.container { - max-width: 40rem; - margin: 0 auto; + background-color: var(--lp-color-bg-ui-primary); } .only-show-overrides-label { @@ -76,6 +49,7 @@ ul.flags-list li .flag-value { flex-direction: row; align-items: center; flex-shrink: 1; + padding-right: 1rem; } code { diff --git a/internal/dev_server/ui/src/App.tsx b/internal/dev_server/ui/src/App.tsx index 1657ca05..fb901a89 100644 --- a/internal/dev_server/ui/src/App.tsx +++ b/internal/dev_server/ui/src/App.tsx @@ -1,42 +1,90 @@ import './App.css'; -import { useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import Flags from './Flags.tsx'; import ProjectSelector from './ProjectSelector.tsx'; -import { Box, Alert, CopyToClipboard } from '@launchpad-ui/core'; +import { Box, Alert, CopyToClipboard, Inline } from '@launchpad-ui/core'; import SyncButton from './Sync.tsx'; -import { LDFlagSet } from 'launchdarkly-js-client-sdk'; -import { Heading, Text } from '@launchpad-ui/components'; +import { LDFlagSet, LDFlagValue } from 'launchdarkly-js-client-sdk'; +import { + Heading, + Text, + Tooltip, + TooltipTrigger, + Pressable, +} from '@launchpad-ui/components'; +import { Icon } from '@launchpad-ui/icons'; +import { FlagVariation } from './api.ts'; +import { apiRoute, sortFlags } from './util.ts'; function App() { const [selectedProject, setSelectedProject] = useState(null); + const [sourceEnvironmentKey, setSourceEnvironmentKey] = useState< + string | null + >(null); + const [overrides, setOverrides] = useState< + Record + >({}); + const [availableVariations, setAvailableVariations] = useState< + Record + >({}); const [flags, setFlags] = useState(null); const [showBanner, setShowBanner] = useState(false); + const fetchDevFlags = useCallback(async () => { + if (!selectedProject) { + return; + } + const res = await fetch( + apiRoute( + `/dev/projects/${selectedProject}?expand=overrides&expand=availableVariations`, + ), + ); + const json = await res.json(); + if (!res.ok) { + throw new Error(`Got ${res.status}, ${res.statusText} from flag fetch`); + } + + const { + flagsState: flags, + overrides, + sourceEnvironmentKey, + availableVariations, + } = json; + + setFlags(sortFlags(flags)); + setOverrides(overrides); + setSourceEnvironmentKey(sourceEnvironmentKey); + setAvailableVariations(availableVariations); + }, [selectedProject, setFlags, setSourceEnvironmentKey]); + + // Fetch flags / overrides on mount + useEffect(() => { + Promise.all([fetchDevFlags()]).catch( + console.error.bind(console, 'error when fetching flags'), + ); + }, [fetchDevFlags]); return (
-
- + {showBanner && ( - + No projects. Add one via @@ -63,23 +111,36 @@ function App() { setSelectedProject={setSelectedProject} setShowBanner={setShowBanner} /> + + + + + {sourceEnvironmentKey} + + + + Source Environment Key + )} {selectedProject && ( )} -
+
); } diff --git a/internal/dev_server/ui/src/Flag.tsx b/internal/dev_server/ui/src/Flag.tsx new file mode 100644 index 00000000..51c4da00 --- /dev/null +++ b/internal/dev_server/ui/src/Flag.tsx @@ -0,0 +1,202 @@ +import { + Button, + ButtonGroup, + Dialog, + DialogTrigger, + FieldError, + Form, + IconButton, + Label, + ListBox, + ListBoxItem, + Modal, + ModalOverlay, + Popover, + Select, + SelectValue, + Switch, + Text, + TextArea, + TextField, + Tooltip, + TooltipTrigger, +} from '@launchpad-ui/components'; +import { FormEvent, Fragment } from 'react'; +import { Icon } from '@launchpad-ui/icons'; +import { LDFlagValue } from 'launchdarkly-js-client-sdk'; +import { FlagVariation } from './api.ts'; +import { Box, Inline } from '@launchpad-ui/core'; +import { isEqual } from 'lodash'; + +type VariationValuesProps = { + availableVariations: FlagVariation[]; + currentValue: LDFlagValue; + flagValue: LDFlagValue; + flagKey: string; + updateOverride: (flagKey: string, overrideValue: LDFlagValue) => void; +}; +const VariationValues = ({ + availableVariations, + currentValue, + flagKey, + flagValue, + updateOverride, +}: VariationValuesProps) => { + switch (typeof flagValue) { + case 'boolean': + return ( + { + updateOverride(flagKey, newValue); + }} + /> + ); + default: + let variations = availableVariations; + let selectedVariationIndex = variations.findIndex((variation) => + isEqual(variation.value, currentValue), + ); + if (selectedVariationIndex === -1) { + variations = [ + { _id: 'OVERRIDE', name: 'Local Override', value: currentValue }, + ...variations, + ]; + selectedVariationIndex = 0; + } + let onSubmit = (close: () => void) => (e: FormEvent) => { + // Prevent default browser page refresh. + e.preventDefault(); + let data = Object.fromEntries(new FormData(e.currentTarget)); + updateOverride(flagKey, JSON.parse(data.value as string)); + close(); + }; + + //TODO: + // Grow the text area when editing local override + return ( + + + + + + + Edit the served variation value as JSON + + + + + {({ close }) => ( +
+ { + try { + JSON.parse(value); + return null; + } catch (err) { + if (err instanceof Error) { + return `Unable to parse value as JSON: ${err.toString()}`; + } else { + return `Unable to parse value as JSON: unknown parse error`; + } + } + }} + > + + - - - - - {({ close }) => ( - { - let newVal; - - try { - newVal = JSON.parse( - textAreaRef?.current?.value || '', - ); - } catch (err) { - window.alert('Invalid JSON formatting'); - return; - } + {paginatedFlags.map(([flagKey, { value: flagValue }], index) => { + const overrideValue = overrides[flagKey]?.value; + const hasOverride = flagKey in overrides; + const currentValue = hasOverride ? overrideValue : flagValue; - updateOverride(flagKey, newVal); - }} - > -