diff --git a/Gemfile b/Gemfile
index 68494bae..d3f81e7a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,7 +3,7 @@
source "https://rubygems.org"
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
-gem "rails", "~> 8.1.1"
+gem "rails", "~> 8.1.3"
# The modern asset pipeline for Rails [https://github.com/rails/propshaft]
gem "propshaft"
# Use sqlite3 as the database for Active Record
@@ -40,7 +40,7 @@ gem "thruster", require: false
gem "vite_rails", "~> 3.0"
# The Rails adapter for Inertia.js [https://inertia-rails.dev]
-gem "inertia_rails", "~> 3.6"
+gem "inertia_rails", "~> 3.19"
# An authentication system generator for Rails applications
# we leave gem here to watch for security updates
diff --git a/Gemfile.lock b/Gemfile.lock
index 01a7d9ff..75e99899 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,31 +1,31 @@
GEM
remote: https://rubygems.org/
specs:
- action_text-trix (2.1.16)
+ action_text-trix (2.1.17)
railties
- actioncable (8.1.2)
- actionpack (= 8.1.2)
- activesupport (= 8.1.2)
+ actioncable (8.1.3)
+ actionpack (= 8.1.3)
+ activesupport (= 8.1.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
- actionmailbox (8.1.2)
- actionpack (= 8.1.2)
- activejob (= 8.1.2)
- activerecord (= 8.1.2)
- activestorage (= 8.1.2)
- activesupport (= 8.1.2)
+ actionmailbox (8.1.3)
+ actionpack (= 8.1.3)
+ activejob (= 8.1.3)
+ activerecord (= 8.1.3)
+ activestorage (= 8.1.3)
+ activesupport (= 8.1.3)
mail (>= 2.8.0)
- actionmailer (8.1.2)
- actionpack (= 8.1.2)
- actionview (= 8.1.2)
- activejob (= 8.1.2)
- activesupport (= 8.1.2)
+ actionmailer (8.1.3)
+ actionpack (= 8.1.3)
+ actionview (= 8.1.3)
+ activejob (= 8.1.3)
+ activesupport (= 8.1.3)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
- actionpack (8.1.2)
- actionview (= 8.1.2)
- activesupport (= 8.1.2)
+ actionpack (8.1.3)
+ actionview (= 8.1.3)
+ activesupport (= 8.1.3)
nokogiri (>= 1.8.5)
rack (>= 2.2.4)
rack-session (>= 1.0.1)
@@ -33,36 +33,36 @@ GEM
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
- actiontext (8.1.2)
+ actiontext (8.1.3)
action_text-trix (~> 2.1.15)
- actionpack (= 8.1.2)
- activerecord (= 8.1.2)
- activestorage (= 8.1.2)
- activesupport (= 8.1.2)
+ actionpack (= 8.1.3)
+ activerecord (= 8.1.3)
+ activestorage (= 8.1.3)
+ activesupport (= 8.1.3)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (8.1.2)
- activesupport (= 8.1.2)
+ actionview (8.1.3)
+ activesupport (= 8.1.3)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
- activejob (8.1.2)
- activesupport (= 8.1.2)
+ activejob (8.1.3)
+ activesupport (= 8.1.3)
globalid (>= 0.3.6)
- activemodel (8.1.2)
- activesupport (= 8.1.2)
- activerecord (8.1.2)
- activemodel (= 8.1.2)
- activesupport (= 8.1.2)
+ activemodel (8.1.3)
+ activesupport (= 8.1.3)
+ activerecord (8.1.3)
+ activemodel (= 8.1.3)
+ activesupport (= 8.1.3)
timeout (>= 0.4.0)
- activestorage (8.1.2)
- actionpack (= 8.1.2)
- activejob (= 8.1.2)
- activerecord (= 8.1.2)
- activesupport (= 8.1.2)
+ activestorage (8.1.3)
+ actionpack (= 8.1.3)
+ activejob (= 8.1.3)
+ activerecord (= 8.1.3)
+ activesupport (= 8.1.3)
marcel (~> 1.0)
- activesupport (8.1.2)
+ activesupport (8.1.3)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
@@ -80,13 +80,13 @@ GEM
ast (2.4.3)
authentication-zero (4.0.3)
base64 (0.3.0)
- bcrypt (3.1.21)
+ bcrypt (3.1.22)
bcrypt_pbkdf (1.1.2)
bigdecimal (4.0.1)
bindex (0.8.1)
bootsnap (1.23.0)
msgpack (~> 1.2)
- brakeman (8.0.2)
+ brakeman (8.0.4)
racc
builder (3.3.0)
bundler-audit (0.9.3)
@@ -135,7 +135,7 @@ GEM
activesupport (>= 6.1)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
- inertia_rails (3.17.0)
+ inertia_rails (3.19.0)
railties (>= 6)
io-console (0.8.2)
irb (1.17.0)
@@ -149,7 +149,7 @@ GEM
js-routes (2.3.6)
railties (>= 5)
sorbet-runtime
- json (2.18.1)
+ json (2.19.2)
kamal (2.10.1)
activesupport (>= 7.0)
base64 (~> 0.2)
@@ -170,7 +170,7 @@ GEM
launchy (>= 2.2, < 4)
lint_roller (1.1.0)
logger (1.7.0)
- loofah (2.25.0)
+ loofah (2.25.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.9.0)
@@ -201,19 +201,19 @@ GEM
net-protocol
net-ssh (7.3.0)
nio4r (2.7.5)
- nokogiri (1.19.0-aarch64-linux-gnu)
+ nokogiri (1.19.1-aarch64-linux-gnu)
racc (~> 1.4)
- nokogiri (1.19.0-aarch64-linux-musl)
+ nokogiri (1.19.1-aarch64-linux-musl)
racc (~> 1.4)
- nokogiri (1.19.0-arm-linux-gnu)
+ nokogiri (1.19.1-arm-linux-gnu)
racc (~> 1.4)
- nokogiri (1.19.0-arm-linux-musl)
+ nokogiri (1.19.1-arm-linux-musl)
racc (~> 1.4)
- nokogiri (1.19.0-arm64-darwin)
+ nokogiri (1.19.1-arm64-darwin)
racc (~> 1.4)
- nokogiri (1.19.0-x86_64-linux-gnu)
+ nokogiri (1.19.1-x86_64-linux-gnu)
racc (~> 1.4)
- nokogiri (1.19.0-x86_64-linux-musl)
+ nokogiri (1.19.1-x86_64-linux-musl)
racc (~> 1.4)
ostruct (0.6.3)
parallel (1.27.0)
@@ -236,7 +236,7 @@ GEM
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.8.1)
- rack (3.2.4)
+ rack (3.2.5)
rack-proxy (0.7.7)
rack
rack-session (2.1.1)
@@ -246,20 +246,20 @@ GEM
rack (>= 1.3)
rackup (2.3.1)
rack (>= 3)
- rails (8.1.2)
- actioncable (= 8.1.2)
- actionmailbox (= 8.1.2)
- actionmailer (= 8.1.2)
- actionpack (= 8.1.2)
- actiontext (= 8.1.2)
- actionview (= 8.1.2)
- activejob (= 8.1.2)
- activemodel (= 8.1.2)
- activerecord (= 8.1.2)
- activestorage (= 8.1.2)
- activesupport (= 8.1.2)
+ rails (8.1.3)
+ actioncable (= 8.1.3)
+ actionmailbox (= 8.1.3)
+ actionmailer (= 8.1.3)
+ actionpack (= 8.1.3)
+ actiontext (= 8.1.3)
+ actionview (= 8.1.3)
+ activejob (= 8.1.3)
+ activemodel (= 8.1.3)
+ activerecord (= 8.1.3)
+ activestorage (= 8.1.3)
+ activesupport (= 8.1.3)
bundler (>= 1.15.0)
- railties (= 8.1.2)
+ railties (= 8.1.3)
rails-dom-testing (2.3.0)
activesupport (>= 5.0.0)
minitest
@@ -267,9 +267,9 @@ GEM
rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
- railties (8.1.2)
- actionpack (= 8.1.2)
- activesupport (= 8.1.2)
+ railties (8.1.3)
+ actionpack (= 8.1.3)
+ activesupport (= 8.1.3)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
@@ -431,14 +431,14 @@ DEPENDENCIES
capybara-lockstep
debug
factory_bot_rails
- inertia_rails (~> 3.6)
+ inertia_rails (~> 3.19)
jbuilder
js-routes
kamal
letter_opener
propshaft
puma (>= 5.0)
- rails (~> 8.1.1)
+ rails (~> 8.1.3)
rspec-rails (~> 8.0)
rubocop-rails-omakase
selenium-webdriver
diff --git a/app/frontend/entrypoints/inertia.tsx b/app/frontend/entrypoints/inertia.tsx
index cc0d4f94..d3568b5b 100644
--- a/app/frontend/entrypoints/inertia.tsx
+++ b/app/frontend/entrypoints/inertia.tsx
@@ -1,7 +1,4 @@
-import type { ResolvedComponent } from "@inertiajs/react"
import { createInertiaApp } from "@inertiajs/react"
-import { StrictMode } from "react"
-import { createRoot } from "react-dom/client"
import { initializeTheme } from "@/hooks/use-appearance"
import PersistentLayout from "@/layouts/persistent-layout"
@@ -14,51 +11,17 @@ void createInertiaApp({
//
title: (title) => (title ? `${title} - ${appName}` : appName),
- resolve: (name) => {
- const pages = import.meta.glob<{ default: ResolvedComponent }>(
- "../pages/**/*.tsx",
- {
- eager: true,
- },
- )
- const page = pages[`../pages/${name}.tsx`]
- if (!page) {
- console.error(`Missing Inertia page component: '${name}.tsx'`)
- }
-
- // To use a default layout, import the Layout component
- // and use the following line.
- // see https://inertia-rails.dev/guide/pages#default-layouts
- //
- page.default.layout ??= [PersistentLayout]
+ pages: "../pages",
- return page
- },
+ layout: () => [PersistentLayout],
- setup({ el, App, props }) {
- // Uncomment the following to enable SSR hydration:
- // if (el.hasChildNodes()) {
- // hydrateRoot(el, )
- // return
- // }
- createRoot(el).render(
-
-
- ,
- )
- },
+ strictMode: true,
defaults: {
form: {
forceIndicesArrayFormatInFormData: false,
withAllErrors: true,
},
- future: {
- useScriptElementForInitialPage: true,
- useDataInertiaHeadAttribute: true,
- useDialogForErrorModal: true,
- preserveEqualProps: true,
- },
},
progress: {
@@ -80,4 +43,6 @@ void createInertiaApp({
})
// This will set light / dark mode on load...
-initializeTheme()
+if (typeof localStorage !== "undefined") {
+ initializeTheme()
+}
diff --git a/app/frontend/hooks/use-mobile.ts b/app/frontend/hooks/use-mobile.ts
index 81ac8b93..9b3b75bd 100644
--- a/app/frontend/hooks/use-mobile.ts
+++ b/app/frontend/hooks/use-mobile.ts
@@ -2,20 +2,27 @@ import { useSyncExternalStore } from "react"
const MOBILE_BREAKPOINT = 768
-const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
+const mql =
+ typeof window !== "undefined"
+ ? window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
+ : null
function mediaQueryListener(callback: (event: MediaQueryListEvent) => void) {
- mql.addEventListener("change", callback)
+ mql?.addEventListener("change", callback)
return () => {
- mql.removeEventListener("change", callback)
+ mql?.removeEventListener("change", callback)
}
}
function isSmallerThanBreakpoint() {
- return mql.matches
+ return mql!.matches
}
export function useIsMobile() {
- return useSyncExternalStore(mediaQueryListener, isSmallerThanBreakpoint)
+ return useSyncExternalStore(
+ mediaQueryListener,
+ isSmallerThanBreakpoint,
+ () => false,
+ )
}
diff --git a/app/frontend/routes/index.d.ts b/app/frontend/routes/index.d.ts
index a807e62e..e7e16251 100644
--- a/app/frontend/routes/index.d.ts
+++ b/app/frontend/routes/index.d.ts
@@ -1,5 +1,5 @@
/**
- * @file Generated by js-routes 2.3.6. Based on Rails 8.1.2 routes of ReactStarterKit::Application.
+ * @file Generated by js-routes 2.3.6. Based on Rails 8.1.3 routes of ReactStarterKit::Application.
* @version 743c630cafd479b5d9ad42a7803e8be1fdeb9448419ce21d215b267e2b0ae749
* @see https://github.com/railsware/js-routes
*/
diff --git a/app/frontend/routes/index.js b/app/frontend/routes/index.js
index a57264c6..ff2d7d2b 100644
--- a/app/frontend/routes/index.js
+++ b/app/frontend/routes/index.js
@@ -1,5 +1,5 @@
/**
- * @file Generated by js-routes 2.3.6. Based on Rails 8.1.2 routes of ReactStarterKit::Application.
+ * @file Generated by js-routes 2.3.6. Based on Rails 8.1.3 routes of ReactStarterKit::Application.
* @version 743c630cafd479b5d9ad42a7803e8be1fdeb9448419ce21d215b267e2b0ae749
* @see https://github.com/railsware/js-routes
*/
diff --git a/app/frontend/ssr/ssr.ts b/app/frontend/ssr/ssr.ts
deleted file mode 100644
index d735876a..00000000
--- a/app/frontend/ssr/ssr.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { createInertiaApp } from "@inertiajs/react"
-import createServer from "@inertiajs/react/server"
-import { type ReactNode, createElement } from "react"
-import ReactDOMServer from "react-dom/server"
-
-import PersistentLayout from "@/layouts/persistent-layout"
-
-// Temporary type definition, until @inertiajs/react provides one
-interface ResolvedComponent {
- default: ReactNode & { layout?: (page: ReactNode) => ReactNode }
-}
-
-const appName = import.meta.env.VITE_APP_NAME ?? "React Starter Kit"
-
-createServer((page) =>
- createInertiaApp({
- page,
- render: ReactDOMServer.renderToString,
- title: (title) => (title ? `${title} - ${appName}` : appName),
- resolve: (name) => {
- const pages = import.meta.glob("../pages/**/*.tsx", {
- eager: true,
- })
- const page = pages[`../pages/${name}.tsx`]
- if (!page) {
- console.error(`Missing Inertia page component: '${name}.tsx'`)
- }
-
- // To use a default layout, import the Layout component
- // and use the following line.
- // see https://inertia-rails.dev/guide/pages#default-layouts
- //
- page.default.layout ??= (page) =>
- createElement(PersistentLayout, null, page)
-
- return page
- },
-
- defaults: {
- form: {
- forceIndicesArrayFormatInFormData: false,
- withAllErrors: true,
- },
- future: {
- useScriptElementForInitialPage: true,
- useDataInertiaHeadAttribute: true,
- useDialogForErrorModal: true,
- preserveEqualProps: true,
- },
- },
-
- setup: ({ App, props }) => createElement(App, props),
- }),
-)
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 27bc43c6..2e209fb6 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -1,7 +1,7 @@
- <%= content_for(:title) || "React Starter Kit" %>
+ <%= content_for(:title) || "React Starter Kit" %>
diff --git a/config/initializers/inertia_rails.rb b/config/initializers/inertia_rails.rb
index a410efcc..5051aff3 100644
--- a/config/initializers/inertia_rails.rb
+++ b/config/initializers/inertia_rails.rb
@@ -5,6 +5,7 @@
config.encrypt_history = Rails.env.production?
config.always_include_errors_hash = true
config.use_script_element_for_initial_page = true
+ config.use_data_inertia_head_attribute = true
config.parent_controller = "::InertiaController"
end
diff --git a/config/vite.json b/config/vite.json
index 1ac6aa4f..64d1376f 100644
--- a/config/vite.json
+++ b/config/vite.json
@@ -1,6 +1,7 @@
{
"all": {
"sourceCodeDir": "app/frontend",
+ "ssrEntrypoint": "~/entrypoints/inertia.tsx",
"watchAdditionalPaths": []
},
"development": {
diff --git a/package-lock.json b/package-lock.json
index 7f2e61a3..9a8c26cc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,7 +6,8 @@
"": {
"dependencies": {
"@headlessui/react": "^2.2.0",
- "@inertiajs/react": "^2.1.2",
+ "@inertiajs/react": "^3.0",
+ "@inertiajs/vite": "^3.0.0",
"@radix-ui/react-avatar": "^1.1.10",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-collapsible": "^1.1.12",
@@ -82,7 +83,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/code-frame": "^7.29.0",
"@babel/generator": "^7.29.0",
@@ -1048,32 +1048,49 @@
}
},
"node_modules/@inertiajs/core": {
- "version": "2.3.14",
- "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-2.3.14.tgz",
- "integrity": "sha512-A6OU/Ye1ub2Dmn3eNJ2S0sEPKk5dWG/BUISAIDz/318N71/WuRXmEoqyaf9JJiYR7LTnJSO3UlugUPmFne+f1w==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-3.0.0.tgz",
+ "integrity": "sha512-LkdXfOXJGLIFQeqirO66lQ401ciO1f7yEiQV7ZWFbt9f2ElgilSkm6aOXLbPwHJF77h27jdtja0OJDS8+l7Svw==",
"license": "MIT",
"dependencies": {
- "@types/lodash-es": "^4.17.12",
- "axios": "^1.13.2",
- "laravel-precognition": "^1.0.1",
- "lodash-es": "^4.17.23",
- "qs": "^6.14.1"
+ "@jridgewell/trace-mapping": "^0.3.31",
+ "es-toolkit": "^1.33.0",
+ "laravel-precognition": "^2.0.0"
+ },
+ "peerDependencies": {
+ "axios": "^1.13.2"
+ },
+ "peerDependenciesMeta": {
+ "axios": {
+ "optional": true
+ }
}
},
"node_modules/@inertiajs/react": {
- "version": "2.3.14",
- "resolved": "https://registry.npmjs.org/@inertiajs/react/-/react-2.3.14.tgz",
- "integrity": "sha512-ZyJ/GP0xNMvoqhgWTcRkAqspu1L6Y8Wnk5cFkq1z5MAdZQG/DRq/x9MBZ2oDk7I5aHBWjGSCx1ELW6WAdH/lDw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/react/-/react-3.0.0.tgz",
+ "integrity": "sha512-3rpBSz/oKXAFj4sy5HhiwwfqTHWrz+iqa/iYdwaSLe9+zZlabyQnXLls1wYsHgqQntR06+E0yASCnYyNQP7+Tw==",
"license": "MIT",
"dependencies": {
- "@inertiajs/core": "2.3.14",
- "@types/lodash-es": "^4.17.12",
- "laravel-precognition": "^1.0.1",
- "lodash-es": "^4.17.23"
+ "@inertiajs/core": "3.0.0",
+ "es-toolkit": "^1.33.0",
+ "laravel-precognition": "^2.0.0"
},
"peerDependencies": {
- "react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "react-dom": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0"
+ }
+ },
+ "node_modules/@inertiajs/vite": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/vite/-/vite-3.0.0.tgz",
+ "integrity": "sha512-kF+7wkjVr+itJw4s8eNnJjeW6kMKyO3U2qunOP/s0WXyeP6naXJxhv9NQNOf5qHuXW2SgVDKTXuzC5qcfQXf6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@inertiajs/core": "3.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^7.0.0 || ^8.0.0"
}
},
"node_modules/@jridgewell/gen-mapping": {
@@ -3843,27 +3860,11 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@types/lodash": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz",
- "integrity": "sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==",
- "license": "MIT"
- },
- "node_modules/@types/lodash-es": {
- "version": "4.17.12",
- "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
- "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
- "license": "MIT",
- "dependencies": {
- "@types/lodash": "*"
- }
- },
"node_modules/@types/react": {
"version": "19.2.14",
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
"integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
"license": "MIT",
- "peer": true,
"dependencies": {
"csstype": "^3.2.2"
}
@@ -3873,7 +3874,6 @@
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
"license": "MIT",
- "peer": true,
"peerDependencies": {
"@types/react": "^19.2.0"
}
@@ -3923,7 +3923,6 @@
"integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.55.0",
"@typescript-eslint/types": "8.55.0",
@@ -4443,7 +4442,6 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -4683,12 +4681,6 @@
"node": ">= 0.4"
}
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "license": "MIT"
- },
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
@@ -4705,17 +4697,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/axios": {
- "version": "1.13.5",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
- "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.11",
- "form-data": "^4.0.5",
- "proxy-from-env": "^1.1.0"
- }
- },
"node_modules/babel-plugin-react-compiler": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz",
@@ -4785,7 +4766,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -4823,6 +4803,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -4836,6 +4817,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -4936,18 +4918,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -5108,15 +5078,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -5149,6 +5110,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -5251,6 +5213,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -5260,6 +5223,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -5297,6 +5261,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -5309,6 +5274,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -5351,6 +5317,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-toolkit": {
+ "version": "1.45.1",
+ "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz",
+ "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==",
+ "license": "MIT",
+ "workspaces": [
+ "docs",
+ "benchmarks"
+ ]
+ },
"node_modules/esbuild": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz",
@@ -5420,7 +5396,6 @@
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -5607,7 +5582,6 @@
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -5953,26 +5927,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
"node_modules/for-each": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
@@ -5989,22 +5943,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/form-data": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
- "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "hasown": "^2.0.2",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -6023,6 +5961,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6082,6 +6021,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -6115,6 +6055,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -6202,6 +6143,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -6272,6 +6214,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -6284,6 +6227,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@@ -6299,6 +6243,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -6923,13 +6868,20 @@
}
},
"node_modules/laravel-precognition": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-1.0.2.tgz",
- "integrity": "sha512-0H08JDdMWONrL/N314fvsO3FATJwGGlFKGkMF3nNmizVFJaWs17816iM+sX7Rp8d5hUjYCx6WLfsehSKfaTxjg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/laravel-precognition/-/laravel-precognition-2.0.0.tgz",
+ "integrity": "sha512-dmA4HGc9m+TsVNsJs9/XQBI8u6j7coilN+qKkBuhuXQzH3HypwS/c5dFQ4UqUGjBbcxIM7zdk91kM/SRZwIvWQ==",
"license": "MIT",
"dependencies": {
- "axios": "^1.4.0",
- "lodash-es": "^4.17.21"
+ "es-toolkit": "^1.32.0"
+ },
+ "peerDependencies": {
+ "axios": "^1.4.0"
+ },
+ "peerDependenciesMeta": {
+ "axios": {
+ "optional": true
+ }
}
},
"node_modules/levn": {
@@ -7211,12 +7163,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lodash-es": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz",
- "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==",
- "license": "MIT"
- },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -7268,6 +7214,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7310,27 +7257,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/mini-svg-data-uri": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
@@ -7440,6 +7366,7 @@
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7667,7 +7594,6 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -7742,7 +7668,6 @@
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -7844,12 +7769,6 @@
"react-is": "^16.13.1"
}
},
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "license": "MIT"
- },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -7860,21 +7779,6 @@
"node": ">=6"
}
},
- "node_modules/qs": {
- "version": "6.14.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
- "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.1.0"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -7901,7 +7805,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
"integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7911,7 +7814,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
"integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"scheduler": "^0.27.0"
},
@@ -8314,6 +8216,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -8333,6 +8236,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -8349,6 +8253,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -8367,6 +8272,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -8592,8 +8498,7 @@
"version": "4.1.18",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
"integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/tapable": {
"version": "2.3.0",
@@ -8788,7 +8693,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -8847,7 +8751,6 @@
"dev": true,
"hasInstallScript": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"napi-postinstall": "^0.3.0"
},
@@ -8979,7 +8882,6 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
@@ -9203,7 +9105,6 @@
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"dev": true,
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/package.json b/package.json
index 9416fcb4..24aaf17a 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,8 @@
},
"dependencies": {
"@headlessui/react": "^2.2.0",
- "@inertiajs/react": "^2.1.2",
+ "@inertiajs/react": "^3.0",
+ "@inertiajs/vite": "^3.0.0",
"@radix-ui/react-avatar": "^1.1.10",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-collapsible": "^1.1.12",
diff --git a/vite.config.ts b/vite.config.ts
index 8c8f9ab3..175b4705 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,13 +1,14 @@
+import inertia from "@inertiajs/vite"
import tailwindcss from "@tailwindcss/vite"
import react from "@vitejs/plugin-react"
import { defineConfig } from "vite"
import RubyPlugin from "vite-plugin-ruby"
-export default defineConfig({
- ssr: {
- // prebuilds ssr.js so we can drop node_modules from the resulting container
- noExternal: true,
- },
+export default defineConfig(({ command }) => ({
+ ssr:
+ command === "build"
+ ? { noExternal: true } // prebuild ssr.js so we can drop node_modules from the container
+ : undefined,
plugins: [
react({
babel: {
@@ -16,5 +17,10 @@ export default defineConfig({
}),
tailwindcss(),
RubyPlugin(),
+ inertia({
+ ssr: {
+ entry: "./entrypoints/inertia.tsx",
+ },
+ }),
],
-})
+}))