diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 38a166a3..284c01d2 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -14,7 +14,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: "20.17.0" + node-version: "22.11.0" cache: "npm" - name: Install JS dependencies diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index 214eb096..305c3f60 100644 --- a/.github/workflows/rspec.yml +++ b/.github/workflows/rspec.yml @@ -17,17 +17,17 @@ jobs: - name: Set up Ruby and install gems uses: ruby/setup-ruby@v1 with: - ruby-version: "3.3.4" + ruby-version: "3.3.5" bundler-cache: true - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: "20.17.0" + node-version: "22.11.0" cache: "npm" - name: Install JS dependencies - run: npm install --legacy-peer-deps + run: npm ci --legacy-peer-deps - name: Precompile assets run: npm run build diff --git a/.github/workflows/typescript.yml b/.github/workflows/typescript.yml index 2d434efe..9784168c 100644 --- a/.github/workflows/typescript.yml +++ b/.github/workflows/typescript.yml @@ -14,7 +14,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: "20.17.0" + node-version: "22.11.0" cache: "npm" - name: Install JS dependencies diff --git a/.index.yml b/.index.yml deleted file mode 100644 index 39cbd854..00000000 --- a/.index.yml +++ /dev/null @@ -1,10 +0,0 @@ -# Exclude gems by name. If a gem is never referenced in the project's code and is only used as a tool, excluding it will -# speed up indexing and reduce the amount of results in features like definition or completion -excluded_gems: - - rubocop - - sorbet - - tapioca - -# Exclude files based on a given pattern. Often used to exclude test files or fixtures -excluded_patterns: - - "sorbet/**/*.rb" \ No newline at end of file diff --git a/.node-version b/.node-version index 016e34ba..bb8c76c6 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -v20.17.0 +v22.11.0 diff --git a/.npmrc b/.npmrc index 3e775efb..22144e56 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ auto-install-peers=true +legacy-peer-deps=true diff --git a/.nvmrc b/.nvmrc index 016e34ba..bb8c76c6 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20.17.0 +v22.11.0 diff --git a/.ruby-version b/.ruby-version index e69de29b..fa7adc7a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -0,0 +1 @@ +3.3.5 diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 5dfb2ef9..f2cc5ea2 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,6 @@ { "recommendations": [ "aaron-bond.better-comments", - "coenraads.bracket-pair-colorizer-2", "naumovs.color-highlight", "dbaeumer.vscode-eslint", "wix.vscode-import-cost", diff --git a/Gemfile b/Gemfile index f6108af6..c6a459a8 100644 --- a/Gemfile +++ b/Gemfile @@ -2,10 +2,10 @@ source "https://rubygems.org" -ruby "3.3.4" +ruby "3.3.5" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" -gem "rails", "~> 7.1.3", ">= 7.1.3.2" +gem "rails", "~> 7.2" # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] gem "sprockets-rails" @@ -79,14 +79,14 @@ gem "twilio-ruby" # Use sqlite3 as the database for Active Record # https://github.com/sparklemotion/sqlite3-ruby/pull/402/files -gem "sqlite3", "~> 1.7", force_ruby_platform: true +gem "sqlite3", "~> 2", force_ruby_platform: true # Ruby type hints # https://sorbet.org/docs/adopting gem "sorbet-runtime" # gcp storage for get/put org icons, etc. -gem "google-cloud-storage", "~> 1.51" +gem "google-cloud-storage", "~> 1.5" # shorten invite urls # https://github.com/jpmcgrath/shortener @@ -113,7 +113,7 @@ group :development, :test do # https://github.com/rspec/rspec-rails # Run against this stable release - gem "rspec-rails", "~> 6" + gem "rspec-rails", "~> 7" # https://github.com/thoughtbot/factory_bot_rails gem "factory_bot_rails" diff --git a/Gemfile.lock b/Gemfile.lock index bd92ecf2..2df7942c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,80 +1,77 @@ GEM remote: https://rubygems.org/ specs: - actioncable (7.1.4) - actionpack (= 7.1.4) - activesupport (= 7.1.4) + actioncable (7.2.2) + actionpack (= 7.2.2) + activesupport (= 7.2.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.4) - actionpack (= 7.1.4) - activejob (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) - mail (>= 2.7.1) - net-imap - net-pop - net-smtp - actionmailer (7.1.4) - actionpack (= 7.1.4) - actionview (= 7.1.4) - activejob (= 7.1.4) - activesupport (= 7.1.4) - mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp + actionmailbox (7.2.2) + actionpack (= 7.2.2) + activejob (= 7.2.2) + activerecord (= 7.2.2) + activestorage (= 7.2.2) + activesupport (= 7.2.2) + mail (>= 2.8.0) + actionmailer (7.2.2) + actionpack (= 7.2.2) + actionview (= 7.2.2) + activejob (= 7.2.2) + activesupport (= 7.2.2) + mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.1.4) - actionview (= 7.1.4) - activesupport (= 7.1.4) + actionpack (7.2.2) + actionview (= 7.2.2) + activesupport (= 7.2.2) nokogiri (>= 1.8.5) racc - rack (>= 2.2.4) + rack (>= 2.2.4, < 3.2) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.4) - actionpack (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + useragent (~> 0.16) + actiontext (7.2.2) + actionpack (= 7.2.2) + activerecord (= 7.2.2) + activestorage (= 7.2.2) + activesupport (= 7.2.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.4) - activesupport (= 7.1.4) + actionview (7.2.2) + activesupport (= 7.2.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.1.4) - activesupport (= 7.1.4) + activejob (7.2.2) + activesupport (= 7.2.2) globalid (>= 0.3.6) - activemodel (7.1.4) - activesupport (= 7.1.4) - activerecord (7.1.4) - activemodel (= 7.1.4) - activesupport (= 7.1.4) + activemodel (7.2.2) + activesupport (= 7.2.2) + activerecord (7.2.2) + activemodel (= 7.2.2) + activesupport (= 7.2.2) timeout (>= 0.4.0) - activestorage (7.1.4) - actionpack (= 7.1.4) - activejob (= 7.1.4) - activerecord (= 7.1.4) - activesupport (= 7.1.4) + activestorage (7.2.2) + actionpack (= 7.2.2) + activejob (= 7.2.2) + activerecord (= 7.2.2) + activesupport (= 7.2.2) marcel (~> 1.0) - activesupport (7.1.4) + activesupport (7.2.2) base64 + benchmark (>= 0.3) bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) android_key_attestation (0.3.0) @@ -84,6 +81,7 @@ GEM ast (2.4.2) awrence (1.2.1) base64 (0.2.0) + benchmark (0.3.0) better_errors (2.10.1) erubi (>= 1.0.0) rack (>= 0.9.0) @@ -114,7 +112,7 @@ GEM openssl-signature_algorithm (~> 1.0) crass (1.0.6) csv (3.3.0) - date (3.3.4) + date (3.4.0) debug (1.9.2) irb (~> 1.10) reline (>= 0.3.8) @@ -123,19 +121,20 @@ GEM diff-lcs (1.5.1) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - dotenv (3.1.2) + dotenv (3.1.4) drb (2.2.1) - dry-cli (1.1.0) + dry-cli (1.2.0) erubi (1.13.0) - factory_bot (6.4.6) + factory_bot (6.5.0) activesupport (>= 5.0.0) - factory_bot_rails (6.4.3) - factory_bot (~> 6.4) + factory_bot_rails (6.4.4) + factory_bot (~> 6.5) railties (>= 5.0.0) - faker (3.4.2) + faker (3.5.1) i18n (>= 1.8.11, < 2) - faraday (2.11.0) + faraday (2.12.0) faraday-net_http (>= 2.0, < 3.4) + json logger faraday-net_http (3.3.0) net-http @@ -152,14 +151,14 @@ GEM mutex_m representable (~> 3.0) retriable (>= 2.0, < 4.a) - google-apis-iamcredentials_v1 (0.21.0) + google-apis-iamcredentials_v1 (0.22.0) google-apis-core (>= 0.15.0, < 2.a) - google-apis-storage_v1 (0.44.0) + google-apis-storage_v1 (0.47.0) google-apis-core (>= 0.15.0, < 2.a) google-cloud-core (1.7.1) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) - google-cloud-env (2.1.1) + google-cloud-env (2.2.1) faraday (>= 1.0, < 3.a) google-cloud-errors (1.4.0) google-cloud-storage (1.52.0) @@ -171,7 +170,7 @@ GEM google-cloud-core (~> 1.6) googleauth (~> 1.9) mini_mime (~> 1.0) - googleauth (1.11.0) + googleauth (1.11.2) faraday (>= 1.0, < 3.a) google-cloud-env (~> 2.1) jwt (>= 1.4, < 3.0) @@ -179,24 +178,24 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) httpclient (2.8.3) - i18n (1.14.5) + i18n (1.14.6) concurrent-ruby (~> 1.0) - inertia_rails (3.2.0) - railties (>= 5) + inertia_rails (3.4.0) + railties (>= 6) io-console (0.7.2) - irb (1.14.0) + irb (1.14.1) rdoc (>= 4.0.0) reline (>= 0.4.2) - jbuilder (2.12.0) + jbuilder (2.13.0) actionview (>= 5.0.0) activesupport (>= 5.0.0) - json (2.7.2) - jwt (2.8.2) + json (2.7.5) + jwt (2.9.3) base64 language_server-protocol (3.17.0.3) lint_roller (1.1.0) - logger (1.6.0) - loofah (2.22.0) + logger (1.6.1) + loofah (2.23.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -210,12 +209,12 @@ GEM mini_mime (1.1.5) mini_portile2 (2.8.7) minitest (5.25.1) - msgpack (1.7.2) + msgpack (1.7.3) multi_json (1.15.0) mutex_m (0.2.0) net-http (0.4.1) uri - net-imap (0.4.14) + net-imap (0.5.0) date net-protocol net-pop (0.1.2) @@ -225,7 +224,7 @@ GEM net-smtp (0.5.0) net-protocol netrc (0.11.0) - nio4r (2.7.3) + nio4r (2.7.4) nokogiri (1.16.7-aarch64-linux) racc (~> 1.4) nokogiri (1.16.7-arm64-darwin) @@ -239,43 +238,42 @@ GEM openssl (> 2.0) os (1.1.4) parallel (1.26.3) - parser (3.3.4.2) + parser (3.3.5.1) ast (~> 2.4.1) racc - prism (0.30.0) + prism (1.2.0) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) psych (5.1.2) stringio public_suffix (6.0.1) - puma (6.4.2) + puma (6.4.3) nio4r (~> 2.0) racc (1.8.1) - rack (3.1.7) + rack (3.1.8) rack-proxy (0.7.7) rack rack-session (2.0.0) rack (>= 3.0.0) rack-test (2.1.0) rack (>= 1.3) - rackup (2.1.0) + rackup (2.2.0) rack (>= 3) - webrick (~> 1.8) - rails (7.1.4) - actioncable (= 7.1.4) - actionmailbox (= 7.1.4) - actionmailer (= 7.1.4) - actionpack (= 7.1.4) - actiontext (= 7.1.4) - actionview (= 7.1.4) - activejob (= 7.1.4) - activemodel (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + rails (7.2.2) + actioncable (= 7.2.2) + actionmailbox (= 7.2.2) + actionmailer (= 7.2.2) + actionpack (= 7.2.2) + actiontext (= 7.2.2) + actionview (= 7.2.2) + activejob (= 7.2.2) + activemodel (= 7.2.2) + activerecord (= 7.2.2) + activestorage (= 7.2.2) + activesupport (= 7.2.2) bundler (>= 1.15.0) - railties (= 7.1.4) + railties (= 7.2.2) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -287,48 +285,47 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - railties (7.1.4) - actionpack (= 7.1.4) - activesupport (= 7.1.4) - irb + railties (7.2.2) + actionpack (= 7.2.2) + activesupport (= 7.2.2) + irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) zeitwerk (~> 2.6) rainbow (3.1.1) rake (13.2.1) - rbi (0.1.14) - prism (>= 0.18.0, < 1.0.0) + rbi (0.2.1) + prism (~> 1.0) sorbet-runtime (>= 0.5.9204) rdoc (6.7.0) psych (>= 4.0.0) regexp_parser (2.9.2) - reline (0.5.9) + reline (0.5.10) io-console (~> 0.5) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.3.6) - strscan + rexml (3.3.9) rgeo (3.0.1) rgeo-geojson (2.2.0) multi_json (~> 1.15) rgeo (>= 1.0.0) - rouge (4.3.0) - rspec-core (3.13.0) + rouge (4.4.0) + rspec-core (3.13.2) rspec-support (~> 3.13.0) - rspec-expectations (3.13.2) + rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.1) + rspec-mocks (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (6.1.4) - actionpack (>= 6.1) - activesupport (>= 6.1) - railties (>= 6.1) + rspec-rails (7.0.1) + actionpack (>= 7.0) + activesupport (>= 7.0) + railties (>= 7.0) rspec-core (~> 3.13) rspec-expectations (~> 3.13) rspec-mocks (~> 3.13) @@ -336,30 +333,29 @@ GEM rspec-sorbet (1.9.2) sorbet-runtime rspec-support (3.13.1) - rubocop (1.65.1) + rubocop (1.66.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.4, < 3.0) - rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.31.1, < 2.0) + rubocop-ast (>= 1.32.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.32.1) + rubocop-ast (1.33.1) parser (>= 3.3.1.0) rubocop-factory_bot (2.26.1) rubocop (~> 1.61) - rubocop-performance (1.21.1) + rubocop-performance (1.22.1) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rails (2.26.0) + rubocop-rails (2.27.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.0.4) + rubocop-rspec (3.2.0) rubocop (~> 1.61) rubocop-shopify (2.15.1) rubocop (~> 1.51) @@ -369,9 +365,10 @@ GEM rubyzip (2.3.2) safety_net_attestation (0.4.0) jwt (~> 2.0) - scout_apm (5.3.8) + scout_apm (5.4.0) parser - selenium-webdriver (4.23.0) + securerandom (0.3.1) + selenium-webdriver (4.26.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -384,16 +381,16 @@ GEM faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - sorbet (0.5.11545) - sorbet-static (= 0.5.11545) - sorbet-runtime (0.5.11545) - sorbet-static (0.5.11545-aarch64-linux) - sorbet-static (0.5.11545-universal-darwin) - sorbet-static (0.5.11545-x86_64-linux) - sorbet-static-and-runtime (0.5.11545) - sorbet (= 0.5.11545) - sorbet-runtime (= 0.5.11545) - spoom (1.4.2) + sorbet (0.5.11633) + sorbet-static (= 0.5.11633) + sorbet-runtime (0.5.11633) + sorbet-static (0.5.11633-aarch64-linux) + sorbet-static (0.5.11633-universal-darwin) + sorbet-static (0.5.11633-x86_64-linux) + sorbet-static-and-runtime (0.5.11633) + sorbet (= 0.5.11633) + sorbet-runtime (= 0.5.11633) + spoom (1.5.0) erubi (>= 1.10.0) prism (>= 0.28.0) sorbet-static-and-runtime (>= 0.5.10187) @@ -405,52 +402,53 @@ GEM actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - sqlite3 (1.7.3) + sqlite3 (2.2.0) mini_portile2 (~> 2.8.0) - standard (1.40.0) + standard (1.41.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.65.0) + rubocop (~> 1.66.0) standard-custom (~> 1.0.0) - standard-performance (~> 1.4) + standard-performance (~> 1.5) standard-custom (1.0.2) lint_roller (~> 1.0) rubocop (~> 1.50) - standard-performance (1.4.0) + standard-performance (1.5.0) lint_roller (~> 1.1) - rubocop-performance (~> 1.21.0) + rubocop-performance (~> 1.22.0) stringio (3.1.1) - strscan (3.1.0) - tapioca (0.16.1) + tapioca (0.16.3) bundler (>= 2.2.25) netrc (>= 0.11.0) parallel (>= 1.21.0) - rbi (>= 0.1.14, < 0.2) + rbi (~> 0.2) sorbet-static-and-runtime (>= 0.5.11087) spoom (>= 1.2.0) thor (>= 1.2.0) yard-sorbet - thor (1.3.1) + thor (1.3.2) timeout (0.4.1) tpm-key_attestation (0.12.1) bindata (~> 2.4) openssl (> 2.0) openssl-signature_algorithm (~> 1.0) trailblazer-option (0.1.2) - twilio-ruby (7.2.4) + twilio-ruby (7.3.5) faraday (>= 0.9, < 3.0) jwt (>= 1.5, < 3.0) nokogiri (>= 1.6, < 2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) - unicode-display_width (2.5.0) - uri (0.13.0) - vite_rails (3.0.17) - railties (>= 5.1, < 8) + unicode-display_width (2.6.0) + uri (0.13.1) + useragent (0.16.10) + vite_rails (3.0.18) + railties (>= 5.1, < 9) vite_ruby (~> 3.0, >= 3.2.2) - vite_ruby (3.8.0) + vite_ruby (3.9.0) dry-cli (>= 0.7, < 2) + logger (~> 1.6) rack-proxy (~> 0.6, >= 0.6.1) zeitwerk (~> 2.2) voight_kampff (2.0.0) @@ -472,24 +470,23 @@ GEM openssl (>= 2.2) safety_net_attestation (~> 0.4.0) tpm-key_attestation (~> 0.12.0) - webrick (1.8.1) websocket (1.2.11) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - yard (0.9.36) + yard (0.9.37) yard-sorbet (0.9.0) sorbet-runtime yard - zeitwerk (2.6.17) + zeitwerk (2.7.1) PLATFORMS aarch64-linux aarch64-linux-gnu aarch64-linux-musl - arm64-darwin-23 + arm64-darwin universal-darwin x86_64-darwin x86_64-linux @@ -509,16 +506,16 @@ DEPENDENCIES faker faraday geocoder - google-cloud-storage (~> 1.51) + google-cloud-storage (~> 1.5) inertia_rails jbuilder pry puma (>= 5.0) - rails (~> 7.1.3, >= 7.1.3.2) + rails (~> 7.2) rails-controller-testing rgeo rgeo-geojson - rspec-rails (~> 6) + rspec-rails (~> 7) rspec-sorbet rubocop! rubocop-factory_bot! @@ -533,8 +530,8 @@ DEPENDENCIES sorbet sorbet-runtime sprockets-rails - sqlite3 (~> 1.7) - standard (~> 1.35)! + sqlite3 (~> 2) + standard! tapioca twilio-ruby tzinfo-data @@ -544,7 +541,7 @@ DEPENDENCIES webauthn RUBY VERSION - ruby 3.3.4p94 + ruby 3.3.5p100 BUNDLED WITH - 2.5.15 + 2.5.22 diff --git a/app/frontend/components/Layout.tsx b/app/frontend/components/Layout.tsx index 3ecefe97..8f2c3cd5 100644 --- a/app/frontend/components/Layout.tsx +++ b/app/frontend/components/Layout.tsx @@ -1,19 +1,22 @@ import Footer from "app/frontend/components/Footer"; import AppDrawer from "app/frontend/components/drawer/AppDrawer"; -import React, { PropsWithChildren } from "react"; - -import { Animate } from "react-simple-animate"; +import React, { Fragment, PropsWithChildren } from "react"; +import { Fade } from "react-bootstrap"; interface IProps extends PropsWithChildren { [key: string]: any; } -const _Layout: React.FC = ({ children, ...props }) => ( +const Layout_: React.FC = ({ children, ...props }) => ( - {React.Children.map(children, (child) => ( - - {React.isValidElement(child) ? React.cloneElement(child, { ...child?.props, ...props }) : child} - + {React.Children.map(children, (child, i) => ( + + {React.isValidElement(child) ? ( + React.cloneElement(child, { ...child?.props, ...props }) + ) : ( + + )} + ))}